{"answers":{"affected":"1 open source package ship an affected version, including ruint.","exploited":"There is no known exploitation of RUSTSEC-2026-0220 in the wild and no public exploit code.","fix":"Upgrade ruint to 1.20.0 or later.","what":"RUSTSEC-2026-0220 is a vulnerability in ruint, published on 8 Jul 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-0220 and fix it if it is affected.\n\nWhat it is: RUSTSEC-2026-0220 is a vulnerability in ruint, published on 8 Jul 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-0220 in the wild and no public exploit code.\n\nAffected packages and fixed versions:\n- ruint (crates.io): affected from 0.0.0-0; fixed in 1.20.0\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-0220/ (Markdown: https://insights.sbomify.com/RUSTSEC-2026-0220/index.md)","id":"RUSTSEC-2026-0220","markdown":"https://insights.sbomify.com/RUSTSEC-2026-0220/index.md","name":"RUSTSEC-2026-0220","record":{"aliases":[],"analysis":{"component_type":"library","fix_type":"upgrade","impacts":["denial_of_service","other"],"network_reachable":"yes","non_default_config":false,"product_category":"Rust integer library","requires_auth":"none","summary":"Incorrect overflow flags and truncated shift amounts in Uint operations can cause infinite loops or incorrect results when processing untrusted input.","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":"`Uint::overflowing_shl`/`overflowing_shr` returned false-negative overflow\nflags. `overflowing_shl` missed bits shifted above `BITS` but within the top\nlimb (non-limb-aligned widths such as `U160`), and limbs wholly discarded by\nshifts \u003e= 64; `overflowing_shr` missed wholly discarded low limbs. Shifted\nvalues were correct; only the flag was wrong.\n\nThe wrong flag propagates: `checked_shl`/`checked_shr` return `Some` instead\nof `None`, `strict_*` fail to panic, and `saturating_*` return a wrapped\nvalue instead of saturating. The incorrect `checked_shl` result causes\n`to_base_be` (and string formatting) to loop forever on no-alloc builds for\nnon-limb-aligned widths — a denial of service if formatting is reachable\nfrom untrusted input.\n\nSeparately, `wrapping_shl`/`wrapping_shr` on 64/128/256-bit types truncated\nthe shift amount modulo 2^32, so shifts \u003e= 2^32 returned an incorrectly\nwrapped value instead of zero; on 32-bit targets the generic path also\ntruncated 64-bit shift amounts.\n\nCallers using checked or saturating shift semantics on untrusted shift\namounts may compute incorrect results.","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":"Uint shift operations: incorrect overflow flags and truncated shift amounts","id":"RUSTSEC-2026-0220","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":["1.20.0"],"introduced":["0.0.0-0"],"last_affected":[],"package":"ruint","purl":"pkg:cargo/ruint","source":"RUSTSEC-2026-0220"}],"products":null,"published":"2026-07-08","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":"Incorrect overflow flags and truncated shift amounts in Uint operations can cause infinite loops or incorrect results when processing untrusted input.","url":"https://insights.sbomify.com/RUSTSEC-2026-0220/"}