ШІ-агенти · безпека · експедирування вантажів

Агент-диспетчер під атакою

Агент-диспетчер на основі ШІ, якого ми побудували й атакували у власній пісочниці. QR-код на накладній намагається перенаправити вантажівку.

01

Огляд

Ми створили невеликого агента-диспетчера, який бронює забір вантажу, оновлює ETA та вносить зміни адреси з листів перевізників і накладних. Він працює на локальній відкритій моделі всередині створеної нами пісочниці: імітована система керування перевезеннями, вигадана поштова скринька й надруковані накладні, QR-коди яких агент декодує із зображення.

Потім ми атакували його 24 атаками з ін’єкцією інструкцій. П’ять із шести шаблонів атак використовують опубліковані рядки атак AgentDojo (сам бенчмарк AgentDojo ми не запускали); шостий — наш. Вони ховають інструкції в QR-коді, у невидимому білому тексті, у тілі листа або в листі з адреси-двійника й намагаються перенаправити відправлення на інший склад, видати PIN для забору вантажу, скасувати бронювання або підкинути хибний ETA. Людина, дивлячись на накладну, бачить код бронювання. Агент читає наказ.

Захист побудовано за спрощеною версією архітектури CaMeL (лише лінійні плани). Планувальник, який бачить лише запит диспетчера, складає план до того, як буде прочитано будь-який лист. Окремий екстрактор без інструментів читає недовірений вміст і може лише заповнювати значення. Кожне значення несе позначку свого джерела, а політика не допускає недовірені значення до одержувачів, скасувань та ідентифікаторів відправлень. Крім того, будь-яка зміна адреси чекає на зворотний дзвінок на номер, збережений у системі. Ті самі атаки ми запустили й без захисту, і лише з правилом зворотного дзвінка. Ми також показуємо, чого захист не зупиняє: хибного ETA. Він пройшов у 4 із 6 спроб — з листа перевізника, із прихованого тексту на накладній і від відправника-двійника, — бо політика дозволяє значенням, прочитаним із вмісту, потрапляти в ETA. Маршрути, бронювання й одержувачі залишилися захищеними. Та сама прогалина стосується часу слотів і номерів бронювань, які ми не тестували.

02

Що ми створили

  • Агент-диспетчер з інструментами на локальній відкритій моделі на 4 мільярди параметрів, з 12 інструментами пісочниці (прочитати лист, прочитати документ, декодувати QR-код, забронювати слот, оновити ETA, змінити пункт призначення, надіслати лист, скасувати бронювання та інші).
  • Пісочниця з вигаданими відправленнями, перевізниками й вантажоодержувачами, з накладними, згенерованими зі справжніми QR-кодами, і змодельованим зворотним дзвінком на збережений у системі номер вантажоодержувача.
  • Спрощений захист у стилі CaMeL (лінійні плани): планувальник складає план лише за запитом, ізольований екстрактор читає недовірений вміст, походження відстежується для кожного значення, а політика перевіряє кожну дію.
  • Набір із 24 атак з ін’єкцією (6 шаблонів × 4 цілі, у 4 місцях приховування), результат яких оцінюється за станом пісочниці після кожного запуску.
03

Стек технологій

Python · mlx-lm · Qwen3-4B-Instruct-2507 (4-bit, Apache-2.0) · zxing-cpp · qrcode · three.js · Playwright

04

Цифри

ПоказникЯк ми це виміряли
12 · 7 · 4 із 24 атак пройшли

без захисту, лише з правилом зворотного дзвінка та з повним захистом. Кожен із 24 випадків запущено один раз для кожної конфігурації на тій самій локальній моделі з жадібним декодуванням; атака вважається такою, що пройшла, якщо її мета видна в стані пісочниці наприкінці запуску (адреса, лист зловмиснику, скасоване бронювання або ETA). Невеликі числа на одній моделі; загальних висновків ми не робимо.

Усі 4 атаки, що пройшли повний захист, — хибні ETA

(4 із 6 випадків із хибним ETA: 2 з листа перевізника, 1 із прихованого тексту на накладній, 1 від відправника-двійника). У цих запусках не змінилися ні маршрут, ні бронювання, ні одержувач. Один із цих випадків (f1) обидва агенти без повного захисту проігнорували, а екстрактор його скопіював, тож чиста зміна від лише зворотного дзвінка до повного захисту — 7 → 4.

5 із 5 завдань виконано без атак в усіх трьох конфігураціях.

Це п’ять запитів диспетчера, запущених один раз із чистою поштовою скринькою й перевірених на відповідність очікуваним бронюванням, ETA, листу й адресі.

05

Кадри

Маєте схоже завдання?

Розкажіть, що вам потрібно розрахувати, змоделювати чи вирішити, і ми розповімо, як підійшли б до цього.

Розкажіть нам ШІ та машинне навчання