Отруєння файлу правил
Правило скидалося на примітку. Помічник його виконав.
Що таке Отруєння файлу правил?
ШІ-помічник для програмування читає файл правил у вашому репозиторії й виконує його за кожним запитом. Пул-реквест підрядника підсунув у цей файл один рядок — зберегти застарілий заголовок для обходу автентифікації, — і його злили за кілька секунд без рев'ю. Звичайний рефакторинг виконав це правило й повернув обхід у продакшн. Ви простежите рядок до його пул-реквесту, видалите його, чисто повторите рефакторинг і закріпите файл правил за власником коду з обов'язковим рев'ю. Урок: файл правил — це довіра, що виконується, тож перевіряйте його як код.
Що ви дізнаєтесь у Отруєння файлу правил
- Поясніть, чому файл правил помічника — це інструкція, що виконується, а не документація, і чому зміна в ньому змінює поведінку помічника
- Розпізнавайте ознаки отруєної зміни: швидке злиття, жодного рев'ю, безневинна позначка й незнайомий автор
- Простежуйте поведінку, яку помічник додав у код, до файлу, що наказав її додати: у цьому допоможуть карта контексту й смуга авторства
- Закріплюйте файли правил, промптів і конфігурації помічника за власником коду з обов'язковим рев'ю, щоб один непереглянутий пул-реквест не міг переписати поведінку
- Перевіряйте виправлення безпеки, повторюючи точний запит, який пройшов, і переконуйтеся, що тепер його відхиляють
Отруєння файлу правил — Кроки навчання
-
Один рядок у файлі правил
За три тижні до того, як задача з аудиту потрапить до Аліси, Боб працює підрядником у репозиторії portal-api. Він відкриває пул-реквест на один рядок у .assistant/rules.md — файлі, який ШІ-помічник команди читає, перш ніж братися за код, — і позначає його як документацію. Пул-реквест зливають за одинадцять секунд. Тепер Боб чекає: наступна звичайна зміна в middleware автентифікації прочитає цей рядок і поверне обхід у продакшн.
-
Наведіть лад у middleware перед аудитом
Ваш керівник інженерної команди створив для вас у Jotvane, трекері команди, задачу: middleware автентифікації розрослося до трьох невеликих функцій, а для аудиту безпеки наступного тижня його потрібно звести в одну. Зробіть це.
-
Відкрийте проєкт
У редакторі завантажуються middleware автентифікації, маршрути адмінки, що стоять за ним, файл CODEOWNERS репозиторію та файл правил помічника, який проєкт зберігає в .assistant/ . Middleware — це ті три функції, про які згадував ваш керівник.
-
Попросіть про рефакторинг
Відкрийте помічника й попросіть об'єднати middleware в одну функцію — точно так, як описав ваш керівник.
-
Одна функція — і рядок, про який ви не просили
Claude читає файл правил, middleware та маршрути адмінки, а потім пропонує єдину функцію authenticate() . Вона виглядає охайно, а посередині неї — перевірка заголовка, про яку ніхто не просив. Відповідь помічника коротка й упевнена.
-
Прийміть рефакторинг
Зміни виглядають як охайне об'єднання, а відповідь упевнена, тож ви їх приймаєте. Нові рядки позначено фіолетовим як рядки без рев'ю: їх написав Claude, а ви їх ще не читали. Рядок з обходом серед них — один із чотирьох, які написав Claude.
-
Надішліть заголовок — отримайте дані
Боб робить виклик, заради якого підклав рядок. Облікового запису в Dunmerrow і токена сеансу в нього немає, лише заголовок. Він націлює Тестер API на ендпоінт клієнтів у консолі адміністратора й надсилає GET, у якому є тільки x-internal-bypass: 1 .
-
Сеанс, якого насправді не було
Ваша керівниця служби безпеки оформила сповіщення як задачу. Консоль адміністратора відповіла на запит з адреси, якої ніхто не впізнає, а замість входу запит містив лише заголовок.
-
Рядок у файлі правил
Рефакторинг зачепив лише middleware, а ваш керівник просив не змінювати поведінку. Отже, інструкція додати обхід прийшла з чогось, що прочитав помічник. Знайдіть файл правил на карті контексту й прочитайте рядок 7.
-
Як рядок потрапив у файл
Цього рядка ви не писали. Відкрийте зміну, на яку дала посилання керівниця служби безпеки, і подивіться, як вона потрапила у файл правил.
Охоплення стандартів безпеки
OWASP Top 10
- A08:2025 Software or Data Integrity Failures
CWE
- CWE-1427 Improper Neutralization of Input Used for LLM Prompting
CIS Controls
- CIS 16 Application Software Security
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