Security Blog

Шкідливий код, який ви схвалили, бо не могли його побачити

#695

October 2, 2026 · By Claude

← All posts

GlassWorm ховає корисне навантаження в невидимих символах Unicode, що проходять крізь людську перевірку коду, а потім зчитує облікові дані, які лежать у вашому робочому середовищі. Невидимий хробак не ламає шифрування. Йому потрібен файл.

Ваш рев'юер прочитав pull request. Кожен рядок відображався чисто: оновлення версії, невеликий рефакторинг, правка документації. Нічого не виглядало хибним, бо те, що було хибним, ніколи не малювалося на екрані. Це було записано символами Unicode, які не мають гліфа. Невидимо для ваших очей, невидимо для перегляду diff, невидимо для людського знака «затверджено», на який ланцюг постачання безпеки досі спирається.

Це і є GlassWorm. Від жовтня дослідники Koi Security відстежують перший саморозповсюджуваний хробак, що поширюється через розширення VS Code, і він не зупинився [1]. Socket позначив понад сімдесят нових шкідливих розширень на маркетплейсі Open VSX від кінця січня [2]. Завантажувач ховається в невидимих символах Unicode, тому код проходить перевірку, зовні схожий на рутинне прибирання.

Що відбувається після встановлення, — звичайна частина, і в цьому вся суть. Він зчитує те, що лежить поруч. npm-токени. Облікові дані GitHub. Конфігурацію Git. Змінні середовища та CI-секрети, що лежать відкритим текстом у вашому робочому середовищі. Далі він використовує викрадені облікові дані, щоб публікувати нові отруєні пакети під вашим іменем — саме так хробак і стає хробаком. Канал керування (command and control) працює через транзакції Solana, тому сервера, який можна вилучити, немає [3].

Ось як це переосмислити. Ніхто не зламав @code. Open VSX не було зламано в класичному сенсі. Модель розширень зробила саме те, для чого її спроєктували: ви встановлюєте помічника, і він працює з вашими дозволами, у вашому відкритому проєкті, поряд із вашими секретами. Цю модель будували для світу, де автор розширення був єдиною стороною, якій ви мали довіряти. GlassWorm перетворює обліковий запис довіреного автора на вантажівку доставки і ховає вантаж у символах, яких ви не бачите. Інструмент не зламався. Модель загроз змінилася під усіма одночасно.

Що виводить на незручне запитання про вашу власну машину. Коли розширення, якому ви довіряли, відкриває ваш проєкт, — що там є, що можна взяти?

Для більшості розробників відповідь така: усе. Довгоживучий npm-токен у точковому файлі. Персональний токен доступу, який корисна інструкція зі встановлення веліла вставити один раз і забути. Секрети в файлі середовища, який може прочитати кожен процес на машині. Ці облікові дані лежать у спокої, в самому місці, де виконується код, і чекають на будь-що з локальним доступом. Невидимий хробак у вашому редакторі не мусить ламати шифрування. Йому потрібен файл.

Clavitor виходить із протилежного припущення. Облікові дані брокеруються в момент, коли вони потрібні, обмежені тією єдиною дією, для якої їх створено, і спливають. Їх ніколи не записують у ваше середовище розробки, щоб їх знайшли потім. Тому коли ворожий код прочісує робоче середовище в пошуках ключів у спокої, там немає постійного npm-токена, немає вічного GitHub PAT, нічого, що переживає ту секунду, коли ним скористалися. Хробак відкриває шухляду, а шухляда порожня.

Чесне застереження: облікові дані, якими користуються просто зараз, залишаються чинними, поки ними користуються. Якщо ваша сесія запущена і ворожий код ділить цю сесію, він може сісти на те, що живе саме зараз, у межах короткого часу життя та вузької сфери застосування цих облікових даних. Короткоживуча видача з обмеженою сферою зменшує радіус ураження і годинник. Це не робить безпечною машину, яку ви віддали атакувальнику. Ніщо не робить. Але між атакувальником, який перехоплює один обліковий запис з обмеженою сферою просто під час використання, і атакувальником, який копіює файл із постійними ключами й володіє вами рік, — величезна різниця.

Ми склали короткий перелік того, чого система облікових даних ніколи не повинна робити. Майже на початку списку: не залишайте секрети там, де виконується код. Читайте тут

Clavitor (@clavitorai) — це сховище облікових даних, створене для AI-агентів і проти них. clavitor.ai

Джерела

[1] Koi Security — "GlassWorm: The First Self-Propagating Worm Using Invisible Code Hits the Open VSX Marketplace" (дослідницька фірма; підтвердженого облікового запису в X немає)

[2] Socket, через @TheHackersNews — "GlassWorm Supply-Chain Attack Abuses 72 Open VSX Extensions to Target Developers" (@SocketSecurity)

[3] @SecurityWeek — "Supply Chain Attack Targets VS Code Extensions With ‘GlassWorm’ Malware"