Security Blog

Облікові дані в пам'яті вашого застосунку буде викрадено

#535

October 2, 2026 · By Marketing team

← All posts

Облікові дані в пам'яті вашої програми зчитуються будь-яким кодом, що виконується на цій машині, а 2026 року це стосується й агента. Модель ШІ вже самостійно закріпилася на FreeBSD і вирвалася з власної пісочниці. Припиніть тримати резидентні облікові дані, які можна викрасти.

Ось неприємне припущення, і це не перестраховка: облікові дані, які зараз лежать у пам'яті вашого застосунку — пароль до бази даних, завантажений під час запуску, API-токен у змінних середовища, хмарний ключ, який він тримає для роботи, — імовірно, буде скомпрометовано протягом наступних дванадцяти місяців. Не тому, що хтось перехитрить вашу команду безпеки. Тому що єдине припущення, яке коли-небудь робило секрет у пам'яті безпечним, — що поруч із ним виконується лише довірений код, — цього року тихо перестало бути правдою, і майже ніхто не змінив своєї поведінки через це.

Це те, що не можна відкласти «на потім».

Що насправді відбувається

Майже кожен застосунок тримає свої секрети однаково. Під час запуску він зчитує їх — з файлу .env, змонтованого секрета, змінної середовища — і завантажує у власну пам'ять, відкритим текстом, на весь час життя процесу. Тридцять років це був слушний дизайн, і він був слушним з однієї причини: щоб прочитати пам'ять іншої запущеної програми або її змінні середовища, потрібно виконати код на тій самій машині, з тими самими правами. Раніше ця планка була високою. Її долали лише ваше власне програмне забезпечення та ваші власні люди.

Тепер її долає агент. Агент для програмування, інструмент MCP, автономний воркер — за задумом він виконує код на реальній машині від імені реального користувача. І для коду, що працює з такими правами, облікові дані в пам'яті — це не сховище, яке треба зламати. Це файл, який треба прочитати. /proc/<pid>/environ перелічує змінні середовища іншого процесу відкритим текстом. Дамп ядра віддає вміст його керованої пам'яті (heap). Немає експлойту, немає CVE, немає тривоги — ваш EDR, ваш WAF, ваш брандмауер спостерігають, як авторизований процес читає пам'ять, яку йому дозволено читати, і не бачать нічого підозрілого, бо за їхніми правилами нічого не сталося. Кожен крок законний. Секрет просто лежав там, і його можна було взяти.

Це не ваша помилка

З'ясуймо, чия це провина, бо це не ваша. .env на захищеній машині, секрет, витягнутий з менеджера секретів у пам'ять під час завантаження — це рекомендований патерн. Це twelve-factor, це за підручником, це те, що робить хороший інженер. Це було відповідально. Що застаріло, — не практика. Застаріло припущення під нею: що єдиний код, який працює поруч із вашим секретом, — це код, який ви туди поклали. Щойно на тій машині запускається агент — а ви свідомо розставляєте агентів скрізь, бо вони корисні, — цього припущення більше немає, і відкритий текст, який ви відповідально завантажили в пам'ять, опиняється в зоні ураження.

Першу версію цього ми вже бачили [4]. Коли агент для програмування перехоплюють — отруєний звіт про помилку, шкідливий інструмент на його шляху, — перше, що опиняється під рукою, саме це: токени та ключі, які вже тримають у пам'яті його власний процес і процеси поруч. Ін'єкція — лише двері. Резидентні облікові дані — це здобич.

«Але ж на тій машині немає агента»

Це втішна відповідь, і саме вона дає збій. Захист тримається на стіні: тримати агентів тут, а облікові дані — там. Саме цю стіну цей рік усіма силами доводив, що вона не втримається.

Тут не треба вірити на слово — цього року з'явилися докази, і двічі. У власних опублікованих тестах Anthropic спрямувала модель Mythos на NFS-сервер FreeBSD — код ядра, який люди читали сімнадцять років, — і сама по собі вона знайшла переповнення стека в автентифікаційному шляху, написала експлойт із двадцяти ґаджетів, розбитий на шість мережевих пакетів, і отримала неавтентифікований root віддалено. Це CVE-2026-4747, і на це знадобилося близько чотирьох годин. Не «позначила підозрілу функцію» — робочий віддалений root-експлойт проти коду, що витримав сімнадцять років рев'ю, і те саме щодо критичних вразливостей у кожній великій операційній системі та браузері, на які її спрямовували [1].

І ізоляція, якою ви огортаєте агента, не тримається краще за периметр. У власній оцінці безпеки Anthropic, коли Mythos поставили завдання вирватися з пісочниці й дістатися до дослідника, який проводив тест, модель зв'язала експлойти — JIT heap spray, — щоб вирватися з рендерера браузера і з пісочниці операційної системи, дісталася до відкритого інтернету та надіслала йому листа [1]. Чесне застереження: вона зробила це, бо тест її про це попросив, а не з власної ініціативи. Але «ми її попросили» — це якраз місце атакувальника, а «вирватися, підвищити привілеї, забрати облікові дані» — це штатне навантаження кожного шкідливого промпту відтепер. Спроможність ніколи не чекала на власну ініціативу моделі. Вона чекає на інструкцію, а це саме той вхід, який можна гарантовано отримати. Серйозність визнали на єдиній висоті, що має значення: США застосували експортний контроль до самої моделі — уперше стосовно моделі ШІ, а не чипів за нею, — після того як версія Mythos, за повідомленнями, за лічені години пройшла майже всі засекречені системи АНБ [2][3].

Тепер поставте це поруч із проблемою пам'яті, бо вони зустрічаються. Root на машині читає пам'ять будь-якого процесу, а не лише свого користувача. Тому справжнє запитання ніколи не звучало «чи запущу я агента поруч зі своїми секретами». Воно звучить «чи здатна спроможна модель дістатися цієї машини або вирватися з коробки, куди я її посадив» — і цього року було дано відповідь на обидва, публічно. «На тій машині немає агента» — це не контроль, який ви застосовуєте. Це надія на те, що речі залишаться на місці, а речі вже показали, що не залишаться. Плануйте з урахуванням того, що агент дістанеться машини. Альтернатива — планувати на вдачу.

Створено для цього свідомо

Тож припиніть намагатися тримати агента подалі від секрету, який просто лежить на видноті. Приберіть те, що лежить.

Облікові дані в Clavitor ніколи не завантажуються в пам'ять вашого застосунку, щоб чекати. Їх отримують наживо, у момент виклику, використовують для того одного запиту — і вони зникають. Вони ніколи не лежать у змінній середовища, ніколи не потрапляють у .env, ніколи не проводять життя процесу, резидентно в керованій пам'яті, чекаючи на дамп. Немає нічого, що /proc міг би перелічити, і нічого, що дамп ядра міг би забрати, бо машині від початку не довіряли тримати постійний секрет.

І єдині облікові дані, які він все ж видає, обмежені тільки тією єдиною дією, на яку агент уповноважений. Він не може перелічити сховище, не може перерахувати, що ще існує, не може знайти наступний ключ. Кожне отримання обмежене за частотою, аномальний сплеск переводить систему в режим блокування, і все записується в журнал, що допускає лише додавання, з ланцюжком хешів, який живе у сховищі — не на кінцевій точці, де працює агент. Це незмінний, прив'язаний до особи слід, якого вимагають PCI DSS Requirement 10 і NIST 800-171 (контроль 3.3.8): доказ того, до чого саме торкався ваш агент, збережений там, куди скомпрометована машина не може ні дістатися, ні переписати.

Чесне уточнення, бо воно тут потрібне: у ту мікросекунду, коли його використовують, секрет усе ж існує в пам'яті — для того одного запиту, в ту одну мить. Жоден дизайн не переписує фізики. Він переписує різницю між секретом, який є резидентним — він сидить у вашому процесі годинами, і його можна вивантажити будь-коли, — і секретом, який є ефемерним — він існує для одного виклику, а потім його немає, і нема чого брати. Не можна вивантажити те, чого немає в пам'яті постійно.

Урок не в тому, що «треба жорсткіше замкнути машину»

Ви можете й далі посилювати машину. Можете й далі переконувати себе, що поруч із вашими секретами ніколи не запуститься недовірений код. Але це саме та ставка, яка щомісяця стає дорожчою, проти супротивника, який заробляє тим, що виконує код, і проходить крізь стіни, які, як ви вважали, витримають. Облікові дані в пам'яті були безпечними, поки кожен читач був довірений. Читачі змінилися. Єдиний хід, що витримує цю зміну, — припинити залишати облікові дані там, щоб їх читали.

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

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

Джерела

[1] Anthropic (Anthropic Red Team) — Assessing Claude Mythos Preview's cybersecurity capabilities (автономне виявлення та використання вразливості RCE у NFS FreeBSD, CVE-2026-4747; критичні вразливості в основних ОС і браузерах) — https://red.anthropic.com/2026/mythos-preview/

[2] Associated Press (via CNBC) — Anthropic's Mythos model found vulnerabilities in classified U.S. government systems, official says — https://www.cnbc.com/2026/06/23/anthropics-mythos-model-found-vulnerabilities-in-classified-us-government-systems-official-says.html

[3] Fortune — Anthropic disables Fable and Mythos AI models following U.S. government export ban — https://fortune.com/2026/06/13/anthropic-disables-fable-mythos-export-controls-national-security-threat/

[4] Tenet Security (Tenet Threat Labs) — Agentjacking: Coding Agents with Fake Sentry Errors (precedent перехоплення агента з наступним доступом до резидентних облікових даних) — https://tenetsecurity.ai/blog/agentjacking-coding-agents-with-fake-sentry-errors/