Как TARmageddon ставит под угрозу безопасность Rust: Руководство разработчика

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

Это критический недостаток библиотеки tokio-tar и ее ответвлений, получивший название TARmageddon (CVE-2025-62518). Это потенциально позволяет удаленное выполнение кода (RCE) в ряде широко используемых программ, включая менеджер пакетов Astral uv Python и wasmCloud. Внутри других программ почти наверняка также спрятан уязвимый код. Базовый балл Common Vulnerability Scoring System (CVSS) v3.1 составляет 8,1, что означает, что это уязвимость высокой степени серьезности.

Другими словами, это противно.

Проблема связана с ошибкой десинхронизации в логике синтаксического анализа TAR, которая позволяет злоумышленникам «переносить» дополнительные файлы во вложенные архивы TAR — в частности, если запись TAR включает несовпадающие заголовки PAX и ustar, с данными правильного размера в PAX, но записью ustar с нулевым байтом. В этом случае анализатор ошибочно интерпретирует содержимое внутреннего архива как часть внешнего архива. Это может привести к перезаписи файлов во время извлечения, вмешательству в системы сборки или обходу инструментов анализа состава программного обеспечения, которые полагаются на чистые манифесты.

«Подождите, подождите, — говорите вы, — разве Раст не застрахован от такого рода дыр в памяти?» Ну и да и нет.

Последствия логических ошибок анализа TAR

Как сказал мне в интервью Алекс Зенла, соучредитель и технический директор Edera: «Ошибка, которую мы обнаружили, была логической ошибкой, а не ошибкой безопасности памяти, что является важным разъяснением. Хотя Rust изначально спроектирован так, чтобы быть более безопасным для памяти, чем C, вы все равно можете создавать ошибки памяти, в первую очередь из-за использования небезопасных блоков. Основные гарантии безопасности памяти Rust обеспечиваются компилятором и его системой владения и заимствования. Когда вы используете unsafe, вы, по сути, говорите компилятору: «Поверьте мне, я знаю, что делаю» и просите его приостановить некоторые проверки безопасности памяти в этом блоке кода». Внимание, спойлер: авторы библиотеки tokio-tar не знали, что делают.

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

Безопасность памяти и логические ошибки в Rust

В данном конкретном случае для разработчиков это означает, что существует три основных вектора эксплуатации:

  • Взлом серверной части сборки Python: Вредоносный пакет PyPI может внедрить вложенный TAR для перезаписи важных файлов конфигурации, таких как pyproject.toml, что приведет к RCE на компьютерах разработчиков или конвейерах CI.
  • Отравление образа контейнера: Инструменты, использующие извлечение на основе TAR (например, тестовые контейнеры), могут обрабатывать вредоносные слои изображений, которые незаметно внедряют несанкционированный контент.
  • Обход манифеста и спецификации: Сканеры безопасности могут проверить «чистый» TAR, в то время как фактическое извлечение включает в себя скрытые файлы из внутреннего архива, что подрывает доверие к целостности цепочки поставок.

Хорошей новостью является то, что исправленные версии теперь доступны для астрал-токио-тар (используется УФ) и Крата-Токио-Тарс изменениями, которые гарантируют, что заголовки PAX имеют приоритет над заголовками ustar, и обеспечивают строгую проверку границ. Проектам, которые не могут выполнить немедленную миграцию, рекомендуется временно переключиться на синхронный tar-кейт Rust или обернуть синхронные операции с помощью tokio::task::spawn_blocking() для асинхронного использования. Меры по снижению риска во время выполнения включают проверку манифеста, извлечение в песочнице и запрет на перезапись файлов.

Проблемы заброшенного ПО с открытым исходным кодом

Плохая новость заключается в том, что, в отличие от вашего заурядного патча безопасности, в котором уязвимости исправляются в исходном коде, исправление TARmageddon было осложнено тем фактом, что исходный проект tokio-tar является заброшенным программным обеспечением. Это не помешало библиотеке быть загруженной на crates.io более 5 миллионов раз. Тем не менее, у нас нет активных сопровождающих или контактной информации SECURITY.md. Эдере пришлось вручную отслеживать происхождение форков — от async-tar до tokio-tar, krata-tokio-tar и, наконец, astral-tokio-tar — и координировать выпуски патчей между форками. Я не завидую разработчикам Эдера в этой работе.

Отвечая на вопрос об этом, Зения сказала: «Хотя точные цифры по активно используемым проектам с открытым исходным кодом, которые соответствуют строгому определению «заброшенного ПО», неуловимы, использование неподдерживаемых устаревших компонентов с открытым исходным кодом с известными рисками безопасности широко распространено. Например, огромный объем пакетов на crates.io в сочетании с высоким уровнем бездействия проекта делает обнаружение неподдерживаемых зависимостей почти неизбежным в нетривиальном проекте Rust».

Другими словами, основная проблема — отказ от ПО с открытым исходным кодом — гораздо серьезнее, чем эта единственная проблема безопасности Rust. Программисты, будьте осторожны!

ТЕНДЕНЦИОННЫЕ ИСТОРИИ YOUTUBE.COM/THENEWSTACK Технологии развиваются быстро, не пропустите ни одной серии. Подпишитесь на наш канал YouTube, чтобы смотреть все наши подкасты, интервью, демонстрации и многое другое. ПОДПИСАТЬСЯ Группа, созданная в Sketch. Стивен Дж. Воан-Николс, он же sjvn, писал о технологиях и технологическом бизнесе с тех пор, как CP/M-80 была новейшей операционной системой для ПК, скорость 300 бит/с — высокоскоростное подключение к Интернету, WordStar — современный текстовый процессор, и он нам понравился. Узнайте больше от Стивена Дж. Воана-Николса.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *