{"id":"CVE-2023-34455","summary":"snappy-java's unchecked chunk length leads to DoS","details":"snappy-java is a fast compressor/decompressor for Java. Due to use of an unchecked chunk length, an unrecoverable fatal error can occur in versions prior to 1.1.10.1.\n\nThe code in the function hasNextChunk in the fileSnappyInputStream.java checks if a given stream has more chunks to read. It does that by attempting to read 4 bytes. If it wasn’t possible to read the 4 bytes, the function returns false. Otherwise, if 4 bytes were available, the code treats them as the length of the next chunk.\n\nIn the case that the `compressed` variable is null, a byte array is allocated with the size given by the input data. Since the code doesn’t test the legality of the `chunkSize` variable, it is possible to pass a negative number (such as 0xFFFFFFFF which is -1), which will cause the code to raise a `java.lang.NegativeArraySizeException` exception. A worse case would happen when passing a huge positive value (such as 0x7FFFFFFF), which would raise the fatal `java.lang.OutOfMemoryError` error.\n\nVersion 1.1.10.1 contains a patch for this issue.","aliases":["GHSA-qcwq-55hx-v3vh"],"modified":"2026-08-12T13:32:37.535252Z","published":"2023-06-15T17:15:00.311Z","related":["CGA-fv5g-vg7c-vj7w"],"database_specific":{"cna_assigner":"GitHub_M","cwe_ids":["CWE-770"],"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2023/34xxx/CVE-2023-34455.json"},"references":[{"type":"WEB","url":"https://github.com/xerial/snappy-java/blob/05c39b2ca9b5b7b39611529cc302d3d796329611/src/main/java/org/xerial/snappy/SnappyInputStream.java#L388"},{"type":"WEB","url":"https://github.com/xerial/snappy-java/blob/master/src/main/java/org/xerial/snappy/SnappyInputStream.java"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2023/34xxx/CVE-2023-34455.json"},{"type":"ADVISORY","url":"https://github.com/xerial/snappy-java/security/advisories/GHSA-qcwq-55hx-v3vh"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2023-34455"},{"type":"ADVISORY","url":"https://security.netapp.com/advisory/ntap-20230818-0009/"},{"type":"FIX","url":"https://github.com/xerial/snappy-java/commit/3bf67857fcf70d9eea56eed4af7c925671e8eaea"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/xerial/snappy-java","events":[{"introduced":"0"},{"fixed":"737f3973ff392c351da2744820a23a0521c6cc77"},{"fixed":"3bf67857fcf70d9eea56eed4af7c925671e8eaea"}],"database_specific":{"cpe":"cpe:2.3:a:xerial:snappy-java:*:*:*:*:*:*:*:*","extracted_events":[{"introduced":"0"},{"fixed":"1.1.10.1"}],"source":["CPE_RANGE","REFERENCES"]}}],"versions":["v1.1.10.0","v1.1.9.1","v1.1.9.0","1.1.8.4","1.1.8.3","1.1.8.2","1.1.8.1","1.1.8","1.1.7.8","1.1.7.7","1.1.7.6","1.1.7.5","1.1.7.4","1.1.7.3","1.1.7.2","1.1.7.1","1.1.7","1.1.4","1.1.4-M3","1.1.4-M2","1.1.4-M1","1.1.3-M2","1.1.3-M1","1.1.2.5","1.1.0","1.0.5-M4","1.1.0-M3","1.1.0-M1","snappy-java-1.0.4.1","snappy-java-1.0.4","snappy-java-1.0.3.3","snappy-java-1.0.3.2","snappy-java-1.0.3.1","snappy-java-1.0.3","snappy-java-1.0.3-rc4","snappy-java-1.0.3-rc3","snappy-java-1.0.3-rc2","snappy-java-1.0.3-rc1","snappy-java-1.0.1-rc4","snappy-java-1.0.1-rc3","snappy-java-1.0.1-rc2","snappy-java-1.0.1-rc1"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2023-34455.json","vanir_signatures_modified":"2026-08-12T13:32:37Z","vanir_signatures":[{"id":"CVE-2023-34455-107be95b","signature_type":"Function","signature_version":"v1","source":"https://github.com/xerial/snappy-java/commit/3bf67857fcf70d9eea56eed4af7c925671e8eaea","target":{"file":"src/main/java/org/xerial/snappy/SnappyInputStream.java","function":"hasNextChunk"},"deprecated":false,"digest":{"length":1414,"function_hash":"244026794097500615154634650354854703763"}},{"signature_type":"Function","signature_version":"v1","source":"https://github.com/xerial/snappy-java/commit/737f3973ff392c351da2744820a23a0521c6cc77","target":{"file":"src/test/java/org/xerial/snappy/SnappyTest.java","function":"isTooLargeFloatArrayInputLength"},"deprecated":false,"digest":{"function_hash":"305806183518270641982183783563680953015","length":108},"id":"CVE-2023-34455-592080d3"},{"digest":{"function_hash":"197601775410030034425030989621733157535","length":108},"id":"CVE-2023-34455-5a878089","signature_type":"Function","signature_version":"v1","source":"https://github.com/xerial/snappy-java/commit/737f3973ff392c351da2744820a23a0521c6cc77","target":{"file":"src/test/java/org/xerial/snappy/SnappyTest.java","function":"isTooLargeShortArrayInputLength"},"deprecated":false},{"deprecated":false,"digest":{"line_hashes":["11759047504712812508383605626335663359","140630794204187362098884038857956726760","110694122174495847682487204595549176705","209378172529807401014137670033614511824","111846052450074792690205110610891560013"],"threshold":0.9},"id":"CVE-2023-34455-6771500d","signature_type":"Line","signature_version":"v1","source":"https://github.com/xerial/snappy-java/commit/3bf67857fcf70d9eea56eed4af7c925671e8eaea","target":{"file":"src/main/java/org/xerial/snappy/SnappyInputStream.java"}},{"deprecated":false,"digest":{"line_hashes":["261490785213025088667069519084385851285","115180712698337214823336110482447980625","185907569882866238489617931437768938230","22766503012425561424347399626528426951","47398372620838087293680663528119740885","41439093073927938110424749635254633261","241695992710027770388212532187292688290","11246926499948285723754033511824957870","298679599759123174924233449535123759814","45439918193121619900213237061969853886","30339311328546172599591398205177837163","262126763193147493736605011807842713388","60419524623487266613818866035678234667","30814859348266383738399799573203192360","88935231798783490651157935921504198216","263308192564578953736411226870211669888","233941339245417874827491070275106647559","200258048960167040915388793802630733340","183187363726692826116225043875719019933","155944938025986211226064265962161225723","77558098731799044015715635386911215536","232903719964141847364936129034092060485","245807789503580552370905330195606271044","100252214819795669869488265287721696508","37669627717310838818627131730005140703","34001605554692726682637233224876866877","279338451731205710147633082127329874606","321547289523068309104143795617141525205","246719486730118627021880866087983066673","59120396845946570217300674942297236642","62715668921460923325684843237737517265","54094140783130811437880578714274541307","75132167340552452825613793757449311636","117477783293538305630240968745778268154","196355941320863816565027561776687257012","191315562440801440895118284696020563944","180896432979654649654648714006639275164","284569385832404136914000303131363925326","88882916771909372740860740870539163218","32272416715699875947325003550027131795","309227563581567467663266503621092250926","244751548516870372589955283081946241523","9003947851440586996324164925868312933","42565030544582528712807468368939449357","290903690178320527250333709068364564171","284917218618121208025823608059698997375","155850013146986049844481716476322442081"],"threshold":0.9},"id":"CVE-2023-34455-6ca58f9e","signature_type":"Line","signature_version":"v1","source":"https://github.com/xerial/snappy-java/commit/737f3973ff392c351da2744820a23a0521c6cc77","target":{"file":"src/test/java/org/xerial/snappy/SnappyTest.java"}},{"deprecated":false,"digest":{"function_hash":"246469542818760304691132520761796565410","length":108},"id":"CVE-2023-34455-7ccf9ef9","signature_type":"Function","signature_version":"v1","source":"https://github.com/xerial/snappy-java/commit/737f3973ff392c351da2744820a23a0521c6cc77","target":{"file":"src/test/java/org/xerial/snappy/SnappyTest.java","function":"isTooLargeDoubleArrayInputLength"}},{"signature_type":"Function","signature_version":"v1","source":"https://github.com/xerial/snappy-java/commit/737f3973ff392c351da2744820a23a0521c6cc77","target":{"function":"isTooLargeLongArrayInputLength","file":"src/test/java/org/xerial/snappy/SnappyTest.java"},"deprecated":false,"digest":{"length":108,"function_hash":"246469542818760304691132520761796565410"},"id":"CVE-2023-34455-7dfb9654"},{"digest":{"line_hashes":["266794176874267546349009822655452924699","221657460324295589297880384586735908364","256070159223810470248444219763910262624","266009674151970729244697737127660122433","331207470830422801069894979267999211182","290903690178320527250333709068364564171","284917218618121208025823608059698997375","155850013146986049844481716476322442081"],"threshold":0.9},"id":"CVE-2023-34455-804fcc9b","signature_type":"Line","signature_version":"v1","source":"https://github.com/xerial/snappy-java/commit/3bf67857fcf70d9eea56eed4af7c925671e8eaea","target":{"file":"src/test/java/org/xerial/snappy/SnappyTest.java"},"deprecated":false},{"source":"https://github.com/xerial/snappy-java/commit/737f3973ff392c351da2744820a23a0521c6cc77","target":{"file":"src/test/java/org/xerial/snappy/SnappyTest.java","function":"isTooLargeIntArrayInputLength"},"deprecated":false,"digest":{"length":108,"function_hash":"305806183518270641982183783563680953015"},"id":"CVE-2023-34455-adcce448","signature_type":"Function","signature_version":"v1"},{"target":{"file":"src/test/java/org/xerial/snappy/SnappyTest.java","function":"isTooLargeCharArrayInputLength"},"deprecated":false,"digest":{"function_hash":"197601775410030034425030989621733157535","length":108},"id":"CVE-2023-34455-dc129d73","signature_type":"Function","signature_version":"v1","source":"https://github.com/xerial/snappy-java/commit/737f3973ff392c351da2744820a23a0521c6cc77"}]}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"}]}