Безопасность · 2 min read · Oct 17, 2025

15-летний неустранённый баг в Python позволяет выполнять код в 350 тыс. проектов

Более 350 000 уникальных репозиториев с открытым исходным кодом, как считается, находятся под угрозой потенциальных кибератак на цепочку поставок из-за неустранённой 15-летней уязвимости в модуле tarfile Python, который является модулем по умолчанию в любом проекте, использующем Python.

В настоящее время модуль tarfile Python широко используется в фреймворках, созданных AWS, Facebook, Google, Intel и Netflix, а также в различных отраслях, таких как разработка программного обеспечения, искусственный интеллект/машинное обучение и разработка кода, а также в других секторах, таких как веб-разработка, безопасность, управление ИТ и медиа.

Уязвимость, отслеживаемая как CVE-2007-4559 (оценка CVSS: 6.8), была обнаружена 15 лет назад. Этот недостаток может быть использован путем загрузки вредоносного файла, сгенерированного с помощью двух или трёх строк простого кода, и позволяет злоумышленникам выполнять произвольный код или контролировать целевое устройство.

Ранее в этом году CVE-2007-4559 снова был обнаружен исследователем уязвимостей Trellix Касимиром Шульцем во время расследования другой проблемы безопасности.

«Во время расследования не связанной уязвимости, Исследовательский центр Trellix наткнулся на уязвимость в модуле tarfile Python. Изначально мы думали, что нашли новую уязвимость нулевого дня. Когда мы углубились в проблему, мы поняли, что это на самом деле CVE-2007-4559», — говорится в сообщении, опубликованном компанией безопасности Trellix.

«Уязвимость представляет собой атаку на обход пути в функциях extract и extractall в модуле tarfile, которые позволяют злоумышленнику перезаписывать произвольные файлы, добавляя последовательность “..” к именам файлов в архиве TAR.»

Хотя уязвимость изначально была оценена только в 6.8, в большинстве случаев злоумышленник может получить выполнение кода из записи файла. В видео ниже Trellix показывает, как им удалось получить выполнение кода, используя Universal Radio Hacker:

Злоумышленник может использовать этот недостаток, загружая вредоносный tarfile таким образом, чтобы можно было выйти за пределы директории, в которую предполагается извлечение, и достичь выполнения кода, что позволяет противнику потенциально захватить контроль над целевым устройством.

«Чтобы злоумышленник мог воспользоваться этой уязвимостью, ему нужно добавить “..” с разделителем для операционной системы (“/” или “”) в имя файла, чтобы выйти за пределы директории, в которую файл должен быть извлечён. Модуль tarfile Python позволяет нам делать именно это:», — продолжает сообщение.

«Модуль tarfile позволяет пользователям добавлять фильтр, который может быть использован для разбора и изменения метаданных файла перед его добавлением в архив tar. Это позволяет злоумышленникам создавать свои эксплойты всего с 6 строками кода выше.»

«Никогда не извлекайте архивы из ненадёжных источников без предварительной проверки», — говорится в документации Python для tarfile. «Возможно, что файлы создаются вне пути, например, члены, имеющие абсолютные имена файлов, начинающиеся с ‘/’ или имена файлов с двумя точками ‘..’».

Кроме того, Trellix выпустил бесплатный инструмент под названием Creosote для сканирования проектов, уязвимых к CVE-2007-4559, используя его для выявления уязвимости, скрывающейся в таких приложениях, как Spyder Python IDE и Polemarch.

«Если оставить это без внимания, эта уязвимость была непреднамеренно добавлена в сотни тысяч проектов с открытым и закрытым исходным кодом по всему миру, создавая значительную поверхность атаки на цепочку поставок программного обеспечения», — отметил главный инженер Trellix и директор по исследованию уязвимостей Даг Маки.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.