CVE-2024-24576
Оценки
EPSS
Процентиль: 79.2%
CVSS
Оценка CVSS: 10.0/10
Все оценки CVSS
Вектор: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
Разбор вектора
CVSS (Common Vulnerability Scoring System) вектор предоставляет детальные метрики о характеристиках уязвимости
CVSS
Вектор атаки
Сеть (N)
Описывает способ эксплуатации уязвимости
Сложность атаки
Низкая (L)
Описывает условия, не зависящие от атакующего
Требуемые привилегии
Отсутствуют (N)
Описывает уровень привилегий, которыми должен обладать атакующий
Взаимодействие с пользователем
Отсутствует (N)
Отражает требование участия человека в атаке
Область воздействия
Изменена (C)
Определяет, влияет ли успешная атака на компоненты за пределами уязвимого компонента
Воздействие на конфиденциальность
Высокое (H)
Измеряет воздействие на конфиденциальность информации
Воздействие на целостность
Высокое (H)
Измеряет воздействие на целостность при успешной эксплуатации уязвимости
Воздействие на доступность
Высокое (H)
Измеряет воздействие на доступность затронутого компонента
Описание
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, чтобы обойти логику экранирования стандартной библиотеки.
Сканер-ВС 7 — современное решение для управления уязвимостями
Источники
CWE
Связанные уязвимости
Эксплойты
ID эксплойта: CVE-2024-24576
Источник: github-poc
Уязвимое ПО (17)
Тип: Конфигурация
Операционная система:
{ "children": [ { "cpe_match": [ { "cpe23uri": "cpe:2.3:a:rust-lang:rust:*:*:*:*:*:*:*:*", "versionEndExcluding": "1.77.2" } ], "negate": fa...
{ "children": [ { "cpe_match": [ { "cpe23uri": "cpe:2.3:a:rust-lang:rust:*:*:*:*:*:*:*:*", "versionEndExcluding": "1.77.2" } ], "negate": false, "operator": "OR" } ], "operator": "OR"}
Источник: anchore_overrides
Тип: Конфигурация
Продукт: cargo
Операционная система: ubuntu focal 20.04
{ "unaffected": true}
Источник: ubuntu
Тип: Конфигурация
Продукт: cargo
Операционная система: ubuntu jammy 22.04
{ "unaffected": true}
Источник: ubuntu
Тип: Конфигурация
Продукт: clippy
Операционная система: altlinux
{ "fixed": "1:1.80.0-alt0.p10.1"}
Источник: redhat
Тип: Конфигурация
Продукт: rust
Операционная система: altlinux
{ "fixed": "1:1.80.0-alt0.p10.1"}
Источник: redhat
Тип: Конфигурация
Продукт: rust-analyzer
Операционная система: altlinux
{ "fixed": "1:1.80.0-alt0.p10.1"}
Источник: redhat
Тип: Конфигурация
Продукт: rust-cargo
Операционная система: altlinux
{ "fixed": "1:1.80.0-alt0.p10.1"}
Источник: redhat
Тип: Конфигурация
Продукт: rust-doc
Операционная система: altlinux
{ "fixed": "1:1.80.0-alt0.p10.1"}
Источник: redhat
Тип: Конфигурация
Продукт: rust-gdb
Операционная система: altlinux
{ "fixed": "1:1.80.0-alt0.p10.1"}
Источник: redhat
Тип: Конфигурация
Продукт: rust-src
Операционная система: altlinux
{ "fixed": "1:1.80.0-alt0.p10.1"}
Источник: redhat
Тип: Конфигурация
Продукт: rustc
Операционная система: ubuntu focal 20.04
{ "unaffected": true}
Источник: ubuntu
Тип: Конфигурация
Продукт: rustc
Операционная система: ubuntu jammy 22.04
{ "unaffected": true}
Источник: ubuntu
Тип: Конфигурация
Продукт: rustc
Операционная система: ubuntu mantic 23.10
{ "unaffected": true}
Источник: ubuntu
Тип: Конфигурация
Продукт: rustc
Операционная система: debian
{ "unaffected": true}
Источник: debian
Тип: Конфигурация
Продукт: rustfmt
Операционная система: altlinux
{ "fixed": "1:1.80.0-alt0.p10.1"}
Источник: redhat
Тип: Конфигурация
Поставщик: *
Продукт: fedora
Операционная система: * * *
{ "cpe_match": [ { "cpe23uri": "cpe:2.3:o:fedoraproject:fedora:38:*:*:*:*:*:*:*", "vulnerable": true }, { "cpe23uri": "cpe:2.3:o:fedoraproject:fedora:39:*:*:*:*:*:*:*",...
{ "cpe_match": [ { "cpe23uri": "cpe:2.3:o:fedoraproject:fedora:38:*:*:*:*:*:*:*", "vulnerable": true }, { "cpe23uri": "cpe:2.3:o:fedoraproject:fedora:39:*:*:*:*:*:*:*", "vulnerable": true }, { "cpe23uri": "cpe:2.3:o:fedoraproject:fedora:40:*:*:*:*:*:*:*", "vulnerable": true } ], "operator": "OR"}
Источник: nvd
Тип: Конфигурация
Поставщик: *
Продукт: rust
Операционная система: * * *
{ "children": [ { "cpe_match": [ { "cpe23uri": "cpe:2.3:a:rust-lang:rust:*:*:*:*:*:*:*:*", "versionEndExcluding": "1.77.2", "vulnerable": true ...
{ "children": [ { "cpe_match": [ { "cpe23uri": "cpe:2.3:a:rust-lang:rust:*:*:*:*:*:*:*:*", "versionEndExcluding": "1.77.2", "vulnerable": true } ], "operator": "OR" }, { "cpe_match": [ { "cpe23uri": "cpe:2.3:o:microsoft:windows:-:*:*:*:*:*:*:*" } ], "operator": "OR" } ], "operator": "AND"}
Источник: nvd