
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-раннер, проверить доступные ему секреты и отозвать скомпрометированные ключи. Очистка репозитория не устраняет последствия исполнения на хосте.
Источник: habr.com