{"id":"GHSA-9fjq-45qv-pcm7","aliases":["RUSTSEC-2025-0137"],"status":"published","title":"ruint affected by unsoundness of safe `reciprocal_mg10`","description":"The function `reciprocal_mg10` is marked as safe but can trigger undefined behavior (out-of-bounds access) because it relies on `debug_assert!` for safety checks instead of `assert!`.\n\nWhen compiled in release mode, the `debug_assert!` is optimized out, potentially allowing invalid inputs to cause memory corruption.","severity":{"version":"4.0","score":6.6,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:U","level":"medium","from":"ghsa"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-119"],"published":"2025-12-22T12:00:00Z","modified":"2025-12-28T09:55:04Z","fixes":[{"ecosystem":"crates.io","package":"ruint","fixed_in":["1.17.1"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"crates.io","package":"ruint","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"last_affected":"1.17.0"}]}]},{"source":"osv","ecosystem":"crates.io","package":"ruint","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"last_affected":"1.17.0"}]}]},{"source":"osv","ecosystem":"crates.io","package":"ruint","ranges":[{"type":"SEMVER","events":[{"introduced":"0.0.0-0"},{"fixed":"1.17.1"}]}]}],"references":[{"url":"https://github.com/recmo/uint/issues/550","tags":["web","report"]},{"url":"https://github.com/recmo/uint/blob/17c9b3e9062f74a39701e68dec358375595d33d7/src/algorithms/div/reciprocal.rs#L79-L87","tags":["web"]},{"url":"https://rustsec.org/advisories/RUSTSEC-2025-0137.html","tags":["web","advisory"]},{"url":"https://github.com/advisories/GHSA-9fjq-45qv-pcm7"},{"url":"https://github.com/recmo/uint","tags":["package"]},{"url":"https://crates.io/crates/ruint","tags":["package"]}],"sources":{"ghsa":[{"id":"GHSA-9fjq-45qv-pcm7","title":"ruint affected by unsoundness of safe `reciprocal_mg10`","description":"The function `reciprocal_mg10` is marked as safe but can trigger undefined behavior (out-of-bounds access) because it relies on `debug_assert!` for safety checks instead of `assert!`.\n\nWhen compiled in release mode, the `debug_assert!` is optimized out, potentially allowing invalid inputs to cause memory corruption.","status":"published","published":"2025-12-26T18:55:53Z","modified":"2025-12-26T18:55:55Z","cvss":[{"version":"4.0","score":6.6,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:U","level":"medium"}],"cwes":["CWE-119"],"updated_at":"2026-11-02T14:39:15.106458Z"}],"osv":[{"id":"GHSA-9fjq-45qv-pcm7","title":"ruint affected by unsoundness of safe `reciprocal_mg10`","description":"The function `reciprocal_mg10` is marked as safe but can trigger undefined behavior (out-of-bounds access) because it relies on `debug_assert!` for safety checks instead of `assert!`.\n\nWhen compiled in release mode, the `debug_assert!` is optimized out, potentially allowing invalid inputs to cause memory corruption.","status":"published","published":"2025-12-26T18:55:53Z","modified":"2025-12-27T05:41:16.165671Z","cvss":[{"version":"4.0","score":6.6,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:U","level":"medium"}],"cwes":["CWE-119"],"updated_at":"2026-11-02T15:46:43.524801Z"},{"id":"RUSTSEC-2025-0137","title":"Unsoundness of safe `reciprocal_mg10`","description":"The function `reciprocal_mg10` is marked as safe but can trigger undefined behavior (out-of-bounds access) because it relies on `debug_assert!` for safety checks instead of `assert!`.\n\nWhen compiled in release mode, the `debug_assert!` is optimized out, potentially allowing invalid inputs to cause memory corruption.","status":"published","published":"2025-12-22T12:00:00Z","modified":"2025-12-28T09:55:04.497626Z","updated_at":"2026-11-02T15:53:40.430679Z"}]}}
