LINUX.ORG.RU

Tar


11

0

Всего сообщений: 8

Уязвимость в Rust-библиотеках для формата TAR, приводящая к распаковке файлов из вложенного архива

Уязвимость в Rust-библиотеках для формата TAR, приводящая к распаковке файлов из вложенного архива
Группа Безопасность

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

Уязвимость также проявляется в форках библиотеки 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 млн.

Уязвимость вызвана некорректным выбором позиции при разборе разных значений размера в заголовках 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 отдельно подготовлены патчи.

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

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

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

>>> Подробности на OpenNET

 , ,

Ygor
()

ratarmount 1.0.0

Группа Open Source

Программа ratarmount (random access tar mount) предназначена для монтирования архивных файлов в файловую систему и позволяет монтировать через FUSE не только файлы tar (сжатые bz2, gz, xz или zstd) TAR, но и zip и rar. Новый релиз 1.0.0 доступен к установке из pip и AppImage.

( читать дальше... )

>>> Подробности

 , , , ,

linuks
()

Вышел GNU tar 1.31

Группа GNU's Not Unix

Чуть больше чем через год после релиза версии 1.30 вышел GNU tar 1.31.

( читать дальше... )

>>> Скачать

 ,

saahriktu
()

Релиз GNU Tar 1.30

Группа GNU's Not Unix

Больше года прошло с момента выпуска GNU Tar 1.29, и наконец представлен новый стабильный релиз архиватора GNU Tar 1.30.

GNU Tar — наиболее распространенный архиватор, используемый в Unix подобных системах.

Основные изменения:

  • добавлена воможность отследить ошибки при создании или обновлении архива с некорректными опциями, которому необходимо соблюдение порядка следования. Например: «tar -cf a.tar . --exclude '*.o'» спровоцирует вывод с указанием на ошибку, связанную с блоком --exclude в конце пути для архивирования (--exclude необходимо указать перед обязательным параметром, в отношении которого устанавливается ограничение);
  • усилена безопасность при распаковке данных из архивов, не заслуживающих доверия;
  • добавлена опция "--warnings=failed-read" для скрытия предупреждений о невозможности прочитать содержимое файла или каталога во время его совместного использования с опцией "--ignore-failed-read";
  • добавлена опция "--warnings=none" для скрытия любых предупреждений;
  • откорректирована опция "--numeric-owner" — её использование приведёт к сохранению идентификаторов владельца служебных полей.

>>> Анонс релиза на сайте GNU

 ,

telikan
()

Уязвимость в архиваторе GNU tar

Группа Безопасность

В программе для архивации GNU tar обнаружена уязвимость, позволяющая выполнить запись файлов за пределами указанной директории.

Таким образом, можно заменить ключи SSH или файл .bashrc, а при выполнении от привилегированного пользователя возможно заместить системные файлы или получить права root.

>>> Технические детали атаки

>>> Багтрекер Debian

 ,

inchallah
()

Релиз GNU Tar 1.27

Группа GNU's Not Unix

Спустя два с лишним года с момента выхода GNU Tar 1.26 представлен новый релиз архиватора, разрабатываемого проектом GNU.

Изменения:

  • Поддержка расширенных атрибутов (xattr), POSIX ACL и контекстов SELinux.
  • Работа с файлами размером более 8 Гб.
  • Возможность одновременного указания символьного и числового идентификатора пользователя/группы.
  • Опции --keep-old-files и --skip-old-files, позволяющие не затирать файлы извлекаемыми.
  • Поддержка дополнительный аргументов командной строки при работе с внешними программами.
  • Отладочная опция --enable-gcc-warnings.
  • Аргумент --keep-directory-symlink для отмены удаления симлинков, совпадающих с извлекаемыми каталогами.
  • Несколько багфиксов.

Получить (исходный код)

>>> Подробности

 , ,

FRCTLL
()

Вышел Tar 1.23

Группа Open Source

GNU Tar — известный архиватор для Unix-систем, первоначально использовавшийся для магнитных накопителей.
Изменения по сравнению с релизом 1.22 годичной давности:

  • Автоопределение размера записей при просмотре и распаковке архива.
  • При выполнении операций, требующих только чтения (как --list или --extract) для повышения производительности используется lseek.
  • Новая опция запуска --warning, позволяющая включать и отключать (флаг no) определённые типы сообщений: --warning=no-alone-zero-block, например.
  • Опция --level, на практике --level=0, позволяет создавать инкрементальный дамп.

Также многочисленные багфиксы, в том числе:

  • распознавание ссылок с -c --remove-files;
  • восстановление файлов из бэкапа (баг #508199 в Debian);
  • --remove-files удаляет файлы только если они были корректно упакованы;
  • исправлено возможное переполнение памяти.

>>> Подробности

 ,

dogbert
()

GNU tar 1.21

Группа GNU's Not Unix

Продолжается развитие GNU версии архиватора tar. В новой версии шорткат -J эквивалентен --lzma, появился ключ --lzop. Усовершенствован механизм автокомпрессии, на основе анализа файла или его расширения. Теперь он способен узнавать больше VCS при использовании опции --exclude-vcs. При использовании --transform, теперь возможно использовать флаги, применяющие замену, основанную на регулярных выражениях, только к ссылкам определенного типа или регулярным файлам

>>> Подробности

 ,

Loh
()