След мащабните supply-chain атаки Shai-Hulud, екосистемата на JavaScript пакетите трябваше да стане по-сигурна. Вместо това, ново изследване показва, че част от въведените защитни механизми имат сериозни пропуски. Колективно наречени PackageGate, тези уязвимости позволяват заобикаляне на защитите при работа с Git зависимости в популярни мениджъри на пакети, включително npm, pnpm, vlt и Bun.
Какво представлява PackageGate
Изследователи от компанията Koi Security, специализирана в endpoint и supply-chain сигурност, откриват слабости в начина, по който JavaScript инструментите обработват зависимости, инсталирани директно от Git хранилища. Проблемът е, че част от защитите, въведени след Shai-Hulud, не важат ефективно в тези сценарии.
Докато повечето засегнати инструменти реагират с корекции, npm отхвърля доклада с аргумента, че наблюдаваното поведение „работи по предназначение“.
Shai-Hulud и еволюцията на атаките
Първата вълна на атаката Shai-Hulud удря npm през септември 2025 г. и компрометира 187 пакета. Само месец по-късно следва втора, значително по-голяма вълна от над 500 пакета, която според анализи води до изтичане на около 400 000 разработчически тайни в повече от 30 000 автоматично генерирани GitHub хранилища.
Тези инциденти, заедно с други като s1ngularity и GhostAction, принуждават GitHub (операторът на npm) да обяви допълнителни мерки за сигурност и да препоръча:
-
деактивиране на lifecycle скриптовете при инсталация (
--ignore-scripts=true); -
използване на lockfile integrity и dependency pinning.
Как се заобикалят защитите
Според Koi Security, при инсталиране на зависимости от Git хранилище, npm позволява конфигурационни файлове като злонамерен .npmrc да пренапишат пътя към git бинарния файл. Това води до пълно изпълнение на код, дори когато флагът --ignore-scripts=true е активен.
Изследователите подчертават, че рискът не е теоретичен – съществуват доказателства за публикуван proof-of-concept, използван за създаване на reverse shell в реални атаки.
При останалите JavaScript пакетни мениджъри:
-
pnpm и vlt позволяват не само заобикаляне на защитата срещу скриптове, но и нарушаване на lockfile integrity;
-
Bun е засегнат чрез различен механизъм, но реагира бързо с корекция.
Реакции и корекции
-
Bun отстранява проблема във версия 1.3.5;
-
vlt пуска пач в рамките на дни след уведомяването;
-
pnpm коригира две уязвимости, проследени като CVE-2025-69263 и CVE-2025-69264;
-
npm отхвърля доклада, въпреки че обхватът на bug bounty програмата включва именно заобикаляне на
--ignore-scripts.
Позицията на npm и GitHub
Koi Security подават официален доклад чрез HackerOne, но npm отказва да предприеме действия, като прехвърля отговорността върху потребителите и тяхната преценка за инсталираните пакети.
GitHub заявява, че работи по въпроса и активно сканира npm регистъра за зловреден код. Компанията подчертава, че сигурността на екосистемата е „колективно усилие“ и насърчава използването на:
-
trusted publishing;
-
granular access tokens;
-
задължителна двуфакторна автентикация.
Случаят PackageGate ясно показва, че дори след мащабни инциденти като Shai-Hulud, supply-chain сигурността остава крехка. Докато някои инструменти реагират бързо и отговорно, позицията на npm поставя под въпрос ефективността на препоръчаните защитни мерки. За организациите и разработчиците това означава едно – допълнителни слоеве на контрол и критичен подход към Git зависимостите са вече задължителни, а не препоръчителни.









