{"id":"CVE-2026-116590","aliases":["DEBIAN-CVE-2026-116590","EUVD-2026-110473","GHSA-xqrx-qh46-34m7","UBUNTU-CVE-2026-116590"],"status":"published","title":"snappy-java: JVM crash from unchecked ranges in Snappy.arrayCopy and SnappyOutputStream.rawWrite","description":"snappy-java is a Java port of the snappy, a fast C++ compresser/decompresser developed by Google. Prior to 1.1.10.9, Snappy.arrayCopy(Object src, int offset, int byteLength, Object dest, int destOffset) passes caller-supplied ranges to native memcpy without validating either array, allowing negative or oversized byteLength and offset values to read or write outside array bounds and crash the JVM. SnappyOutputStream.rawWrite and SnappyInputStream.rawRead, including their typed-array write and read methods, pass caller-controlled ranges through this primitive, and typed-array byte-size calculations can overflow int. This issue is fixed in version 1.1.10.9.","severity":{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-12","score":0.00407,"percentile":0.35489,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-129","CWE-787"],"published":"2026-10-26T21:48:15Z","modified":"2026-11-01T07:03:36Z","fixes":[{"ecosystem":"Maven","package":"org.xerial.snappy:snappy-java","fixed_in":["1.1.10.9"],"sources":["ghsa","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":"Debian:12","package":"snappy-java","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.1.10.5-1","1.1.10.5-2","1.1.10.7-1","1.1.10.8-1","1.1.8.3-1"]},{"source":"osv","ecosystem":"Debian:13","package":"snappy-java","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.1.10.7-1","1.1.10.8-1"]},{"source":"osv","ecosystem":"Debian:14","package":"snappy-java","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.1.10.7-1","1.1.10.8-1"]},{"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":"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/security/advisories/GHSA-xqrx-qh46-34m7","tags":["x_refsource_CONFIRM","advisory","web"]},{"url":"https://github.com/xerial/snappy-java/pull/741","tags":["x_refsource_MISC","fix","web","report"]},{"url":"https://github.com/xerial/snappy-java/commit/2d7ca71c087a98f1219fb2d51909f3891c3ce77b","tags":["x_refsource_MISC","fix","web","report"]},{"url":"https://github.com/xerial/snappy-java/releases/tag/v1.1.10.9","tags":["x_refsource_MISC","web","report"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-116590","tags":["advisory"]},{"url":"https://github.com/advisories/GHSA-xqrx-qh46-34m7"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/116xxx/CVE-2026-116590.json","tags":["advisory"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2026-116590","tags":["advisory"]},{"url":"https://github.com/xerial/snappy-java","tags":["package"]},{"url":"https://ubuntu.com/security/CVE-2026-116590","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-116590","tags":["report"]},{"url":"https://github.com/cveproject/cvelistv5/tree/main/cves/2026/116xxx/cve-2026-116590.json","tags":["report"]},{"url":"https://github.com/xerial/snappy-java/security/advisories/ghsa-xqrx-qh46-34m7","tags":["report"]},{"url":"https://nvd.nist.gov/vuln/detail/cve-2026-116590","tags":["report"]}],"sources":{"cve":[{"id":"CVE-2026-116590","title":"snappy-java: JVM crash from unchecked ranges in Snappy.arrayCopy and SnappyOutputStream.rawWrite","description":"snappy-java is a Java port of the snappy, a fast C++ compresser/decompresser developed by Google. Prior to 1.1.10.9, Snappy.arrayCopy(Object src, int offset, int byteLength, Object dest, int destOffset) passes caller-supplied ranges to native memcpy without validating either array, allowing negative or oversized byteLength and offset values to read or write outside array bounds and crash the JVM. SnappyOutputStream.rawWrite and SnappyInputStream.rawRead, including their typed-array write and read methods, pass caller-controlled ranges through this primitive, and typed-array byte-size calculations can overflow int. This issue is fixed in version 1.1.10.9.","status":"published","published":"2026-10-26T21:48:15.468Z","modified":"2026-10-30T15:12:40.754Z","cvss":[{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"medium","assessor":"cna"}],"cwes":["CWE-129","CWE-787"],"updated_at":"2026-11-02T14:20:03.827373Z"}],"euvd":[{"id":"EUVD-2026-110473","description":"snappy-java is a Java port of the snappy, a fast C++ compresser/decompresser developed by Google. Prior to 1.1.10.9, Snappy.arrayCopy(Object src, int offset, int byteLength, Object dest, int destOffset) passes caller-supplied ranges to native memcpy without validating either array, allowing negative or oversized byteLength and offset values to read or write outside array bounds and crash the JVM. SnappyOutputStream.rawWrite and SnappyInputStream.rawRead, including their typed-array write and read methods, pass caller-controlled ranges through this primitive, and typed-array byte-size calculations can overflow int. This issue is fixed in version 1.1.10.9.","status":"published","published":"2026-10-26T21:48:15Z","modified":"2026-10-30T15:12:40Z","cvss":[{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"medium"}],"updated_at":"2026-11-02T16:59:06.268136Z"}],"ghsa":[{"id":"GHSA-xqrx-qh46-34m7","title":"snappy-java: JVM crash from unchecked ranges in Snappy.arrayCopy and SnappyOutputStream.rawWrite","description":"### Impact\n`Snappy.arrayCopy(Object src, int offset, int byteLength, Object dest, int destOffset)` called a native `memcpy` without validating the ranges. A negative or oversized `byteLength` or offset read or wrote outside the arrays and crashed the JVM. `SnappyOutputStream.rawWrite` and `SnappyInputStream.rawRead`, and therefore the typed-array `write`/`read` methods, pass caller-supplied ranges to this method.\n\n### Patches\nFixed in 1.1.10.9 (#741). `Snappy.arrayCopy` checks both ranges before copying. The stream `read`/`write` methods validate offsets and lengths, and reject typed-array ranges whose byte size overflows `int`.\n\n### Workarounds\nValidate offsets and lengths before calling these methods.","status":"published","published":"2026-10-27T15:33:30Z","modified":"2026-10-27T15:33:30Z","cvss":[{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"medium"}],"cwes":["CWE-129","CWE-787"],"updated_at":"2026-11-02T14:41:37.912288Z"}],"nvd":[{"id":"CVE-2026-116590","description":"snappy-java is a Java port of the snappy, a fast C++ compresser/decompresser developed by Google. Prior to 1.1.10.9, Snappy.arrayCopy(Object src, int offset, int byteLength, Object dest, int destOffset) passes caller-supplied ranges to native memcpy without validating either array, allowing negative or oversized byteLength and offset values to read or write outside array bounds and crash the JVM. SnappyOutputStream.rawWrite and SnappyInputStream.rawRead, including their typed-array write and read methods, pass caller-controlled ranges through this primitive, and typed-array byte-size calculations can overflow int. This issue is fixed in version 1.1.10.9.","status":"published","published":"2026-10-26T22:16:55.637Z","modified":"2026-10-30T16:17:41.033Z","cvss":[{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"medium","assessor":"secondary"}],"cwes":["CWE-129","CWE-787"],"updated_at":"2026-11-02T14:13:03.746397Z"}],"osv":[{"id":"CVE-2026-116590","title":"snappy-java: JVM crash from unchecked ranges in Snappy.arrayCopy and SnappyOutputStream.rawWrite","description":"snappy-java is a Java port of the snappy, a fast C++ compresser/decompresser developed by Google. Prior to 1.1.10.9, Snappy.arrayCopy(Object src, int offset, int byteLength, Object dest, int destOffset) passes caller-supplied ranges to native memcpy without validating either array, allowing negative or oversized byteLength and offset values to read or write outside array bounds and crash the JVM. SnappyOutputStream.rawWrite and SnappyInputStream.rawRead, including their typed-array write and read methods, pass caller-controlled ranges through this primitive, and typed-array byte-size calculations can overflow int. This issue is fixed in version 1.1.10.9.","status":"published","published":"2026-10-26T21:48:15.468Z","modified":"2026-11-01T07:03:36.330351627Z","cvss":[{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"medium"}],"cwes":["CWE-129","CWE-787"],"updated_at":"2026-11-02T15:44:56.675758Z"},{"id":"DEBIAN-CVE-2026-116590","description":"snappy-java is a Java port of the snappy, a fast C++ compresser/decompresser developed by Google. Prior to 1.1.10.9, Snappy.arrayCopy(Object src, int offset, int byteLength, Object dest, int destOffset) passes caller-supplied ranges to native memcpy without validating either array, allowing negative or oversized byteLength and offset values to read or write outside array bounds and crash the JVM. SnappyOutputStream.rawWrite and SnappyInputStream.rawRead, including their typed-array write and read methods, pass caller-controlled ranges through this primitive, and typed-array byte-size calculations can overflow int. This issue is fixed in version 1.1.10.9.","status":"published","published":"2026-10-26T22:16:55.637Z","modified":"2026-10-31T09:47:24.670284554Z","cvss":[{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"medium"}],"updated_at":"2026-11-02T15:45:50.923612Z"},{"id":"GHSA-xqrx-qh46-34m7","title":"snappy-java: JVM crash from unchecked ranges in Snappy.arrayCopy and SnappyOutputStream.rawWrite","description":"### Impact\n`Snappy.arrayCopy(Object src, int offset, int byteLength, Object dest, int destOffset)` called a native `memcpy` without validating the ranges. A negative or oversized `byteLength` or offset read or wrote outside the arrays and crashed the JVM. `SnappyOutputStream.rawWrite` and `SnappyInputStream.rawRead`, and therefore the typed-array `write`/`read` methods, pass caller-supplied ranges to this method.\n\n### Patches\nFixed in 1.1.10.9 (#741). `Snappy.arrayCopy` checks both ranges before copying. The stream `read`/`write` methods validate offsets and lengths, and reject typed-array ranges whose byte size overflows `int`.\n\n### Workarounds\nValidate offsets and lengths before calling these methods.","status":"published","published":"2026-10-27T15:33:30Z","modified":"2026-10-27T15:47:25.122359555Z","cvss":[{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"medium"}],"cwes":["CWE-129","CWE-787"],"updated_at":"2026-11-02T15:47:00.198893Z"},{"id":"UBUNTU-CVE-2026-116590","description":"snappy-java is a Java port of the snappy, a fast C++ compresser/decompresser developed by Google. Prior to 1.1.10.9, Snappy.arrayCopy(Object src, int offset, int byteLength, Object dest, int destOffset) passes caller-supplied ranges to native memcpy without validating either array, allowing negative or oversized byteLength and offset values to read or write outside array bounds and crash the JVM. SnappyOutputStream.rawWrite and SnappyInputStream.rawRead, including their typed-array write and read methods, pass caller-controlled ranges through this primitive, and typed-array byte-size calculations can overflow int. This issue is fixed in version 1.1.10.9.","status":"published","published":"2026-10-26T22:16:00Z","modified":"2026-10-28T20:17:46.205183281Z","cvss":[{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"medium"},{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"medium"}],"updated_at":"2026-11-02T16:56:00.081948Z"}]}}
