Каталог

Сортировать по

Фильтры по оценкам

Range: 0.0 - 10.0

Range: 0.000 - 1.000

Sources

Очистить фильтры

CVE-2024-24576

CVSS КритическийEPSS Средний

Оценка EPSS

Оценка: 0.7921

CVSS 3.x

Оценка: 10.0

Источники
anchore_overridesdebiannvdredhatubuntu

Rust - это язык программирования. Рабочая группа Rust Security Response WG была уведомлена о том, что стандартная библиотека Rust до версии 1.77.2 неправильно экранировала аргументы при вызове пакетных файлов (с расширениями `bat` и `cmd`) на Windows с использованием `Command`. Злоумышленник, способный контролировать аргументы, передаваемые создаваемому процессу, мог выполнить произвольные команды оболочки, минуя экранирование. Серьезность этой уязвимости критична для тех, кто вызывает пакетные файлы на Windows с ненадежными аргументами. Ни одна другая платформа или использование не затрагиваются. APIs `Command::arg` и `Command::args` указывают в своей документации, что аргументы передаются создаваемому процессу как есть, независимо от содержания аргументов, и не будут оцениваться оболочкой. Это означает, что передача ненадежного ввода в качестве аргумента должна быть безопасной. На Windows реализация этого более сложная, чем на других платформах, потому что Windows API предоставляет только одну строку, содержащую все аргументы для создаваемого процесса, и именно от самого создаваемого процесса зависит их разделение. Большинство программ используют стандартное C среднее время argv, что на практике приводит к в основном согласованному способу разделения аргументов. Однако одно исключение — это `cmd.exe` (используемый, среди прочего, для выполнения пакетных файлов), который имеет свою собственную логику разделения аргументов. Это заставляет стандартную библиотеку реализовывать пользовательское экранирование для аргументов, передаваемых в пакетные файлы. К сожалению, было сообщено, что наша логика экранирования была недостаточно тщательной, и было возможно передать злонамеренные аргументы, которые приведут к произвольному выполнению оболочки. Из-за сложности `cmd.exe` мы не смогли найти решение, которое правильно экранирует аргументы во всех случаях. Чтобы сохранить наши гарантии API, мы улучшили надежность кода экранирования и изменили API `Command`, чтобы возвращать ошибку `InvalidInput`, когда он не может безопасно экранировать аргумент. Эта ошибка будет сгенерирована при создании процесса. Исправление включено в Rust 1.77.2. Обратите внимание, что новая логика экранирования пакетных файлов принимает консервативную позицию и может отклонить допустимые аргументы. Тем, кто реализует экранирование самостоятельно или обрабатывает только доверенные вводы на Windows, также можно использовать метод `CommandExt::raw_arg`, чтобы обойти логику экранирования стандартной библиотеки.

Нажмите для просмотра деталей
Предыдущая
Страница 146 из 22836
479541 всего уязвимостей
Следующая