Функцияcrop() растрового крейта Rust (src/editor.rs) фиксирует ширину/высоту обрезки по отношению к исходным размерам, но фиксирует только параметры offset_x/offset_y по отношению к 0, но никогда не по отношению к исходной ширине/высоте. Когда смещение превышает соответствующий исходный размер, `width2 - offset_x` (или эквивалент высоты) уменьшается до отрицательного значения i32, которое не перехватывается в релизных сборках; затем отрицательное значение преобразуется для использования внутри вызова Vec::with_capacity() Image::blank(), что вызывает панику переполнения емкости и приводит к сбою процесса при одном созданном запросе обрезки.
Показать оригинальное описание (EN)
The raster Rust crate's crop function (src/editor.rs) clamps the crop width/height against source dimensions but only clamps the offset_x/offset_y parameters against 0, never against the source width/height.
Характеристики атаки
Последствия
Строка CVSS v3.1