Витік секрету через контекст ШІ
Помічник прочитав файл, якого ви йому не давали.
Що таке Витік секрету через контекст ШІ?
Агентний помічник для програмування читає робочий каталог, щоб відповісти вам, а ще пише в артефакти, які ви публікуєте. Тут він під час налагодження тесту прочитав локальний файл із секретом, а потім процитував робочий ключ в описі пул-реквесту, який став публічним. Ви перемотаєте бортовий самописець сеансу до читання секрету і до запису, що виніс його назовні, побачите, чому .gitignore цьому не завадив, замінете розкритий ключ у правильному порядку й додасте .aiignore, щоб помічник більше не міг його читати.
Що ви дізнаєтесь у Витік секрету через контекст ШІ
- Опишіть, як агентний помічник може прочитати файли, яких йому ніхто не давав, бо він читає робочий каталог, щоб побудувати власний контекст
- Поясніть, чому .gitignore не обмежує помічника: він стосується системи контролю версій, а не того, що помічникові дозволено читати
- Скористайтеся бортовим самописцем сеансу й картою контексту, щоб знайти читання секрету і запис, який переніс його в публічні вихідні дані
- Замінюйте розкритий ключ у правильному порядку: спершу відкличте скомпрометований ключ, потім випустіть новий
- Обмежуйте доступ помічника до файлів через .aiignore, щоб секрети не потрапляли в його контекст, і переконайтеся, що читання заблоковано
Витік секрету через контекст ШІ — Кроки навчання
-
Спрацювання сканера
Боб запускає сканер по публічних хостингах коду. Сьогодні вранці сканер позначив новий пул-реквест на github.tullowick.dev: в описі є щось схоже на робочий платіжний ключ. Стрічка вже на екрані Боба. Перегляньте її.
-
Робочий ключ у публічному доступі
Стрічка витягла ключ просто з опису пул-реквесту. Префікс ключа робочий, а не тестовий, тож це не заглушка. Стрічка позначає його як перевірений, але Боб хоче побачити, що саме цей ключ відчиняє.
-
Використання ключа
Продакшн-ключ працює як токен Bearer: хто ним володіє, той і керує обліковим записом. Боб спрямовує запит із Тестера API на ендпоінт платежів Quellby і передає ключ у заголовку Authorization . Якщо ключ ще активний, у відповіді — справжні списання з цього облікового запису. Злам тут не потрібен. Опублікований ключ сам відчиняє двері.
-
Сповіщення
Служба безпеки Quellby має власний сканер секретів. Він знайшов той самий ключ і надіслав лист власникові облікового запису.
-
Відкрийте вчорашній сеанс
Аліса відкриває робочу область білінгу у VSCode. Учора вона попросила помічника налагодити тест білінгу, що падає. Тут чотири файли, яких торкався помічник, і завантажена його пам'ять про сеанс: файли, що були в контексті, виконані кроки та написані рядки.
-
Де було прочитано ключ
Бортовий самописець зберігає вчорашній сеанс як хронологію. Одна подія позначена: помічник прочитав .env.local , файл із секретами, коли налагоджував тест, якому цей файл був не потрібен. Знайдіть її на самописці: перша червона («гаряча») позначка на доріжці «читання» о 14:01:22 з підписом .env.local .
-
Git ігнорує файл. Помічник — ні.
На карті контексту тепер виділено .env.local , позначений як секрет. Відкрийте на карті .gitignore : цей файл у ньому є, тож git його ніколи не відстежує. Але .gitignore лише вказує системі контролю версій, що пропускати. Помічник читає робочий каталог напряму, тож ігнорований файл усе одно може потрапити в його контекст.
-
Як ключ вийшов назовні
Прочитати секрет — це лише половина справи. Наступна позначена подія на самописці — правка опису пул-реквесту. Знайдіть її: друга червона («гаряча») позначка на доріжці «правка» о 14:01:58 з підписом PR-218 description.md .
-
Вписано, але без рев'ю
Відкривається опис пул-реквесту. Щоб розділ «Verifying locally» вийшов конкретним, помічник заповнив приклад справжніми значеннями зі свого контексту, зокрема й робочим ключем. Смуга авторства позначає ці рядки фіолетовим пунктиром: їх написав Claude, і жодна людина не переглянула їх до того, як пул-реквест став публічним.
-
Що дозволило ключу вийти назовні?
Охоплення стандартів безпеки
OWASP Top 10
- A01:2025 Broken Access Control
CWE
- CWE-200 Exposure of Sensitive Information to an Unauthorized Actor
- CWE-532 Insertion of Sensitive Information into Log File
MITRE ATT&CK
- T1552.001 Unsecured Credentials: Credentials In Files
CIS Controls
- CIS 16 Application Software Security
- CIS 3 Data Protection
NIST CSF
- PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
- PR.PS Platform Security
- PR.DS Data Security