{"id":"CVE-2026-70378","aliases":["EUVD-2026-53198","GHSA-6gxc-w5rp-4g3p"],"status":"published","title":"imagecli - Negative carve Ratio Bypasses Bounds Check and Crashes Process via Reachable Panic","description":"imagecli's pipeline operation (Carve::apply in src/image_ops.rs) only asserts , never validating that the ratio is positive. A negative ratio (e.g. -5) causes the computed target width to saturate to 0 via Rust's defined float-to-uint cast, which is then passed to imageproc::seam_carving::shrink_width — a function that panics when given a width below 2, crashing the process.","severity":{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-10","score":0.00327,"percentile":0.26058,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":false},"cwes":["CWE-1284"],"published":"2026-08-05T06:58:50Z","modified":"2026-10-28T02:31:06Z","products":[{"vendor":"theotherphil","product":"imagecli"}],"references":[{"url":"https://github.com/theotherphil/imagecli/issues/67","tags":["third-party-advisory","exploit","advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-70378","tags":["advisory"]},{"url":"https://github.com/advisories/GHSA-6gxc-w5rp-4g3p"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/70xxx/CVE-2026-70378.json","tags":["advisory"]}],"sources":{"cve":[{"id":"CVE-2026-70378","title":"imagecli - Negative carve Ratio Bypasses Bounds Check and Crashes Process via Reachable Panic","description":"imagecli's pipeline operation (Carve::apply in src/image_ops.rs) only asserts , never validating that the ratio is positive. A negative ratio (e.g. -5) causes the computed target width to saturate to 0 via Rust's defined float-to-uint cast, which is then passed to imageproc::seam_carving::shrink_width — a function that panics when given a width below 2, crashing the process.","status":"published","published":"2026-08-05T06:58:50.621Z","modified":"2026-08-10T11:44:56.994Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high","assessor":"cna"}],"cwes":["CWE-1284"],"updated_at":"2026-11-02T13:35:22.169514Z"}],"euvd":[{"id":"EUVD-2026-53198","description":"imagecli's pipeline operation (Carve::apply in src/image_ops.rs) only asserts , never validating that the ratio is positive. A negative ratio (e.g. -5) causes the computed target width to saturate to 0 via Rust's defined float-to-uint cast, which is then passed to imageproc::seam_carving::shrink_width — a function that panics when given a width below 2, crashing the process.","status":"published","published":"2026-08-05T06:58:50Z","modified":"2026-08-10T11:44:56Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T18:02:06.086083Z"}],"ghsa":[{"id":"GHSA-6gxc-w5rp-4g3p","title":"imagecli's `carve \u003cratio\u003e` pipeline operation (Carve::apply() in src/image_ops.rs) only asserts ...","description":"imagecli's `carve \u003cratio\u003e` pipeline operation (Carve::apply() in src/image_ops.rs) only asserts `ratio \u003c= 1.0`, never validating that the ratio is positive. A negative ratio (e.g. -5) causes the computed target width to saturate to 0 via Rust's defined float-to-uint cast, which is then passed to imageproc::seam_carving::shrink_width — a function that panics when given a width below 2, crashing the process. This shares the same missing-input-validation root cause as the sibling `scale` finding in the same file but is an independently fixable, distinct code path.","status":"published","published":"2026-08-05T09:31:18Z","modified":"2026-08-05T09:31:26Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"cwes":["CWE-1284"],"updated_at":"2026-11-02T15:10:06.632203Z"}],"nvd":[{"id":"CVE-2026-70378","description":"imagecli's pipeline operation (Carve::apply in src/image_ops.rs) only asserts , never validating that the ratio is positive. A negative ratio (e.g. -5) causes the computed target width to saturate to 0 via Rust's defined float-to-uint cast, which is then passed to imageproc::seam_carving::shrink_width — a function that panics when given a width below 2, crashing the process.","status":"published","published":"2026-08-05T08:16:41.957Z","modified":"2026-10-24T16:10:00.153Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high","assessor":"secondary"}],"cwes":["CWE-1284"],"updated_at":"2026-11-02T14:12:35.031043Z"}],"osv":[{"id":"CVE-2026-70378","title":"imagecli - Negative carve Ratio Bypasses Bounds Check and Crashes Process via Reachable Panic","description":"imagecli's pipeline operation (Carve::apply in src/image_ops.rs) only asserts , never validating that the ratio is positive. A negative ratio (e.g. -5) causes the computed target width to saturate to 0 via Rust's defined float-to-uint cast, which is then passed to imageproc::seam_carving::shrink_width — a function that panics when given a width below 2, crashing the process.","status":"published","published":"2026-08-05T06:58:50.621Z","modified":"2026-10-28T02:31:06.674310246Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"cwes":["CWE-1284"],"updated_at":"2026-11-02T15:45:15.164658Z"}]}}
