{"schema":"threatline.record/2","record":{"id":"CVE-2026-106452","aliases":["GHSA-4v53-57pg-c464"],"summary":"yawkat LZ4 Java: LZ4BlockInputStream allocates an unvalidated compressed length from the stream header","details":"### Summary\n\n`LZ4BlockInputStream` grows its compressed-input buffer to the attacker-controlled `compressedLen` value from the legacy `LZ4Block` stream header before reading any payload bytes. A header-only input can therefore trigger a near-2 GiB allocation and exhaust the JVM heap.\n\n### Details\n\nIn `net.jpountz.lz4.LZ4BlockInputStream`, `refill()` validates that `compressedLen` is nonnegative but does not cap it before allocation:\n\n```java\ncase COMPRESSION_METHOD_LZ4:\n  if (compressedBuffer.length < compressedLen) {\n    compressedBuffer = new byte[Math.max(compressedLen, compressedBuffer.length * 3 / 2)];\n  }\n  readFully(compressedBuffer, compressedLen);\n```\n\nThe paired `LZ4BlockOutputStream` never emits such a block. If compression is not smaller than the original block, it writes the block as RAW:\n\n```java\nif (compressedLength >= o) {\n  compressMethod = COMPRESSION_METHOD_RAW;\n  compressedLength = o;\n} else {\n  compressMethod = COMPRESSION_METHOD_LZ4;\n}\n```\n\nExisting readers generally accept noncanonical LZ4-method blocks where `compressedLen >= originalLen`, but no canonical writer found produces them.\n\n### Impact\n\nApplications that pass attacker-controlled legacy `LZ4Block` streams to `LZ4BlockInputStream` can suffer heap exhaustion from a header-only input. The impact is availability-only and requires no valid compressed payload.\n\n### Patch\n\nAs of lz4-java 1.11.2, lz4-java rejects lz4 blocks where the compressed length is larger than uncompressed. Readers would generally emit these as raw blocks instead. You can use the new `acceptOversizedBlocks` flag to restore the old behavior, but this reintroduces the DoS vector.","categories":["Libraries & packages"],"product":"at.yawk.lz4:lz4-java","vendor":"yawkat","ecosystem":"maven","affected_ranges":[{"source":"GitHub Advisory Database","source_url":"https://github.com/advisories/GHSA-4v53-57pg-c464","source_modified_at":"2026-10-07T16:17:51Z","fetched_at":"2026-10-23T18:42:43.628194Z","package":{"ecosystem":"maven","name":"at.yawk.lz4:lz4-java"},"range":"<= 1.11.1"},{"source":"GitHub Advisory Database","source_url":"https://github.com/advisories/GHSA-4v53-57pg-c464","source_modified_at":"2026-10-07T16:17:51Z","fetched_at":"2026-10-23T18:42:43.628194Z","package":{"ecosystem":"maven","name":"org.lz4:lz4-java"},"range":"<= 1.8.1"},{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2026-106452","source_modified_at":"2026-10-07T10:45:18.010Z","fetched_at":"2026-10-23T18:45:31.882637Z","product":"lz4-java","vendor":"yawkat","versions":[{"version":"< 1.11.2","status":"affected"}],"defaultStatus":null},{"source":"OSV","source_url":"https://osv.dev/vulnerability/GHSA-4v53-57pg-c464","source_modified_at":"2026-10-07T16:30:04.845963758Z","fetched_at":"2026-10-23T18:45:31.882637Z","package":{"name":"at.yawk.lz4:lz4-java","ecosystem":"Maven","purl":"pkg:maven/at.yawk.lz4/lz4-java"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.11.2"}]}],"versions":["1.10.0","1.10.1","1.10.2","1.10.3","1.10.4","1.11.0","1.11.1","1.8.1","1.9.0"]},{"source":"OSV","source_url":"https://osv.dev/vulnerability/GHSA-4v53-57pg-c464","source_modified_at":"2026-10-07T16:30:04.845963758Z","fetched_at":"2026-10-23T18:45:31.882637Z","package":{"name":"org.lz4:lz4-java","ecosystem":"Maven","purl":"pkg:maven/org.lz4/lz4-java"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"last_affected":"1.8.1"}]}],"versions":["1.4","1.4.0","1.4.1","1.5.0","1.5.1","1.6.0","1.7.0","1.7.1","1.8.0","1.8.1"]}],"fixed_versions":[{"source":"GitHub Advisory Database","source_url":"https://github.com/advisories/GHSA-4v53-57pg-c464","source_modified_at":"2026-10-07T16:17:51Z","fetched_at":"2026-10-23T18:42:43.628194Z","package":{"ecosystem":"maven","name":"at.yawk.lz4:lz4-java"},"version":"1.11.2"},{"source":"OSV","source_url":"https://osv.dev/vulnerability/GHSA-4v53-57pg-c464","source_modified_at":"2026-10-07T16:30:04.845963758Z","fetched_at":"2026-10-23T18:45:31.882637Z","package":{"name":"at.yawk.lz4:lz4-java","ecosystem":"Maven","purl":"pkg:maven/at.yawk.lz4/lz4-java"},"version":"1.11.2"}],"cvss":5.3,"severity":"Medium","kev":{"listed":false},"epss":{"probability":0.00371,"percentile":0.29883,"score_date":"2026-10-23"},"published_at":"2026-10-06T19:52:37.818Z","modified_at":"2026-10-07T16:30:04.845963758Z","provenance":[{"source":"GitHub Advisory Database","url":"https://github.com/advisories/GHSA-4v53-57pg-c464","fetched_at":"2026-10-23T18:42:43.628194Z","source_modified_at":"2026-10-07T16:17:51Z"},{"source":"CVE List","url":"https://www.cve.org/CVERecord?id=CVE-2026-106452","fetched_at":"2026-10-23T18:45:31.882637Z","source_modified_at":"2026-10-07T10:45:18.010Z"},{"source":"OSV","url":"https://osv.dev/vulnerability/GHSA-4v53-57pg-c464","fetched_at":"2026-10-23T18:45:31.882637Z","source_modified_at":"2026-10-07T16:30:04.845963758Z"},{"source":"EPSS","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-106452","fetched_at":"2026-10-23T18:42:43.628194Z","source_modified_at":"2026-10-23"}],"sources":["GitHub Advisory Database","CVE List","OSV","EPSS"],"references":[{"source":"CVE List","url":"https://github.com/yawkat/lz4-java/security/advisories/GHSA-4v53-57pg-c464","tags":["x_refsource_CONFIRM"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-106452","source":"GitHub Advisory Database"},{"source":"CVE List","url":"https://github.com/yawkat/lz4-java/commit/bb83dd16163cdb71231af06b0a5651881148a634","tags":["x_refsource_MISC"]},{"source":"CVE List","url":"https://github.com/yawkat/lz4-java/releases/tag/v1.11.2","tags":["x_refsource_MISC"]},{"url":"https://github.com/advisories/GHSA-4v53-57pg-c464","source":"GitHub Advisory Database"}],"locations":[],"motoko_assessment":{"status":"requires_architecture_review","automatic_remediation":false},"cve_state":"PUBLISHED","ssvc":{"exploitation":"none","automatable":"yes","technical_impact":"partial","assessed_at":"2026-10-07T10:45:08.750360Z"},"classification":{"method":"product-first software-layer rules","rules_version":"2.1","matched_on":"ecosystem","confidence":"heuristic","reviewed":false},"change_timestamp":"2026-10-07T16:30:04.845963758Z","content_hash":"3cec48fe93089dd955c635953fe42543e74e8e8a84a8f866a1cf1fd85fb29bdb"}}
