OSV отозвала 157 отчётов о вредоносных пакетах: автоматическая проверка ошибочно задела npm и PyPI

Маша Даровская
By Маша Даровская , IT-редактор и автор
OSV отозвала 157 отчётов о вредоносных пакетах: автоматическая проверка ошибочно задела npm и PyPI
Обложка © Anonhaven

OSV, база уязвимостей и вредоносных пакетов для open source-экосистем, отозвала 157 отчетов о вредоносных пакетах. Причина — ложные срабатывания автоматической проверки, которая пометила часть npm- и PyPI-пакетов как malware без подтверждённого вредоносного поведения.

Под ошибочные метки попали FastAPI 0.136.3, Strawberry GraphQL, @tanstack/start-storage-context, @nx/key, @ctrl/plex, rdflib, qontract-reconcile, massive, pulumi-vcd, art-template и ряд менее известных пакетов, включая MCP-серверы, CLI-утилиты, API-клиенты и инструменты для ИИ-разработки.

OSV-данные используют сканеры зависимостей, CI/CD-пайплайны, SBOM-инструменты, политики допуска пакетов и внутренние системы безопасности компаний. Одна ошибочная запись в такой базе способна остановить сборку, заблокировать релиз, открыть инцидент в SOC и заставить мейнтейнеров доказывать, что их проект не был взломан.

26 мая в репозитории OpenSSF malicious-packages начался откат записей, которые ранее попали в OSV как вредоносные. Этот репозиторий хранит отчеты о вредоносных пакетах в формате OSV. Его данные затем могут попадать в инструменты, которые проверяют зависимости в проектах.

Первая заметная запись касалась FastAPI 0.136.3. Пакет получил идентификатор MAL-2026-4750 и описание «Malicious code in fastapi (PyPI)». Запись была опубликована 23 мая, а 26 мая её отозвали. В карточке OSV видно, что отчёт теперь находится в статусе Withdrawn.

Первоначальная претензия к FastAPI выглядела так: в релизе 0.136.3 появилась зависимость fastar>=0.9.0 в optional-группе standard. Автоматическая проверка сочла это подозрительным, потому что имя fastar похоже на вариант, который можно принять за попытку игры с пространством имён FastAPI. В отчете также отмечали, что установка pip install "fastapi[standard]" могла подтянуть эту зависимость.

Ключевая проблема: запись не указывала на реальный вредоносный код. В ней не было подтверждения кражи токенов, удаленного управления, вредоносного install-скрипта, сетевой эксфильтрации или инфраструктуры злоумышленника. По сути, подозрительное изменение зависимостей было повышено до уровня malware-отчёта.

Позднее участник PR в OpenSSF указал, что после дополнительной проверки зависимость fastar оказалась разработкой команды FastAPI, а сам пакет находится в нормальном состоянии. Команда FastAPI также открыла issue, где отметила, что advisory MAL-2026-4750 выглядит как ложноположительное срабатывание и не относится к проекту FastAPI.

Изначально речь шла о FastAPI, но обсуждение быстро расширилось. Участники заметили, что похожие ложные срабатывания есть и по другим пакетам. После этого в PR начали добавлять новые коммиты с отзывами отчетов.

В итоге в osv/withdrawn перенесли 157 OSV-записей. Часть касалась PyPI, часть — npm. Среди них были популярные проекты и длинный хвост небольших библиотек. В коммитах встречались пояснения вроде «legitimate MCP vision tool», «simple LLM API wrapper», «Tailwind CSS fork», «legitimate ORM generator, not malware» и «no installer harm». Это показывает общий шаблон: автоматика находила подозрительный признак, но ручная проверка не подтверждала вредоносное поведение.

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

Уязвимость в зависимости и вредоносный пакет — разные вещи, но для автоматических политик безопасности оба события часто выглядят как красный флаг. Если инструмент получает из OSV запись MAL-*, он может заблокировать pull request, остановить pipeline или запретить установку пакета.

OSV и OpenSSF Malicious Packages нужны именно потому, что атаки на npm и PyPI стали массовыми. Через такие базы инструменты могут быстро находить уже известные вредоносные зависимости, проверять lock-файлы, SBOM и окружения. OSV-формат поддерживают API, osv-scanner, deps.dev и сторонние DevSecOps-инструменты.

OpenSSF недавно отдельно описывала сценарии, где OSV API используется для поиска malware-записей по пакетам npm и PyPI, а OSV-Scanner запускается в CI/CD и падает, если pull request добавляет новую вредоносную или уязвимую зависимость. Такой подход полезен, но требует качества входных данных. Сканер не может отличить реальную угрозу от ошибочной записи, если база уже пометила пакет как malware.

Инцидент с 157 отзывами показывает слабое место всей цепочки: автоматическая детекция ускоряет обнаружение атак, но автоматическая публикация без достаточной валидации превращает риск-сигнал в публичный инцидент.

Есть новость? Станьте автором.

Мы сотрудничаем с независимыми исследователями и специалистами по кибербезопасности. Отправьте нам новость или предложите статью на рассмотрение редакции.