{"id":"GHSA-rcff-5x58-7w2p","aliases":["RUSTSEC-2026-0456"],"status":"published","title":"Panic on an HEVC tile layout that does not match the active SPS","description":"An HEVC picture parameter set (PPS) stores explicit tile column widths and row\nheights computed against the sequence parameter set (SPS) active when it was\nparsed. A crafted stream can redefine that SPS afterwards, so that the tile sizes\nadd up to more than the picture. The decoder then indexed past its coding tree\nblock tables: Rust's bounds checks turned this into a panic, or the picture was\ndecoded wrongly. A panic aborts the decoding thread, or the whole process when\nbuilt with `panic = \"abort\"`. The crate forbids `unsafe` code, so there is no\nmemory corruption.\n\nAny application that decodes untrusted HEIC files or HEVC streams with\n`heifer-hevc-dec`, directly or through the `heifer` crate, is affected.\n\nThe flaw was corrected in 0.3.27 (commit\n[`71dfc67`](https://github.com/HarpeLm/Heifer/commit/71dfc67f1e3ae3c4b7e4cf633e83a26c94b06a92)):\na tile layout that does not match the picture size is rejected with\n`Error::Invalid` at decode time.","severity":{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H","level":"medium","from":"osv"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"published":"2026-11-04T12:00:00Z","modified":"2026-11-09T10:00:02Z","fixes":[{"ecosystem":"crates.io","package":"heifer-hevc-dec","fixed_in":["0.3.27"],"sources":["osv"]}],"affected":[{"source":"osv","ecosystem":"crates.io","package":"heifer-hevc-dec","ranges":[{"type":"SEMVER","events":[{"introduced":"0.0.0-0"},{"fixed":"0.3.27"}]}]}],"references":[{"url":"https://crates.io/crates/heifer-hevc-dec","tags":["package"]},{"url":"https://rustsec.org/advisories/RUSTSEC-2026-0456.html","tags":["advisory"]},{"url":"https://github.com/HarpeLm/Heifer/commit/71dfc67f1e3ae3c4b7e4cf633e83a26c94b06a92","tags":["web"]}],"sources":{"osv":[{"id":"RUSTSEC-2026-0456","title":"Panic on an HEVC tile layout that does not match the active SPS","description":"An HEVC picture parameter set (PPS) stores explicit tile column widths and row\nheights computed against the sequence parameter set (SPS) active when it was\nparsed. A crafted stream can redefine that SPS afterwards, so that the tile sizes\nadd up to more than the picture. The decoder then indexed past its coding tree\nblock tables: Rust's bounds checks turned this into a panic, or the picture was\ndecoded wrongly. A panic aborts the decoding thread, or the whole process when\nbuilt with `panic = \"abort\"`. The crate forbids `unsafe` code, so there is no\nmemory corruption.\n\nAny application that decodes untrusted HEIC files or HEVC streams with\n`heifer-hevc-dec`, directly or through the `heifer` crate, is affected.\n\nThe flaw was corrected in 0.3.27 (commit\n[`71dfc67`](https://github.com/HarpeLm/Heifer/commit/71dfc67f1e3ae3c4b7e4cf633e83a26c94b06a92)):\na tile layout that does not match the picture size is rejected with\n`Error::Invalid` at decode time.","status":"published","published":"2026-11-04T12:00:00Z","modified":"2026-11-09T10:00:02.340396376Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H","level":"medium"}],"updated_at":"2026-11-09T10:23:19.768736Z"}]}}
