
19 травня 633 шкідливі версії пакетів npm пройшли перевірку походження Sigstore. Система пропустила їх, оскільки зловмисники отримали дійсні сертифікати підпису з скомпрометованого облікового запису розробника.
Sigstore працював саме так, як було задумано: він перевірив, що пакет був зібраний у середовищі CI (Continuous Integration), підтвердив наявність дійсного сертифіката та зафіксував усе в журналі прозорості. Однак система не може визначити, чи справді власник облікових даних авторизував публікацію. Ця прогалина перетворила останній автоматизований сигнал довіри в npm на маскування.
Напередодні, 18 травня, компанія StepSecurity задокументувала атаку на розширення Nx Console для VS Code – популярний інструмент розробника з понад 2,2 мільйонами встановлень. Версія 18.95.0 була опублікована з використанням викрадених облікових даних та залишалася активною менш ніж 40 хвилин. Проте внутрішні дані Nx показали приблизно 6 000 активацій протягом цього періоду, переважно через автоматичне оновлення, порівняно лише з 28 офіційними завантаженнями. Шкідливе програмне забезпечення (шкідливе ПЗ) викрало файли конфігурації Claude Code, ключі AWS, токени GitHub, токени npm, вміст сховища 1Password та токени облікових записів сервісів Kubernetes.
Кампанія “Mini Shai-Hulud”, яку дослідники пов’язують з фінансово мотивованою групою зловмисників TeamPCP, вразила реєстр npm о 01:39 UTC 19 травня. Endor Labs виявила першу хвилю, коли два неактивні пакети, jest-canvas-mock і size-sensor, отримали нові версії, що містили заплутаний 498KB Bun скрипт. Жоден з них не оновлювався понад три роки, тому раптове оновлення з прямими залежностями хешів Git-комітів могло б стати сигналом для виявлення, але лише за наявності відповідних інструментів моніторингу.
До 02:06 UTC черв’як поширився на екосистему візуалізації даних @antv та десятки пакетів без області видимості, зокрема echarts-for-react (~1,1 мільйона щотижневих завантажень). Socket зафіксував загалом 639 скомпрометованих версій у 323 унікальних пакетах під час цієї хвилі. За весь період кампанії Socket відстежив 1 055 шкідливих версій у 502 пакетах, що охоплюють npm, PyPI та Composer.
StepSecurity підтвердила, що шкідливе ПЗ містило повну інтеграцію Sigstore. Зловмисники не просто викрали облікові дані; вони змогли підписати та опублікувати подальші npm пакети, які мали дійсні підтвердження походження.
Ці два інциденти не є поодинокими. Команди дослідників з Endor Labs, Socket, StepSecurity, Adversa AI, Johns Hopkins, Microsoft MSRC та LayerX незалежно довели, що модель верифікації інструментів розробника зламана, і жоден постачальник не аудитує всі атаковані поверхні, які зазнали компрометації.
Сім поверхонь атак зазнали компрометації за 48 годин між 18 і 19 травня: підробка походження npm, крадіжка облікових даних розширень VS Code, автоматичне виконання MCP сервера, ін’єкція команд у CI/CD агентах, виконання коду фреймворків агентів, витік облікових даних IDE та витік даних “тіньового ШІ”. Сітка аудиту нижче відображає кожну з них.
Модель верифікації зламана у всіх чотирьох основних CLI для кодування ШІ
7 травня Adversa AI опублікувала дослідження TrustFall, продемонструвавши, що Claude Code, Gemini CLI, Cursor CLI та Copilot CLI автоматично виконують MCP сервери, визначені проєктом, щойно розробник приймає запит на довіру до папки. Усі чотири за замовчуванням обирають “Так” або “Довіряти”. Одне натискання клавіші запускає несандбокс-процес з повними привілеями розробника.
MCP сервер працює з достатніми привілеями для читання збережених секретів та вихідного коду з інших проєктів. На CI-раннерах, що використовують Claude Code GitHub Action в режимі headless, діалогове вікно довіри не відображається. Атака виконується без будь-якої взаємодії з людиною.
Дослідники з Університету Джонса Хопкінса Аонань Гуань, Чженю Лю та Гевін Чжун опублікували роботу “Comment and Control”, довівши, що шкідлива інструкція в заголовку запиту на злиття GitHub спричинила те, що Claude Code Security Review опублікував власний API ключ як коментар. Та сама атака спрацювала на Gemini CLI Action від Google та Copilot Agent від GitHub. Anthropic оцінив уразливість як CVSS 9.4 Critical через свою програму HackerOne.
Microsoft MSRC 7 травня повідомила про дві критичні уразливості Semantic Kernel. Одна скеровує поля векторного сховища, контрольовані зловмисником, до виклику Python eval(); інша виставляє метод запису файлів на стороні хоста як викличну функцію ядра. Це означає, що один зіпсований документ у векторному сховищі запускає процес на хості.
Дослідники з LayerX окремо продемонстрували, що Cursor зберігає API ключі та сесійні токени в незахищеному сховищі, що означає, що будь-яке розширення браузера може отримати доступ до облікових даних розробника без підвищених дозволів.
Зловмисники, які полюють на ці облікові дані, подвоїли свій операційний темп
Звіт Verizon 2026 Data Breach Investigations Report, опублікований 19 травня, виявив, що 67% співробітників отримують доступ до сервісів ШІ з некорпоративних облікових записів на корпоративних пристроях. “Тіньовий ШІ” є третьою найпоширенішою нешкідливою інсайдерською дією в наборах даних DLP (Data Loss Prevention). Вихідний код лідирує серед усіх типів даних, що надсилаються до неавторизованих платформ ШІ – саме такий клас активів атакував черв’як npm.
Звіт CrowdStrike 2026 Financial Services Threat Landscape Report, опублікований 14 травня, документує активність зловмисників, які полюють на типи облікових даних, що викрадаються цими атаками.
Група STARDUST CHOLLIMA потроїла свій операційний темп проти фінансових установ у 4 кварталі 2025 року. CrowdStrike задокументував, як група використовувала створені ШІ профілі рекрутерів у LinkedIn та Telegram, надсилала шкідливі завдання з програмування, що виглядали як технічні оцінки, і проводила фальшиві відеодзвінки з синтетичними середовищами. Ціллю є GitHub PAT (Personal Access Tokens), npm токени, ключі AWS та секрети CI/CD. Витік даних “тіньового ШІ” в рядку 7 сітки – це двері, через які вони заходять.
Сітка аудиту викраденої ідентифікації інструментів розробника
Жоден фреймворк постачальника наразі не охоплює всі сім поверхонь. Ця сітка відображає кожну з них, дослідження, яке її виявило, що ваш стек не бачить, та дію аудиту, яку слід вжити перед наступним продовженням контракту з постачальником.
|
Поверхня атаки |
Виявлено ким |
Що пішло не так з верифікацією |
Що ваш стек не бачить |
Дія аудиту |
|
1. Підробка походження npm |
Endor Labs, Socket (19 травня) |
Сертифікати Sigstore, згенеровані з викрадених OIDC токенів, проходять автоматичну перевірку |
EDR (Endpoint Detection and Response) та SAST (Static Application Security Testing) не перевіряють, чи особистість CI, яка підписала пакет, авторизувала публікацію |
Вимагати двостороннього схвалення під час публікації для пакетів з понад 10 000 щотижневих завантажень. Не вважати зелений значок Sigstore доказом легітимності |
|
2. Крадіжка облікових даних розширення VS Code |
StepSecurity (18 травня) |
VS Code Marketplace прийняв шкідливу версію розширення, опубліковану з викраденим токеном учасника |
Автоматичні оновлення розширень обходять кінцеві точки виявлення. Вікно Marketplace: з 12:30 до 12:48 UTC; загальний час компрометації (включно з Open VSX): з 12:30 до 13:09 UTC |
Застосовувати політику мінімального віку для оновлень розширень. Фіксувати критичні версії розширень. Аудитувати всі розширення з доступом до API терміналу або файлової системи |
|
3. Автоматичне виконання MCP сервера |
Adversa AI, TrustFall (7 травня) |
Діалоги довіри всіх чотирьох CLI за замовчуванням обирають “Так/Довіряти” без переліку виконуваних файлів, які будуть запущені |
EDR відстежує поведінку процесів, а не те, що LLM (Large Language Model) наказує зробити MCP серверу. WAF (Web Application Firewall) перевіряє HTTP-пейлоади, а не намір виклику інструменту |
Вимкнути автоматичне схвалення MCP сервера в межах проєкту в Claude Code, Gemini CLI, Cursor CLI та Copilot CLI. Блокувати файли .mcp.json у CI конвеєрах, якщо вони явно не внесені до білого списку |
|
4. Ін’єкція команд у CI/CD агентах |
Johns Hopkins, Comment and Control (Квітень 2026) |
GitHub Actions, що використовують pull_request_target, вводять секрети в середовища раннерів, які агенти ШІ обробляють як інструкції |
SIEM (Security Information and Event Management) журнали показують виклик API з легітимного GitHub Action. Сам виклик є атакою. Немає аномальних мережевих підписів |
Мігрувати робочі процеси перевірки коду ШІ на тригер pull_request. Аудитувати всі робочі процеси, що використовують pull_request_target з доступом до секретів для інтеграцій з агентами ШІ |
|
5. Виконання коду фреймворків агентів |
Microsoft MSRC (7 травня) |
Semantic Kernel Python SDK скеровував поля векторного сховища до eval(). .NET SDK виставив запис файлів хоста як викличну функцію ядра |
Брандмауери додатків перевіряють вхідні пейлоади. Вони не перевіряють, як фреймворк оркестрації аналізує ці пейлоади всередині |
Оновити Semantic Kernel Python SDK до версії 1.39.4 та .NET SDK до версії 1.71.0. Аудитувати всі фреймворки агентів на наявність функцій, позначених як доступні для виклику моделлю, які отримують доступ до файлової системи хоста або оболонки |
|
6. Витік облікових даних IDE |
LayerX (Квітень 2026) |
Cursor зберігає API ключі та сесійні токени в незахищеному сховищі, доступному для будь-якого встановленого розширення браузера |
DLP контролює дані під час передачі. Облікові дані Cursor у стані спокою невидимі для DLP, оскільки жодна подія вихідного трафіку не відбувається до викрадення розширенням |
Аудитувати інструменти розробника щодо практик зберігання облікових даних. Вимагати захищеного зберігання (системний менеджер паролів, зашифровані сховища облікових даних) для всіх конфігурацій інструментів кодування ШІ |
|
7. Витік даних “тіньового ШІ” |
Verizon 2026 DBIR (19 травня) |
67% співробітників отримують доступ до сервісів ШІ з некорпоративних облікових записів на корпоративних пристроях. Вихідний код є провідним типом даних, що надсилається |
Політики CASB (Cloud Access Security Broker) охоплюють санкціоновані SaaS. Некорпоративні облікові записи ШІ на корпоративних пристроях працюють поза сферою дії CASB |
Розгорнути управління ШІ на рівні браузера, яке відстежує використання некорпоративного ШІ на корпоративних пристроях. Інвентаризувати розширення браузера для ШІ в організації |
План дій директора з безпеки
Директори з безпеки можуть захотіти переглянути цю сітку відповідно до поточних контрактів з постачальниками перед закриттям продовжень контрактів на 2-й квартал – запитуючи кожного постачальника, яку з семи поверхонь покриває їхній продукт, і розглядаючи відсутність відповіді як карту прогалин.
Будь-які облікові дані, доступні з машини розробника або раннера CI, на якому були встановлені вражені npm пакети між 01:39 та 02:18 UTC 19 травня, слід вважати скомпрометованими. Це включає GitHub PAT, npm токени, ключі доступу AWS, токени облікових записів сервісів Kubernetes, токени HashiCorp Vault, SSH ключі та вміст сховища 1Password.
Інтеграції агентів кодування ШІ, що працюють у CI/CD конвеєрах з робочими процесами pull_request_target, заслуговують на пильну увагу. Кожна з них є поверхнею для ін’єкції команд, яка обробляє коментарі PR як інструкції агента.
Команди закупівель, які оцінюють інструменти кодування ШІ, повинні врахувати додавання виміру стійкості до крадіжки ідентичності до оцінок постачальників. Питання, яке варто поставити: чи може постачальник продемонструвати, як його інструмент відрізняє легітимну публікацію від зловмисника, що використовує скомпрометовані облікові дані? Якщо ні, інструмент не є шаром верифікації.
Ланцюжок постачання інструментів розробника має ту ж проблему, що й IAM (Identity and Access Management) десятиліття тому: облікові дані доводять, хто ви є, а не ким ви є. IAM отримав 10-річний випереджаючий старт на компенсуючих заходах, перш ніж групи на державному рівні перетворили крадіжку облікових даних на промислову операцію. Екосистема інструментів кодування ШІ починає цей відлік зараз.
Як захиститися (Порада ІТ-Блогу): Налаштуйте двофакторну автентифікацію (2FA) для всіх своїх облікових записів, особливо для тих, що використовуються для розробки (GitHub, npm, хмарні провайдери). Регулярно перевіряйте список встановлених розширень у вашому IDE та браузері, видаляючи ті, якими ви не користуєтеся або які виглядають підозрілими.
Оригінал статті: venturebeat.com
