CVE-2024-24576

Оценки

EPSS

0.792средний79.2%
0%20%40%60%80%100%

Процентиль: 79.2%

CVSS

10.0критический3.x
0246810

Оценка CVSS: 10.0/10

Все оценки CVSS

CVSS 3.x
10.0

Вектор: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A: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 — современное решение для управления уязвимостями

Использует эту базу данных для обнаружения уязвимостей. Высокая скорость поиска, кроссплатформенность, продвинутый аудит конфигурации и гибкая фильтрация. Подходит для организаций любого масштаба.
Подробнее о Сканер-ВС 7

Источники

anchore_overridesdebiannvdredhatubuntu

CWE

78CWE-78

Связанные уязвимости

Эксплойты

ID эксплойта: CVE-2024-24576

Источник: github-poc

URL: https://github.com/SheL3G/CVE-2024-24576-PoC-BatBadBut

Уязвимое ПО (17)

Тип: Конфигурация

Операционная система:

Характеристика:
{  "children": [    {      "cpe_match": [        {          "cpe23uri": "cpe:2.3:a:rust-lang:rust:*:*:*:*:*:*:*:*",          "versionEndExcluding": "1.77.2"        }      ],      "negate": fa...

Источник: 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:*:*:*:*:*:*:*",...

Источник: nvd

Тип: Конфигурация

Поставщик: *

Продукт: rust

Операционная система: * * *

Характеристика:
{  "children": [    {      "cpe_match": [        {          "cpe23uri": "cpe:2.3:a:rust-lang:rust:*:*:*:*:*:*:*:*",          "versionEndExcluding": "1.77.2",          "vulnerable": true       ...

Источник: nvd

Конец списка