{"id":"CVE-2026-93451","aliases":["EUVD-2026-82603","GHSA-gwq9-9ffj-mvrv","GHSA-wm36-87w8-wg22","ROOT-APP-MAVEN-CVE-2026-93451","UBUNTU-CVE-2026-93451"],"status":"published","title":"snappy-java through 1.1.10.8 Buffer Overflow via typed uncompress methods","description":"snappy-java through 1.1.10.8 contains a buffer overflow vulnerability in typed Snappy.uncompress*Array methods that allocate output arrays by dividing uncompressed length by element size but pass the undivided length to native code. Attackers controlling compressed input can cause misaligned length values to write past array bounds with attacker-controlled bytes, corrupting heap memory.","severity":{"version":"4.0","score":6.9,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:L/SC:N/SI:N/SA:N","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-09","score":0.00296,"percentile":0.22419,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-193","CWE-787"],"published":"2026-09-17T23:25:11Z","modified":"2026-11-02T09:15:03Z","fixes":[{"ecosystem":"Maven","package":"org.xerial.snappy:snappy-java","fixed_in":["1.1.10.9"],"sources":["ghsa","osv"]},{"ecosystem":"Root:Maven","package":"org.xerial.snappy:snappy-java","fixed_in":["1.1.10.5-aikido.1","1.1.10.8-aikido.1"],"sources":["osv"]},{"ecosystem":"Root:Maven","package":"io.root.org.xerial.snappy:snappy-java","fixed_in":["1.1.10.5-root.io.1","1.1.10.8-root.io.1"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"Maven","package":"org.xerial.snappy:snappy-java","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"last_affected":"1.1.10.8"},{"fixed":"1.1.10.9"}]}]},{"source":"osv","ecosystem":"Maven","package":"org.xerial.snappy:snappy-java","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.1.10.9"}]}],"versions":["1.0.1-rc1","1.0.1-rc2","1.0.1-rc3","1.0.1-rc4","1.0.3","1.0.3-rc1","1.0.3-rc2","1.0.3-rc3","1.0.3-rc4","1.0.3.1","1.0.3.2","1.0.3.3","1.0.4","1.0.4.1","1.0.5","1.0.5-M1","1.0.5-M2","1.0.5-M3","1.0.5-M4","1.0.5.1","1.0.5.2","1.0.5.3","1.0.5.4","1.1.0","1.1.0-M1","1.1.0-M2","1.1.0-M3","1.1.0-M4","1.1.0.1","1.1.1","1.1.1-M1","1.1.1-M2","1.1.1-M3","1.1.1-M4","1.1.1.1","1.1.1.2","1.1.1.3","1.1.1.4","1.1.1.5","1.1.1.6","1.1.1.7","1.1.10.0","1.1.10.1","1.1.10.2","1.1.10.3","1.1.10.4","1.1.10.5","1.1.10.6","1.1.10.7","1.1.10.8","1.1.2","1.1.2-M1","1.1.2-RC1","1.1.2-RC2","1.1.2-RC3","1.1.2.1","1.1.2.2","1.1.2.3","1.1.2.4","1.1.2.5","1.1.2.6","1.1.3-M1","1.1.3-M2","1.1.4","1.1.4-M1","1.1.4-M2","1.1.4-M3","1.1.7","1.1.7.1","1.1.7.2","1.1.7.3","1.1.7.4","1.1.7.5","1.1.7.6","1.1.7.7","1.1.7.8","1.1.8","1.1.8.1","1.1.8.2","1.1.8.3","1.1.8.4","1.1.9.0","1.1.9.1"]},{"source":"osv","ecosystem":"Root:Maven","package":"org.xerial.snappy:snappy-java","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.1.10.5-aikido.1"},{"fixed":"1.1.10.8-aikido.1"}]}]},{"source":"osv","ecosystem":"Root:Maven","package":"io.root.org.xerial.snappy:snappy-java","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.1.10.5-root.io.1"},{"fixed":"1.1.10.8-root.io.1"}]}]},{"source":"osv","ecosystem":"Ubuntu:14.04:LTS","package":"snappy-java","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.0.4.1~dfsg-1"]},{"source":"osv","ecosystem":"Ubuntu:16.04:LTS","package":"snappy-java","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.1.1.7-2","1.1.2-1","1.1.2.1-2"]},{"source":"osv","ecosystem":"Ubuntu:18.04:LTS","package":"snappy-java","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.1.4-1"]},{"source":"osv","ecosystem":"Ubuntu:20.04:LTS","package":"snappy-java","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.1.7.2-1","1.1.7.3-1","1.1.7.3-1build1"]},{"source":"osv","ecosystem":"Ubuntu:22.04:LTS","package":"snappy-java","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.1.8.3-1"]},{"source":"osv","ecosystem":"Ubuntu:24.04:LTS","package":"snappy-java","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.1.8.3-1","1.1.10.5-1","1.1.10.5-1build1"]},{"source":"osv","ecosystem":"Ubuntu:26.10","package":"snappy-java","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.1.10.8-1"]},{"source":"osv","ecosystem":"Ubuntu:26.04:LTS","package":"snappy-java","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.1.10.7-1","1.1.10.8-1"]}],"products":[{"vendor":"xerial","product":"snappy-java"}],"references":[{"url":"https://github.com/xerial/snappy-java/issues/729","tags":["issue-tracking","report","web"]},{"url":"https://github.com/xerial/snappy-java/blob/v1.1.10.8/src/main/java/org/xerial/snappy/Snappy.java#L802","tags":["technical-description","article","web","report"]},{"url":"https://github.com/xerial/snappy-java","tags":["product","package","web","report"]},{"url":"https://www.vulncheck.com/advisories/snappy-java-through-1.1.10.8-buffer-overflow-via-typed-uncompress-methods","tags":["third-party-advisory","advisory","web","report"]},{"url":"https://github.com/xerial/snappy-java/security/advisories/GHSA-gwq9-9ffj-mvrv","tags":["web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-93451","tags":["advisory"]},{"url":"https://github.com/xerial/snappy-java/pull/739","tags":["web"]},{"url":"https://github.com/xerial/snappy-java/commit/943c6043a292568575e8347af4507d015e802c75","tags":["web"]},{"url":"https://github.com/xerial/snappy-java/releases/tag/v1.1.10.9","tags":["web"]},{"url":"https://github.com/advisories/GHSA-gwq9-9ffj-mvrv"},{"url":"https://github.com/advisories/GHSA-wm36-87w8-wg22"},{"url":"https://repo1.maven.org/maven2/org/xerial/snappy-java/","tags":["web"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/93xxx/CVE-2026-93451.json","tags":["advisory"]},{"url":"https://ubuntu.com/security/CVE-2026-93451","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-93451","tags":["report"]}],"sources":{"cve":[{"id":"CVE-2026-93451","title":"snappy-java through 1.1.10.8 Buffer Overflow via typed uncompress methods","description":"snappy-java through 1.1.10.8 contains a buffer overflow vulnerability in typed Snappy.uncompress*Array methods that allocate output arrays by dividing uncompressed length by element size but pass the undivided length to native code. Attackers controlling compressed input can cause misaligned length values to write past array bounds with attacker-controlled bytes, corrupting heap memory.","status":"published","published":"2026-09-17T23:25:11.585Z","modified":"2026-10-08T15:51:52.357Z","cvss":[{"version":"4.0","score":6.9,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:L/SC:N/SI:N/SA:N","level":"medium","assessor":"cna"},{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:L","level":"medium","assessor":"cna"}],"cwes":["CWE-787"],"updated_at":"2026-11-02T14:19:54.122945Z"}],"euvd":[{"id":"EUVD-2026-82603","description":"snappy-java through 1.1.10.8 contains a buffer overflow vulnerability in typed Snappy.uncompress*Array methods that allocate output arrays by dividing uncompressed length by element size but pass the undivided length to native code. Attackers controlling compressed input can cause misaligned length values to write past array bounds with attacker-controlled bytes, corrupting heap memory.","status":"published","published":"2026-09-17T23:25:11Z","modified":"2026-10-08T15:51:52Z","cvss":[{"version":"4.0","score":6.9,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:L/SC:N/SI:N/SA:N","level":"medium"}],"updated_at":"2026-11-02T17:27:28.108203Z"}],"ghsa":[{"id":"GHSA-gwq9-9ffj-mvrv","title":"snappy-java: Heap buffer overflow in Snappy.uncompress*Array typed-array methods","description":"### Impact\n`Snappy.uncompressCharArray`, `uncompressShortArray`, `uncompressIntArray`, `uncompressLongArray`, `uncompressFloatArray` and `uncompressDoubleArray` sized the result array by dividing the declared uncompressed byte length by the element size, but native code wrote the full byte length. If the declared length is not a multiple of the element size, up to 7 bytes are written past the end of the Java array, corrupting the heap.\n\n### Patches\nFixed in 1.1.10.9 ([#739](https://github.com/xerial/snappy-java/pull/739)). These methods now reject uncompressed lengths that are not a multiple of the element size with `SnappyIOException`.\n\n### Workarounds\nCheck that `Snappy.uncompressedLength(input)` is a multiple of the element size before calling these methods.","status":"published","published":"2026-10-27T15:33:42Z","modified":"2026-10-27T15:33:43Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"cwes":["CWE-193","CWE-787"],"updated_at":"2026-11-02T14:41:37.912288Z"},{"id":"GHSA-wm36-87w8-wg22","title":"Duplicate Advisory: snappy-java: Heap buffer overflow in Snappy.uncompress*Array typed-array methods","description":"## Duplicate Advisory\n\nThis advisory has been withdrawn because it is a duplicate of GHSA-gwq9-9ffj-mvrv This link is maintained to preserve external references.\n\n## Original Description\nsnappy-java through 1.1.10.8 contains a buffer overflow vulnerability in typed Snappy.uncompress*Array methods that allocate output arrays by dividing uncompressed length by element size but pass the undivided length to native code. Attackers controlling compressed input can cause misaligned length values to write past array bounds with attacker-controlled bytes, corrupting heap memory.","status":"withdrawn","published":"2026-09-18T00:31:11Z","modified":"2026-10-27T15:33:38Z","cvss":[{"version":"4.0","score":6.9,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:L/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","level":"medium"},{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:L","level":"medium"}],"cwes":["CWE-787"],"updated_at":"2026-11-02T14:41:37.912288Z"}],"nvd":[{"id":"CVE-2026-93451","description":"snappy-java through 1.1.10.8 contains a buffer overflow vulnerability in typed Snappy.uncompress*Array methods that allocate output arrays by dividing uncompressed length by element size but pass the undivided length to native code. Attackers controlling compressed input can cause misaligned length values to write past array bounds with attacker-controlled bytes, corrupting heap memory.","status":"published","published":"2026-09-18T00:17:49.38Z","modified":"2026-10-08T16:18:00.33Z","cvss":[{"version":"4.0","score":6.9,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:L/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","level":"medium","assessor":"secondary"},{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:L","level":"medium","assessor":"secondary"}],"cwes":["CWE-787"],"updated_at":"2026-11-02T14:12:49.70655Z"}],"osv":[{"id":"CVE-2026-93451","title":"snappy-java through 1.1.10.8 Buffer Overflow via typed uncompress methods","description":"snappy-java through 1.1.10.8 contains a buffer overflow vulnerability in typed Snappy.uncompress*Array methods that allocate output arrays by dividing uncompressed length by element size but pass the undivided length to native code. Attackers controlling compressed input can cause misaligned length values to write past array bounds with attacker-controlled bytes, corrupting heap memory.","status":"published","published":"2026-09-17T23:25:11.585Z","modified":"2026-10-28T02:30:52.938833614Z","cvss":[{"version":"4.0","score":6.9,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:L/SC:N/SI:N/SA:N","level":"medium"}],"cwes":["CWE-787"],"updated_at":"2026-11-02T15:45:20.931171Z"},{"id":"GHSA-gwq9-9ffj-mvrv","title":"snappy-java: Heap buffer overflow in Snappy.uncompress*Array typed-array methods","description":"### Impact\n`Snappy.uncompressCharArray`, `uncompressShortArray`, `uncompressIntArray`, `uncompressLongArray`, `uncompressFloatArray` and `uncompressDoubleArray` sized the result array by dividing the declared uncompressed byte length by the element size, but native code wrote the full byte length. If the declared length is not a multiple of the element size, up to 7 bytes are written past the end of the Java array, corrupting the heap.\n\n### Patches\nFixed in 1.1.10.9 ([#739](https://github.com/xerial/snappy-java/pull/739)). These methods now reject uncompressed lengths that are not a multiple of the element size with `SnappyIOException`.\n\n### Workarounds\nCheck that `Snappy.uncompressedLength(input)` is a multiple of the element size before calling these methods.","status":"published","published":"2026-10-27T15:33:42Z","modified":"2026-10-27T15:47:24.498155855Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"cwes":["CWE-193","CWE-787"],"updated_at":"2026-11-02T15:46:48.191583Z"},{"id":"GHSA-wm36-87w8-wg22","title":"Duplicate Advisory: snappy-java: Heap buffer overflow in Snappy.uncompress*Array typed-array methods","description":"## Duplicate Advisory\n\nThis advisory has been withdrawn because it is a duplicate of GHSA-gwq9-9ffj-mvrv This link is maintained to preserve external references.\n\n## Original Description\nsnappy-java through 1.1.10.8 contains a buffer overflow vulnerability in typed Snappy.uncompress*Array methods that allocate output arrays by dividing uncompressed length by element size but pass the undivided length to native code. Attackers controlling compressed input can cause misaligned length values to write past array bounds with attacker-controlled bytes, corrupting heap memory.","status":"withdrawn","published":"2026-09-18T00:31:11Z","modified":"2026-10-27T15:47:08.452022574Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:L","level":"medium"},{"version":"4.0","score":6.9,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:L/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","level":"medium"}],"cwes":["CWE-787"],"updated_at":"2026-11-02T15:46:58.767335Z"},{"id":"UBUNTU-CVE-2026-93451","description":"snappy-java through 1.1.10.8 contains a buffer overflow vulnerability in typed Snappy.uncompress*Array methods that allocate output arrays by dividing uncompressed length by element size but pass the undivided length to native code. Attackers controlling compressed input can cause misaligned length values to write past array bounds with attacker-controlled bytes, corrupting heap memory.","status":"published","published":"2026-09-18T00:17:00Z","modified":"2026-10-17T13:01:18.146698702Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:L","level":"medium"},{"version":"4.0","score":6.9,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:L/SC:N/SI:N/SA:N","level":"medium"}],"updated_at":"2026-11-02T16:57:44.071534Z"},{"id":"ROOT-APP-MAVEN-CVE-2026-93451","title":"CVE-2026-93451 in org.xerial.snappy:snappy-java - Patched by Root","description":"Root has patched CVE-2026-93451 in the org.xerial.snappy:snappy-java package for Root:Maven. Multiple fixed versions available.","status":"published","published":"2026-11-02T08:17:47Z","modified":"2026-11-02T09:15:03.241345899Z","updated_at":"2026-11-02T15:53:27.066589Z"}]}}
