Тихо и незаметно исполнилось десять лет критической уязвимости в языке программирования Rust, которая позволяет совершать ошибки работы с памятью в «безопасном» подмножестве языка.
Как известно, Rust - попытка создать язык программирования обеспечивающий безопасность работы с памятью, мощные абстракции с нулевой стоимостью и высокую производительность программ.
Язык можно условно разделить на «безопасное» и «опасное» подмножества. Считается, что в программах, написанных на «безопасном» подмножестве Rust, гарантировано отсутствие ошибок работы с памятью, однако, это не так.
Первая стабильная версия языка Rust появилась 15 мая 2015 года, а уже через 13 дней, 28 мая была обнаружена уязвимость, позволяющая создавать программы, содержащие ошибки при работе с памятью на «безопасном» Rust.
В начале 2024 года был создан проект cve-rs, автор которого продемонстрировал возможность внедрения в программы на «безопасном» Rust кода, содержащего:
В декабре 2024 года в компилятор rustc была добавлена проверка, которая не даёт собрать пакет cve-rs на свежих версиях компилятора, однако сама уязвимость в компиляторе устранена не была.
Таким образом в «самом безопасном» языке программирования, который корпорации, правительство и АНБ США проталкивают во все проекты, включая ядро Linux, более 10 лет (sic!) существует критическая уязвимость, позволяющая незаметно внедрять в программы уязвимости, характерные для C и C++.
Известно, что ранее АНБ США предположительно внедряло уязвимости в код открытых проектов, таких как Linux и GRUB.
Обсуждение уязвимости на github
Перемещено CrX из security