
17 сентября 2026 года Socket сообщил о вредоносном коде в четырёх dev‑версиях visanduma/nova-two-factor — пакета двухфакторной аутентификации для Laravel Nova. Изменения внесли через скомпрометированный аккаунт GitHub. Исследователи связывают их с вредоносной кампанией PolinRider.
К 18 сентября Packagist пометил четыре версии как вредоносные и временно заморозил пакет. Его счётчик установок превышает 700 тысяч. База CodeScoring содержит информацию обо всех четырех вредоносных версиях пакета.
В оценке угрозы такого пакета важна разница между релизом и веткой. В Composer префикс dev‑ обозначает версию из ветки репозитория. Такая зависимость позволяет получать изменения без ожидания стабильного выпуска. По умолчанию Composer рассматривает стабильные версии, однако проект также может явно разрешить development‑версии. Поэтому dev‑версия не означает, что заражённый код находился в изолированной среде тестирования.
О похожем заражении через Git на Хабре уже рассказывал разработчик в мае. Теперь компрометацию нашли в конкретном PHP‑пакете. Поэтому при проверке важны не только имя зависимости, но и выбранная версия и путь получения кода.
В описанных Socket вариантах заражения PolinRider код прячется в конфигурации сборки, файлах под видом шрифтов и задачах IDE. После запуска он загружает следующие компоненты для кражи данных. Перезапись истории Git через force‑push также затрудняет разбор изменений. Помимо этого исследователи обнаружили вариант с запуском JavaScript из index.php через PHP‑функцию shell_exec, выполняющую системную команду.
Командам, использующим пакет, стоит предпринять следующие шаги:
Найти его в файлах
composer.jsonиcomposer.lock, сверить версию и ссылку на коммит с индикаторами. Lock‑файл фиксирует выбранные версии, но не подтверждает безопасность зафиксированного кода.Просмотреть историю force‑push и изменения конфигурации сборки и IDE. До завершения проверки открывать проект в VS Code в режиме Restricted Mode. Если проект уже отмечен как доверенный, отозвать доверие через Workspaces: Manage Workspace Trust. Запретить автоматические задачи через Tasks: Manage Automatic Tasks → Disallow Automatic Tasks.
Для загрузок через модуль CodeScoring.OSA использовать активную блокирующую политику с условием «Зависимость опасна» на этапе proxy.
Если код уже выполнялся, изолировать рабочую машину или CI‑раннер, проверить доступные ему секреты и отозвать скомпрометированные ключи. Очистка репозитория не устраняет последствия исполнения на хосте.

