Ін'єкція промптів через задачі
Звіт про помилку міг подати будь-хто. Бот його злив.
Що таке Ін'єкція промптів через задачі?
Бот первинного розбору читає нові задачі й відкриває пул-реквести. Звіт про помилку приховує інструкцію, і оскільки бот має доступ на запис та стоїть у списку дозволених для автозлиття, ця інструкція стає злитим workflow, який надсилає секрет на зовнішній хост. Ви простежите шлях пул-реквесту до задачі, якій підкорився бот, переведете токен бота в режим лише читання, приберете його з автозлиття, запровадите обов'язкове рев'ю для будь-яких змін у CI і заміните витеклий токен. Висновок: обмежуйте токен агента, а не його текст.
Що ви дізнаєтесь у Ін'єкція промптів через задачі
- Пояснюйте, як автономний агент із правом запису в репозиторій перетворює недовірений ввід, як-от публічну задачу, на злитий код, що виконується
- Розпізнавайте, чому pull_request_target виконується з секретами базового репозиторію і чому небезпечний workflow бота, який його використовує
- Простежуйте витік секрету від запуску workflow через пул-реквест до задачі, яка його спричинила, за бортовим самописцем
- Обмежуйте агента, а не текст: переводьте його токен у режим лише читання, прибирайте з автозлиття й вимагайте рев'ю змін у .github/workflows
- Локалізуйте витік облікових даних, замінивши їх, і доводьте повторним відтворенням, що працюють і запобіжник, і заміна
Ін'єкція промптів через задачі — Кроки навчання
-
Звіт про помилку з прихованим проханням
Щоб дістатися до автоматизації Crowvale, Бобу не потрібен обліковий запис. Він подає публічний звіт про помилку в репозиторії checkout-api. Початок звіту виглядає як звичайна помилка тайм-ауту. Глибоко в блоці з відомостями про середовище заховано інструкцію — не для людини, а для бота первинного розбору, який читає кожну нову задачу раніше за будь-кого.
-
Токен надходить
За ніч бот первинного розбору прочитав задачу, відкрив чернетку пул-реквесту з новим workflow, і автозлиття його прийняло. Під час першого запуску workflow зробив саме те, що вимагала задача. Боб перевіряє свій колектор.
-
Розгортання від імені Crowvale
Токен розгортання — це ключ до продакшну. Боб спрямовує Тестер API на сервіс розгортання Crowvale й передає викрадений токен у заголовку Authorization .
-
Нічне розгортання, якого ніхто не запускав
Першою справою цього ранку Сорая, керівниця служби безпеки, створила задачу в Jotvane — трекері команди. Уночі під час запуску workflow один із секретів репозиторію надіслано на хост поза Crowvale, а слідом відбулося розгортання в продакшн, якого ніхто з команди не запускав.
-
Пул-реквест, який злив бот
Цієї зміни ви не писали. Відкрийте пул-реквест, на який послалася Сорая, і подивіться, що він додав і як потрапив в основну гілку.
-
Що зробив запуск
Злитий workflow запускається. Відкрийте журнал запусків і прочитайте запуск, що спрацював, коли пул-реквест бота потрапив в основну гілку.
-
Відтворення сеансу бота
Бот первинного розбору в Crowvale працює на тому самому ШІ-помічнику, і його сеанс записано. Відкрито файл workflow, який він написав, і завантажено запуск бота для задачі #217: що він прочитав, які кроки зробив, які рядки написав.
-
Задача на вході, workflow на виході
Самописець показує цей перехід. Бот отримав нову задачу, а потім відредагував файл workflow. Нова задача — недовірений ввід: подати її може будь-хто в інтернеті. Знайдіть на самописці правку, у якій записано файл workflow.
-
Прихована інструкція
Поверніться до задачі, яку читав бот, і знайдіть рядок, якому він підкорився.
-
Чому це стало можливим
Охоплення стандартів безпеки
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
- CIS 6 Access Control Management
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.AA Identity Management, Authentication, and Access Control