{"schema_version":"1.7.2","id":"OESA-2026-2556","modified":"2026-06-05T15:48:33Z","published":"2026-06-05T15:48:33Z","upstream":["CVE-2026-9149","CVE-2026-9150"],"summary":"libsolv security update","details":"A free package dependency solver using a satisfiability algorithm. The library is based on two major, but independent, blocks:\r\n\r\nSecurity Fix(es):\n\nMANUALLY_VERIFIED_REPORT\npackage: libsolv-0.7.33-2.el10\n------\n[Security] Heap Buffer Overflow in repo_add_solv via Negative maxsize\nSummary:  Heap buffer overflow in `repo_add_solv` when parsing attacker-controlled `.solv` files; large encoded `maxsize`/`allsize` header values can decode to negative signed `Id` values, leading to undersized heap allocation while a subsequent `fread` uses `DATA_READ_CHUNK` (8192) bytes.\nRequirements to exploit: Ability to supply a crafted `.solv` file that a victim processes with libsolv (directly or via a consumer such as `dumpsolv` or an application that calls `repo_add_solv` on untrusted input).\nComponent affected: libsolv\nVersion affected: &lt;= 0.7.36\nVersion fixed (if any already): &gt;= TBD\nCVSS:  6.5 (Medium) — CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H\nImpact: Moderate (proposed). Per https://access.redhat.com/security/updates/classification this is memory corruption reachable via untrusted `.solv` ingestion and can at least cause a denial of service; it is not clearly &quot;High&quot; because an attacker typically needs the victim to process attacker-controlled input (configuration/user action) and reliable system compromise is not demonstrated here. This may be &quot;Low&quot; instead in product contexts where the vulnerable path is not used by default, is only reachable via uncommon workflows, or is effectively mitigated (e.g., only trusted solvdb is processed).\nEmbargo: no\nAcknowledgement: Aisle Research\nSteps to reproduce if available: See &quot;Reproduction steps&quot; below.\nMitigation if available: Prefer only consuming trusted `.solv` / solvdb inputs; avoid parsing untrusted `.solv` files until patched.\nOriginal report:\nHello libsolv maintainers,\nWe believe that we have discovered a potential security vulnerability in `repo_add_solv` when parsing attacker-controlled `.solv` files.\n### Vulnerability details\n`read_id` decodes into an unsigned value and returns `Id` (signed `int`), so large encoded values can become negative after conversion:\n```c\n/* src/repo_solv.c */\nstatic Id\nread_id(Repodata *data, Id max)\n{\nunsigned int x = 0;\n...\nreturn x;\n}\n```\nIn `repo_add_solv`, `maxsize` and `allsize` are read with `max=0` (no bounds check), then used for allocation and read length:\n```c\n/* src/repo_solv.c */\nmaxsize = read_id(&amp;data, 0);\nallsize = read_id(&amp;data, 0);\nmaxsize += 5;\nif (maxsize &gt; allsize)\nmaxsize = allsize;\nbuf = solv_calloc(maxsize + DATA_READ_CHUNK + 4, 1);\nl = maxsize;\nif (l &lt; DATA_READ_CHUNK)\nl = DATA_READ_CHUNK;\nif (l &gt; allsize)\nl = allsize;\nif (!l || fread(buf, l, 1, data.fp) != 1)\n```\nIf `maxsize` is negative, `solv_calloc(maxsize + 8192 + 4, 1)` can allocate a much smaller buffer, but `l` is then raised to `8192`, and `fread` writes `8192` bytes into that undersized heap buffer.\nMost relevant CWEs:\n- `CWE-122` (Heap-based Buffer Overflow): direct overflow sink.\n- `CWE-20` (Improper Input Validation): negative header fields are accepted.\n- `CWE-195` (Signed to Unsigned Conversion Error): signed `int` values flow into allocation sizing.\n### Reproduction steps\n1. Build libsolv with ASAN (or run a consumer binary that calls `repo_add_solv` on `.solv` input, e.g. `dumpsolv`).\n2. Run the parser on this file (`dumpsolv crafted.solv` or equivalent).\n### Crash:\n[root@c28a4ffb0823 workspace]# ./build-asan/tools/dumpsolv ./vuln_1_101_1_negative_maxsize.solv\n=================================================================\n==542==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x5020000000b1 at pc 0x00000041fb3c bp 0x7ffffffc5fd0 sp 0x7ffffffc5798\nWRITE of size 8192 at 0x5020000000b1 thread T0\n#0 0x00000041fb3b  (/workspace/build-asan/tools/dumpsolv+0x41fb3b) (BuildId: 3a1e71d74bd4d38c896ffc899393aedf86bf1cfc)\n#1 0x7fffff662147  (/workspace/build-asan/src/libsolv.so.1+0x57147) (BuildId: ebfff12c035b97f95b2d532a1d6d237ac31e770a)\n#2 0x0000004e45fe  (/workspace/build-asan/tools/dumpsolv+0x4e45fe) (BuildId: 3a1e71d74bd4d38c896ffc899393aedf86bf1cfc)\n#3 0x7fffff2f0447  (/lib64/libc.so.6+0x3447) (BuildId: dae6ae6929d69dca842288f5300af5a33d1bdcd7)\n#4 0x7fffff2f050a  (/lib64/libc.so.6+0x350a) (BuildId: (CVE-2026-9149)\n\nA flaw was found in libsolv. This stack-based buffer overflow vulnerability occurs in libsolv&apos;s Debian metadata parser when processing specially crafted Debian repository metadata. An attacker could exploit this by providing malicious SHA384 or SHA512 checksum tags, leading to memory corruption and a denial of service (DoS) in the affected system.(CVE-2026-9150)","affected":[{"package":{"ecosystem":"openEuler:24.03-LTS-SP3","name":"libsolv","purl":"pkg:rpm/openEuler/libsolv&distro=openEuler-24.03-LTS-SP3"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.7.24-5.oe2403sp3"}]}],"ecosystem_specific":{"aarch64":["libsolv-0.7.24-5.oe2403sp3.aarch64.rpm","libsolv-debuginfo-0.7.24-5.oe2403sp3.aarch64.rpm","libsolv-debugsource-0.7.24-5.oe2403sp3.aarch64.rpm","libsolv-demo-0.7.24-5.oe2403sp3.aarch64.rpm","libsolv-devel-0.7.24-5.oe2403sp3.aarch64.rpm","libsolv-tools-0.7.24-5.oe2403sp3.aarch64.rpm","perl-solv-0.7.24-5.oe2403sp3.aarch64.rpm","python3-solv-0.7.24-5.oe2403sp3.aarch64.rpm","ruby-solv-0.7.24-5.oe2403sp3.aarch64.rpm"],"noarch":["libsolv-help-0.7.24-5.oe2403sp3.noarch.rpm"],"src":["libsolv-0.7.24-5.oe2403sp3.src.rpm"],"x86_64":["libsolv-0.7.24-5.oe2403sp3.x86_64.rpm","libsolv-debuginfo-0.7.24-5.oe2403sp3.x86_64.rpm","libsolv-debugsource-0.7.24-5.oe2403sp3.x86_64.rpm","libsolv-demo-0.7.24-5.oe2403sp3.x86_64.rpm","libsolv-devel-0.7.24-5.oe2403sp3.x86_64.rpm","libsolv-tools-0.7.24-5.oe2403sp3.x86_64.rpm","perl-solv-0.7.24-5.oe2403sp3.x86_64.rpm","python3-solv-0.7.24-5.oe2403sp3.x86_64.rpm","ruby-solv-0.7.24-5.oe2403sp3.x86_64.rpm"]}}],"references":[{"type":"ADVISORY","url":"https://www.openeuler.org/zh/security/security-bulletins/detail/?id=openEuler-SA-2026-2556"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-9149"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-9150"}],"database_specific":{"severity":"Medium"}}
