В библиотеках Rust для формата TAR обнаружена уязвим��сть TARmageddon, позволяющая распаковывать из вложенного архива

В библиотеке async‑tar (написана на Rust), предоставляющей функции для чтения и записи tar‑архивов, обнаружена уязвимость CVE-2025-62518 (кодовое имя TARmageddon), позволяющая при распаковке специально оформленного tar‑архива не только извлечь размещённые в нём файлы, но и файлы, содержащиеся во вложенном tar‑архиве. Уязвимость может быть использована для обхода систем верификации архивов и распаковки файлов, для которых не выполнялась проверка.

Уязвимость CVE-2025-62518 также проявляется в форках библиотеки async‑tar, таких как tokio‑tar, krata‑tokio‑tar и astral‑tokio‑tar, а также в утилитах на их основе, например, в пакетном менеджере uv, развиваемом в качестве высокопроизводительной замены «pip» для проектов на языке Python. Из популярных проектов, использующих уязвимые библиотеки, также отмечаются инструментарий testcontainers для запуска docker‑контейнеров и WebAssembly runtime wasmCloud. В репозитории crates.is за последние 90 суток библиотека async‑tar насчитывает 1.3 млн загрузок, tokio‑tar — 2.2 млн, testcontainers — 2.9 млн.

По информации OpenNET, уязвимость CVE-2025-62518 вызвана н��корректным выбором позиции в потоке при разборе разных значений размера в заголовках ustar и PAX. В tar‑архивах в формате PAX для каждого файла внутри архива указываются два заголовка — классический ustar и расширенный PAX. Проблема вызвана тем, что уязвимые библиотеки при распаковке файлов вместо вычисления смещения на основе размера из расширенного заголовка PAX брали размер из устаревшего заголовка ustar. При нулевом значении размера в заголовке ustar идущее за ним содержимое файла обрабатывалось как корректный блок TAR‑заголовков для следующего файла.

Для совершения атаки достаточно создать TAR‑архив, в котором в ustar‑заголовке указан нулевой размер, а в заголовке для формата PAX актуальный размер, из‑за чего содержимое файла с другим tar‑архивом будет обработано как часть основного архива. Пример кода для создания подобных архивов размещён на GitHub. Уязвимость устранена в выпусках tokio‑tar 0.5.6 и uv 0.9.5. Для остальных библиотек исправления пока не опубликованы, но для astral‑tokio‑tar, async‑tar и krata‑tokio‑tar отдельно подготовлены патчи.

Уязвимости CVE-2025-62518 в библиотеках TAR присвоен уровень опасности 8.1 из 10, так как проблема может использоваться для перезаписи распаковываемых файлов (в уязвимых реализациях будут распакованы не те файлы, что были видны в архиве). При этом уязвимость в пакетном менеджере uv отмечена как неопасная, так как если атакующий может влиять на содержимое исходного архива, нет смысла усложнять атаку и эксплуатировать уязвимость через вложенный архив, когда можно добиться выполнения кода через сборочные сценарии в основном архиве.

Выявившие уязвимость CVE-2025-62518 исследователи предложили несколько гипотетических сценариев атак, позволяющих обойти проверки безопасности и добиться выполнения кода через замену файлов конфигурации или вмешательство в сборочный процесс. Подразумевается, что присланный архив сможет пройти автоматизированную проверку сканером безопасности и ручной аудит, в ходе которого проверяющий не обратит внимание на странный вложенный архив с другими файлами, после чего при распаковке при помощи Rust‑библиотек из архива будет извлечено иное содержимое, чем ожидалось.

Например, атакующий может загрузить модифицированный архив в репозиторий PyPI, который пройдёт проверку на основе анализа содержимого основного архива, содержащего легитимный файл pyproject.toml. При обработке данного пакета при помощи утилиты uv легитимный pyproject.toml будет заменён на вредоносный вариант из вложенного архива, содержащий команды, которые будут выполнены при сборке на компьютере разработчика или в системе непрерывной интеграции. Аналогично, можно организовать перезапись файлов контейнера при извлечении образа контейнера при помощи инструментария testcontainers.

Источник: habr.com

0 0 голоса
Рейтинг новости
1
0
Подписаться
Уведомить о
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии