Неустраненные уязвимости в пакетных менеджерах npm и yarn позволяют злоумышленникам обходить защиту от атак типа Shai-Hulud.

Npm Yarn уязвимость безопасность Packagegate Javascript

Израильский исследователь обнаружил шесть критических уязвимостей нулевого дня (PackageGate) в менеджерах пакетов npm и yarn, позволяющих обходить защиту от атак типа “червя” Shai-Hulud. Рекомендовано перейти на pnpm, vlt или Bun и обновлять ПО.

Разработчикам на JavaScript следует задуматься об отказе от платформ npm и yarn для распространения своих разработок, поскольку недавно обнаруженные уязвимости позволяют злоумышленникам запускать вредоносные атаки типа “червя” (worm attacks), подобные Shai-Hulud, заявляет израильский исследователь.

Предупреждение исходит от Орена Йомтова из Koi Security, который в понедельник сообщил в блоге об обнаружении шести уязвимостей нулевого дня в ряде менеджеров пакетов. Эти уязвимости могут позволить хакерам обойти меры защиты, рекомендованные в ноябре прошлого года после того, как Shai-Hulud распространился по npm и скомпрометировал более 700 пакетов.

Эти меры защиты включают:

  • отключение возможности запуска скриптов жизненного цикла (lifecycle scripts) — команд, которые автоматически выполняются во время установки пакета;
  • сохранение проверок целостности lock-файлов (package-lock.json, pnpm-lock.yaml и других) в системе контроля версий (git). Lock-файл фиксирует точную версию и хеш целостности каждого пакета в дереве зависимостей. При последующих установках менеджер пакетов сверяет входящие пакеты с этими хешами, и если обнаружено несоответствие, установка прерывается. Если злоумышленник скомпрометирует пакет и опубликует вредоносную версию, проверка целостности должна выявить несоответствие и заблокировать установку.

По словам Йомтова, после ноября эти рекомендации «стали стандартным советом повсеместно — от руководств по безопасности GitHub до корпоративных политик», поскольку «если вредоносный код не может выполниться при установке, а ваше дерево зависимостей зафиксировано, вы защищены».

Совет ноября все еще актуален, но есть и другие проблемы, требующие внимания

Он добавил в электронном интервью, что эти советы по-прежнему действительны.

Однако уязвимости, которые он обнаружил и назвал PackageGate, позволяющие хакерам обойти обе эти меры защиты, должны быть устранены на всех платформах, отметил он.

На данный момент платформы pnpm, vlt и Bun устранили лазейки для обхода, сказал Йомтов, но npm и yarn — нет. Поэтому он рекомендует разработчикам JavaScript использовать pnpm, vlt или Bun.

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

Заявление GitHub «сбивает с толку»

Microsoft, владеющая npm через GitHub и курирующая его, перенаправила вопросы об уязвимостях в GitHub. В своем заявлении компания сообщила: «Мы активно работаем над устранением новой проблемы, о которой было сообщено, поскольку npm активно сканирует реестр на наличие вредоносного ПО». Тем временем она призывает разработчиков проектов принять рекомендации из этого блога, выпущенного после атак Shai-Hulud.

В заявлении также отмечается, что в сентябре прошлого года GitHub сообщил об усилении безопасности npm, включая изменения в механизмах аутентификации и управления токенами.

GitHub также предупреждает, что если пакет, устанавливаемый через git, содержит скрипт prepare, то будут установлены его зависимости (dependencies) и зависимости для разработки (devDependencies). «Как мы уже сообщали при подаче заявки, это намеренная особенность дизайна, работающая ожидаемым образом. Когда пользователи устанавливают зависимость из git, они доверяют всему содержимому этого репозитория, включая его конфигурационные файлы».

Йомтов назвал это объяснение намеренного дизайна «сбивающим с толку».

Не полная картина

Он заявляет, что об уязвимости обхода скриптов было сообщено через программу Bug Bounty на HackerOne 26 ноября 2025 года. В то время как другие менеджеры пакетов JavaScript приняли отчеты, npm заявила, что платформа работает штатно, и команда ‘ignore scripts’ должна предотвращать выполнение неутвержденного удаленного кода.

«Мы не писали этот пост, чтобы кого-то пристыдить», — сказал Йомтов в блоге. «Мы написали его, потому что экосистема JavaScript заслуживает большего, и потому что решения по безопасности должны основываться на точной информации, а не на предположениях о защите, которые не выдерживают проверки.

«Стандартный совет — отключить скрипты и зафиксировать lock-файлы — по-прежнему стоит выполнять. Но это не полная картина», — отметил он. «Пока проблема PackageGate не будет полностью решена, организациям необходимо самостоятельно принимать взвешенные решения о рисках».

Эта статья изначально была опубликована на InfoWorld.

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

Похожие новости: