{"answers":{"affected":"1 open source package ship an affected version, including ic-cipher.","exploited":"There is no known exploitation of RUSTSEC-2026-0337 in the wild and no public exploit code.","fix":"Upgrade ic-cipher to 0.2.20 or later.","what":"RUSTSEC-2026-0337 is a vulnerability in ic-cipher, published on 9 Oct 2026. An attacker can exploit it over the internet without logging in, with no action from the victim."},"fix_prompt":"Check this codebase for RUSTSEC-2026-0337 and fix it if it is affected.\n\nWhat it is: RUSTSEC-2026-0337 is a vulnerability in ic-cipher, published on 9 Oct 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.\nExploitation: There is no known exploitation of RUSTSEC-2026-0337 in the wild and no public exploit code.\n\nAffected packages and fixed versions:\n- ic-cipher (crates.io): affected from 0.2.5; fixed in 0.2.20\n\nTask:\n1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.\n2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.\n3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.\n4. Run the tests and summarise what changed and why.\n5. If nothing in the project is affected, say so and change nothing.\n\nReference: https://insights.sbomify.com/RUSTSEC-2026-0337/ (Markdown: https://insights.sbomify.com/RUSTSEC-2026-0337/index.md)","id":"RUSTSEC-2026-0337","markdown":"https://insights.sbomify.com/RUSTSEC-2026-0337/index.md","name":"RUSTSEC-2026-0337","record":{"aliases":["GHSA-xr22-8pqp-gwfh"],"analysis":{"component_type":"library","fix_type":"upgrade","impacts":["denial_of_service","security_bypass"],"network_reachable":"yes","non_default_config":false,"product_category":"Rust cryptographic library","requires_auth":"none","summary":"An integer overflow in Poly1305 causes panics or incorrect tags on large messages, enabling denial of service or authentication bypass in Rust applications.","user_interaction":"not_required","vuln_class":"integer_overflow"},"analysis_generated_by":"qwen3.8-flash-next","assigner":null,"cpe":[],"cvss":{"score":null,"severity":null,"source":null,"vector":null,"version":null},"cwes":[],"description":"`Poly1305` in `ic-cipher` absorbs messages of 64 bytes or more four blocks at\na time, summing four products before one reduction. From 0.2.5 to 0.2.19 the\nreduction kept its carries in 32-bit integers, which four summed products can\noverflow when the message's bytes are large.\n\nThis affects `Poly1305` and `ChaCha20Poly1305`, and everything built on them:\nthe TLS and QUIC ChaCha20-Poly1305 suites in `ic-rustls`, HPKE with that\ncipher in `ic-hpke`, and the re-exports in `ic-mac` and `ironcrypto`.\n\nWhat happens depends on how the crate was compiled:\n\n- With overflow checks on (any debug build, or a release profile with\n  `overflow-checks = true`) the multiplication panics, and under\n  `panic = \"abort\"` the process ends. The tag is computed over the ciphertext\n  before it is compared, so this happens before authentication and without\n  the key: anyone who can deliver a ChaCha20-Poly1305 ciphertext to be opened\n  can trigger it.\n- With overflow checks off (Cargo's default for release builds) the\n  arithmetic wraps and the tag is computed wrong on the affected messages.\n\nOrdinary data does not reach the defect. A message of `0xff` bytes does: in\none measurement against 0.2.19, 28 of 500 `ChaCha20Poly1305::open_detached`\ncalls on 1,024 bytes of `0xff` under random keys and nonces panicked in a\ndebug build. ChaCha20-Poly1305 derives a new Poly1305 key for every nonce, so\neach message is a fresh attempt.\n\nAES-GCM and AES-GCM-SIV are not affected, and neither are messages shorter\nthan 64 bytes.\n\nThe flaw was corrected in 0.2.20 by carrying in 64 bits.\n\nIt was found by running Project Wycheproof's ChaCha20-Poly1305 test vectors\nagainst the library.","ecosystems":["crates.io"],"exploits":{"exploitdb":null,"first_seen":null,"github_poc":null,"max_poc_stars":null,"metasploit":null,"nuclei":null,"refs":[],"tier":null},"has_fix":true,"headline":"Poly1305 panics or computes a wrong tag on attacker-chosen messages of 64 bytes or more","id":"RUSTSEC-2026-0337","indexable":true,"kev":null,"kind":"advisory","links":{"ecosystem":"crates.io","product":null,"products":[],"type":"integer_overflow","year":"2026"},"n_packages":1,"n_references":null,"packages":[{"ecosystem":"crates.io","fixed":["0.2.20"],"introduced":["0.2.5"],"last_affected":[],"package":"ic-cipher","purl":"pkg:cargo/ic-cipher","source":"RUSTSEC-2026-0337"}],"products":null,"published":"2026-10-09","related":[],"sources":[{"class":"open","licence":"CC0 1.0","name":"RustSec","prefix":"RUSTSEC"}],"ssvc":{"automatable":null,"exploitation":null,"technical_impact":null},"state":null,"updated":null,"vendors":null},"summary":"An integer overflow in Poly1305 causes panics or incorrect tags on large messages, enabling denial of service or authentication bypass in Rust applications.","url":"https://insights.sbomify.com/RUSTSEC-2026-0337/"}