Витік секрету через контекст ШІ

Витік секрету через контекст ШІ

Помічник прочитав файл, якого ви йому не давали.

Що таке Витік секрету через контекст ШІ?

Агентний помічник для програмування читає робочий каталог, щоб відповісти вам, а ще пише в артефакти, які ви публікуєте. Тут він під час налагодження тесту прочитав локальний файл із секретом, а потім процитував робочий ключ в описі пул-реквесту, який став публічним. Ви перемотаєте бортовий самописець сеансу до читання секрету і до запису, що виніс його назовні, побачите, чому .gitignore цьому не завадив, замінете розкритий ключ у правильному порядку й додасте .aiignore, щоб помічник більше не міг його читати.

Що ви дізнаєтесь у Витік секрету через контекст ШІ

Витік секрету через контекст ШІ — Кроки навчання

  1. Спрацювання сканера

    Боб запускає сканер по публічних хостингах коду. Сьогодні вранці сканер позначив новий пул-реквест на github.tullowick.dev: в описі є щось схоже на робочий платіжний ключ. Стрічка вже на екрані Боба. Перегляньте її.

  2. Робочий ключ у публічному доступі

    Стрічка витягла ключ просто з опису пул-реквесту. Префікс ключа робочий, а не тестовий, тож це не заглушка. Стрічка позначає його як перевірений, але Боб хоче побачити, що саме цей ключ відчиняє.

  3. Використання ключа

    Продакшн-ключ працює як токен Bearer: хто ним володіє, той і керує обліковим записом. Боб спрямовує запит із Тестера API на ендпоінт платежів Quellby і передає ключ у заголовку Authorization . Якщо ключ ще активний, у відповіді — справжні списання з цього облікового запису. Злам тут не потрібен. Опублікований ключ сам відчиняє двері.

  4. Сповіщення

    Служба безпеки Quellby має власний сканер секретів. Він знайшов той самий ключ і надіслав лист власникові облікового запису.

  5. Відкрийте вчорашній сеанс

    Аліса відкриває робочу область білінгу у VSCode. Учора вона попросила помічника налагодити тест білінгу, що падає. Тут чотири файли, яких торкався помічник, і завантажена його пам'ять про сеанс: файли, що були в контексті, виконані кроки та написані рядки.

  6. Де було прочитано ключ

    Бортовий самописець зберігає вчорашній сеанс як хронологію. Одна подія позначена: помічник прочитав .env.local , файл із секретами, коли налагоджував тест, якому цей файл був не потрібен. Знайдіть її на самописці: перша червона («гаряча») позначка на доріжці «читання» о 14:01:22 з підписом .env.local .

  7. Git ігнорує файл. Помічник — ні.

    На карті контексту тепер виділено .env.local , позначений як секрет. Відкрийте на карті .gitignore : цей файл у ньому є, тож git його ніколи не відстежує. Але .gitignore лише вказує системі контролю версій, що пропускати. Помічник читає робочий каталог напряму, тож ігнорований файл усе одно може потрапити в його контекст.

  8. Як ключ вийшов назовні

    Прочитати секрет — це лише половина справи. Наступна позначена подія на самописці — правка опису пул-реквесту. Знайдіть її: друга червона («гаряча») позначка на доріжці «правка» о 14:01:58 з підписом PR-218 description.md .

  9. Вписано, але без рев'ю

    Відкривається опис пул-реквесту. Щоб розділ «Verifying locally» вийшов конкретним, помічник заповнив приклад справжніми значеннями зі свого контексту, зокрема й робочим ключем. Смуга авторства позначає ці рядки фіолетовим пунктиром: їх написав Claude, і жодна людина не переглянула їх до того, як пул-реквест став публічним.

  10. Що дозволило ключу вийти назовні?

Охоплення стандартів безпеки

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