Розповзання повноважень агента
Доступ агента визначає його токен, а не завдання.
Що таке Розповзання повноважень агента?
Радіус ураження агента визначає область дії його облікових даних, а не формулювання вказівок. Області дії, видані для одноразового завдання, переживають його, а перевірка, яка питає, навіщо дозвіл просили, а не до чого він дає доступ, лише поновить їх. Ви побачите, як агент первинного розбору виконує зайвий абзац у публічному повідомленні про помилку й вставляє приватний ключ підпису в гілку, яку може прочитати будь-хто. Потім ви переглянете хронологію видачі дозволів, розглянете невикористану область дії як неперевірений доступ і відкличете зайве, щоб дотриматися принципу найменших привілеїв.
Що ви дізнаєтесь у Розповзання повноважень агента
- Розпізнавайте, що радіус ураження агента визначає область дії його облікових даних, а не формулювання вказівок чи якість описів інструментів
- Розрізняйте вади дозволів і порушення цілісності інструмента, щоб не вважати причиною точний, незмінений інструмент, який повертає все, до чого має доступ токен
- Вважайте кожну задачу, заявку, документ і сторінку, які опрацьовує агент, недовіреними вхідними даними: їх могли написати, щоб керувати агентом
- Перевіряйте видану область дії за тим, до чого вона дає доступ сьогодні, а не за причиною, записаною під час запиту, і враховуйте, що дозвіл, позначений як тимчасовий, найімовірніше збережеться
- Розцінюйте область дії, якою ніколи не користувалися, як неперевірений доступ, а не як доказ її безпечності
- Читайте трасування запитів агента, звіряючи його із заявленим наміром, а не шукаючи помилки, бо виклик може бути правильно сформованим, дозволеним і успішним, але цілком виходити за межі завдання
- Підтверджуйте зменшення дозволів повторенням запиту, який раніше вдався, і перевіряйте, що відмову дає сервіс, а не судження агента
Розповзання повноважень агента — Кроки навчання
-
Бот, що відповідає публічно
Sarnholt Systems публікує свій SDK relay з відкритим кодом, а трекер задач (issue tracker) приймає повідомлення від будь-кого. У Боба немає облікового запису в Sarnholt Systems, немає викрадених облікових даних і немає плацдарму. У нього є браузер і помилка, про яку можна повідомити.
-
Він цитує вихідний код
Кожна відкрита задача має мітку «розібрано» і відповідь від того самого облікового запису. Щось читає ці повідомлення й відповідає на них.
-
Як далеко сягає його доступ, ніде не написано
Відповідь — не шаблонне підтвердження. У ній названо файл, номер рядка й точну гілку коду, що спричиняє помилку.
-
Подати задачу може будь-хто
Перед трекером немає ні черги схвалення, ні перевірки членства. Повідомлення — це текстове поле, і обліковий запис первинного розбору читає все, що в нього потрапило.
-
Вказівка всередині повідомлення про помилку
Боб описує справжню помилку точно, бо повідомлення, яке відтворюється, читають. Під ним він додає другий абзац, адресований тому, що читатиме задачу далі.
-
Агент працює за розкладом
Обліковий запис первинного розбору опрацьовує нові повідомлення партіями. Бобові більше нічого робити не треба: він чекає й перезавантажує гілку.
-
Приватний код, публічна гілка
Агент відповів на повідомлення про помилку і заодно зробив друге, про що його просили.
-
Чому це спрацювало
-
Запитання від відділу зв'язків із розробниками
Алісі не надійшов сигнал тривоги, і жодне сповіщення не спрацювало. Перший сигнал — лист від колеги, який щоранку читає публічний трекер.
-
Про що він насправді повідомляє
Ідріс обережний у тому, чого не знає. Подивіться, що лист доводить, а що залишає відкритим.
Охоплення стандартів безпеки
OWASP MCP Top 10
- MCP02:2025 Privilege Escalation via Scope Creep
CWE
- CWE-269 Improper Privilege Management
- CWE-250 Execution with Unnecessary Privileges
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