{"id":"CVE-2023-34453","summary":"snappy-java's Integer Overflow vulnerability in shuffle leads to DoS","details":"snappy-java is a fast compressor/decompressor for Java. Due to unchecked multiplications, an integer overflow may occur in versions prior to 1.1.10.1, causing a fatal error.\n\nThe function `shuffle(int[] input)` in the file `BitShuffle.java` receives an array of integers and applies a bit shuffle on it. It does so by multiplying the length by 4 and passing it to the natively compiled shuffle function. Since the length is not tested, the multiplication by four can cause an integer overflow and become a smaller value than the true size, or even zero or negative. In the case of a negative value, a `java.lang.NegativeArraySizeException` exception will raise, which can crash the program. In a case of a value that is zero or too small, the code that afterwards references the shuffled array will assume a bigger size of the array, which might cause exceptions such as `java.lang.ArrayIndexOutOfBoundsException`.\n\nThe same issue exists also when using the `shuffle` functions that receive a double, float, long and short, each using a different multiplier that may cause the same issue.\n\nVersion 1.1.10.1 contains a patch for this vulnerability.","aliases":["GHSA-pqr6-cmr2-h8hf"],"modified":"2026-08-12T13:34:30.362262Z","published":"2023-06-15T16:12:34.119Z","related":["CGA-q677-q2fq-phhc"],"database_specific":{"cna_assigner":"GitHub_M","cwe_ids":["CWE-190"],"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2023/34xxx/CVE-2023-34453.json"},"references":[{"type":"WEB","url":"https://github.com/xerial/snappy-java/blob/05c39b2ca9b5b7b39611529cc302d3d796329611/src/main/java/org/xerial/snappy/BitShuffle.java#L107"},{"type":"WEB","url":"https://github.com/xerial/snappy-java/blob/master/src/main/java/org/xerial/snappy/BitShuffle.java"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2023/34xxx/CVE-2023-34453.json"},{"type":"ADVISORY","url":"https://github.com/xerial/snappy-java/security/advisories/GHSA-pqr6-cmr2-h8hf"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2023-34453"},{"type":"FIX","url":"https://github.com/xerial/snappy-java/commit/820e2e074c58748b41dbd547f4edba9e108ad905"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/xerial/snappy-java","events":[{"introduced":"0"},{"fixed":"737f3973ff392c351da2744820a23a0521c6cc77"},{"fixed":"820e2e074c58748b41dbd547f4edba9e108ad905"}],"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-34453.json","vanir_signatures_modified":"2026-08-12T13:34:30Z","vanir_signatures":[{"deprecated":false,"digest":{"function_hash":"177561473631095051829987984064042487662","length":234},"id":"CVE-2023-34453-404c2c4b","signature_type":"Function","signature_version":"v1","source":"https://github.com/xerial/snappy-java/commit/820e2e074c58748b41dbd547f4edba9e108ad905","target":{"file":"src/main/java/org/xerial/snappy/BitShuffle.java","function":"shuffle"}},{"signature_type":"Line","signature_version":"v1","source":"https://github.com/xerial/snappy-java/commit/820e2e074c58748b41dbd547f4edba9e108ad905","target":{"file":"src/test/java/org/xerial/snappy/SnappyTest.java"},"deprecated":false,"digest":{"line_hashes":["157670482671788058959041959431919702266","116196892212346485299141230180103565270"],"threshold":0.9},"id":"CVE-2023-34453-4857f245"},{"id":"CVE-2023-34453-592080d3","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}},{"digest":{"function_hash":"171809187672407931712044376067542517197","length":234},"id":"CVE-2023-34453-595abc50","signature_type":"Function","signature_version":"v1","source":"https://github.com/xerial/snappy-java/commit/820e2e074c58748b41dbd547f4edba9e108ad905","target":{"file":"src/main/java/org/xerial/snappy/BitShuffle.java","function":"shuffle"},"deprecated":false},{"id":"CVE-2023-34453-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,"digest":{"function_hash":"197601775410030034425030989621733157535","length":108}},{"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":"isTooLargeIntArrayInputLengthForBitShuffleShuffle"},"deprecated":false,"digest":{"function_hash":"204471860700078750244256335571282342429","length":112},"id":"CVE-2023-34453-63df3fd6"},{"source":"https://github.com/xerial/snappy-java/commit/820e2e074c58748b41dbd547f4edba9e108ad905","target":{"file":"src/main/java/org/xerial/snappy/BitShuffle.java"},"deprecated":false,"digest":{"line_hashes":["133012349558309386342411320595432563443","88698009575117928514409079702351055155","213610639285036217210384083242194452294","35387876059496076966575325124344538816","62506139677882352808017496319579124158","295995168725037188288344387527906367767","333101363827105546303640155995069940214","2763102254884388823838365693846474758","157091581696618153261906012819969182314","300802780807644061419759540454776873519","105481117836241271995121537186849358394","142567974556778071803543702852229569277","161171395981794637313769920611705462054","40031168307042717835421833769300727742","296705283021262374440838343959175590505","217901712929542114108666285406212249512","41987187707749522198240349598906727418","111359167331695784143311948139152788189","33499251590486698541574124520254107446","200364761083599882758122581077417705139"],"threshold":0.9},"id":"CVE-2023-34453-67f92e2a","signature_type":"Line","signature_version":"v1"},{"id":"CVE-2023-34453-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":{"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}},{"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":"isTooLargeLongArrayInputLengthForBitShuffleShuffle"},"deprecated":false,"digest":{"function_hash":"115694192477457560882035332182505764005","length":112},"id":"CVE-2023-34453-6cfba378"},{"id":"CVE-2023-34453-71c984d7","signature_type":"Function","signature_version":"v1","source":"https://github.com/xerial/snappy-java/commit/820e2e074c58748b41dbd547f4edba9e108ad905","target":{"file":"src/main/java/org/xerial/snappy/BitShuffle.java","function":"shuffle"},"deprecated":false,"digest":{"function_hash":"171809187672407931712044376067542517197","length":234}},{"deprecated":false,"digest":{"function_hash":"246469542818760304691132520761796565410","length":108},"id":"CVE-2023-34453-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"}},{"deprecated":false,"digest":{"function_hash":"246469542818760304691132520761796565410","length":108},"id":"CVE-2023-34453-7dfb9654","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":"isTooLargeLongArrayInputLength"}},{"source":"https://github.com/xerial/snappy-java/commit/820e2e074c58748b41dbd547f4edba9e108ad905","target":{"file":"src/main/java/org/xerial/snappy/SnappyErrorCode.java"},"deprecated":false,"digest":{"threshold":0.9,"line_hashes":["264230912764886394513561747674219342591","129908070448784450989256285056963411067","41794568851590498343547553415752046236","105012078687002310492922750076412535312"]},"id":"CVE-2023-34453-84386405","signature_type":"Line","signature_version":"v1"},{"deprecated":false,"digest":{"function_hash":"115694192477457560882035332182505764005","length":112},"id":"CVE-2023-34453-87382306","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":"isTooLargeDoubleArrayInputLengthForBitShuffleShuffle"}},{"target":{"file":"src/test/java/org/xerial/snappy/SnappyTest.java","function":"isTooLargeFloatArrayInputLengthForBitShuffleShuffle"},"deprecated":false,"digest":{"function_hash":"204471860700078750244256335571282342429","length":112},"id":"CVE-2023-34453-93cdd4ec","signature_type":"Function","signature_version":"v1","source":"https://github.com/xerial/snappy-java/commit/737f3973ff392c351da2744820a23a0521c6cc77"},{"digest":{"function_hash":"337653257328971385893220722169320912979","length":234},"id":"CVE-2023-34453-9f78f762","signature_type":"Function","signature_version":"v1","source":"https://github.com/xerial/snappy-java/commit/820e2e074c58748b41dbd547f4edba9e108ad905","target":{"file":"src/main/java/org/xerial/snappy/BitShuffle.java","function":"shuffle"},"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":{"function_hash":"305806183518270641982183783563680953015","length":108},"id":"CVE-2023-34453-adcce448","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":"isTooLargeCharArrayInputLength"},"deprecated":false,"digest":{"function_hash":"197601775410030034425030989621733157535","length":108},"id":"CVE-2023-34453-dc129d73","signature_type":"Function","signature_version":"v1"},{"digest":{"function_hash":"177561473631095051829987984064042487662","length":234},"id":"CVE-2023-34453-f75ab3c7","signature_type":"Function","signature_version":"v1","source":"https://github.com/xerial/snappy-java/commit/820e2e074c58748b41dbd547f4edba9e108ad905","target":{"file":"src/main/java/org/xerial/snappy/BitShuffle.java","function":"shuffle"},"deprecated":false},{"digest":{"function_hash":"194152565227331479732749147694718474634","length":112},"id":"CVE-2023-34453-f97fdafb","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":"isTooLargeShortArrayInputLengthForBitShuffleShuffle"},"deprecated":false}]}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H"}]}