BatBadBut
📌Идентификация уязвимости: Критическая уязвимость идентифицируется как “BatBadBut” CVE-2024–24576
📌Уязвимое ПО: Уязвимость существует в стандартной библиотеке Rust и, в частности, затрагивает системы Windows
📌Степень критичности: присвоена наивысшая оценка по шкале CVSS, равная 10,0, что указывает на максимальную степень тяжести
📌 Подробная информация: Уязвимость возникает из-за того, что стандартная библиотека Rust неправильно экранирует аргументы при вызове пакетных файлов в Windows с использованием командного API. Это может позволить злоумышленнику выполнять произвольные команды оболочки, обходя экранирующий интерфейс.
📌Условия: выполнение команды в Windows, команда не указывает расширение файла или использует .bat или .cmd, команда содержит управляемый пользователем ввод в качестве части аргументов команды, а среда выполнения не может должным образом обработать аргументы команды для cmd.exe
📌Уязвимые версии: Все версии Rust для Windows до версии 1.77.2 подвержены этой уязвимости
📌Воздействие: Уязвимость также затрагивает другие языки программирования, включая Erlang, Go, Haskell, Java, Node.js, PHP, Python и Ruby, хотя исправления выпущены не для всех из них
📌Рекомендации по устранению: Пользователям рекомендуется перемещать пакетные файлы в каталог, не указанный в переменной среды PATH, чтобы предотвратить непредвиденное выполнение. Разработчикам следует перейти на версию Rust 1.77.2, чтобы устранить уязвимость
📌Обнаружение и отчетность: Уязвимость была обнаружена инженером по безопасности из Flatt Security, известным как RyotaK, и передана в Координационный центр сертификации (CERT/CC).
📌Ответ от Rust: Rust признала проблему и с тех пор улучшила надежность экранирующего кода и модифицировала командный API, чтобы возвращать ошибку InvalidInput, если аргумент не может быть безопасно экранирован
📌Реакция разработчиков других языков: Разработчики Haskell, Node.js, PHP и yt-dlp выпустили исправления для устранения ошибки, связанной с внедрением команд