Захист клієнтських кінцевих точок Perplexity за допомогою Numbat

Numbat — це відкритий комплекс безпеки для агентів від Perplexity для клієнтських кінцевих точок. Він виявляє, запобігає та розслідує ризиковану поведінку ШІ-агентів у macOS, Linux та Windows.

АвториPerplexity Secure Intelligence Institute

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

Ранні дослідження безпеки агентів зосереджувалися на ін'єкціях промптів (prompt injection) та інших формах зіпсованих вхідних даних. Проте останні досягнення в автономності агентів призводять до інцидентів безпеки, які не потребують наявності ворожих вхідних даних — чи взагалі людських супротивників.

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

Оскільки ці поведінкові прояви неможливо повністю усунути на рівні моделі, надійний захист повинен вбудовуватися в навколишню систему, зокрема в середовище виконання агента, яке слугує інтерфейсом моделі із зовнішнім світом. Ми випускаємо в режимі відкритих джерел Numbat — наш комплекс безпеки для агентів, який допомагає захисникам запобігати інцидентам за участю агентів, виявляти їх та пом'якшувати їхні наслідки. Numbat визначає середовища виконання агентів, які зазвичай знаходяться на кінцевих точках корпоративних клієнтів, і безпосередньо інтегрується з ними, забезпечуючи дотримання правил безпеки та даючи змогу швидко виявляти загрози й реагувати на них.

Вступ

Впровадження агентів створює нові проблеми у сфері безпеки як для розробників, так і для користувачів та захисників. Це особливо актуально, коли підприємства розгортають агентів безпосередньо на клієнтських кінцевих точках із привілейованим доступом до корпоративних систем і даних.

Розгортання агентів на клієнтських кінцевих точках, таких як кодинг-агенти на базі CLI або настільних додатків, супроводжується різним рівнем пісочниці та ізоляції. Користувачі використовують цих агентів для незліченних сценаріїв використання, кожен з яких має власний супутній простір дій, що може впливати на саму кінцеву точку або інші доступні з неї системи. Дедалі частіше від агентів очікують автономної роботи протягом годин або навіть днів. Для таких робочих процесів багато користувачів вважають за краще делегувати затвердження дій агентів класифікаторам або повністю пропускати затвердження за допомогою тривожно названих прапорців конфігурації, таких як --dangerously-skip-permissions та --yolo. Розмаїття сценаріїв використання та конфігурацій агентів у поєднанні з широтою дій, які кодинг-агенти можуть виконувати на привілейованих кінцевих точках, створює профіль ризику, що вимагає проактивного управління з боку команд безпеки.

Сьогодні ми випускаємо Numbat — відкритий комплекс безпеки для агентів, створений нами для виявлення, розслідування та запобігання небезпечній активності агентів штучного інтелекту. У міру того як все більше компаній впроваджують передові продукти на базі агентів, Numbat дає командам безпеки змогу встигати за пов'язаними з цим викликами безпеки. Він інтегрується в кожне з найбільш широко використовуваних клієнтських середовищ виконання агентів, водночас надаючи єдиний інтерфейс для всіх них. Таким чином, Numbat позбавляє команди безпеки від необхідності створювати індивідуальні засоби захисту та моніторингу для кожного окремого агента, на якого покладаються їхні користувачі. Numbat доступний для екосистеми захисників у рамках членства Perplexity в Open Secure AI Alliance з NVIDIA та іншими організаціями.

Системна архітектура агентів, захищених за допомогою Numbat. Numbat акцентує увагу на локальному виявленні та незалежній від агентів криміналістиці.

Ця стаття починається з обговорення проблем безпеки, які стали поштовхом для створення Numbat. Потім ми представляємо дизайн і архітектуру Numbat, а також наш досвід впровадження Numbat на тисячах власних кінцевих точок Perplexity.

Аналіз ландшафту вразливостей

Ландшафт інцидентів безпеки агентів штучного інтелекту стрімко еволюціонує. Велика частина існуючої літератури з безпеки агентів присвячена атакам на основі ін'єкцій, під час яких шкідливий корисний навантаження (payload) вводиться в промпти або контекст моделі, щоб заплутати агента і змусити його діяти неналежним чином. Атаки шляхом ін'єкцій та засоби захисту від них були детально вивчені, і розробники агентів, зокрема Perplexity, розробили надійніші механізми захисту від таких атак.

Але агенту штучного інтелекту не потрібен шкідливий payload, щоб спричинити інцидент безпеки. Насправді навіть не обов'язково припускати наявність зловмисника. Довірений агент, що працює в довіреному середовищі з дозволеними адміністратором інструментами, може вчинити шкідливі дії просто тому, що занадто старанно намагається виконати своє завдання.

Дослідники описують цей тип збою як «випадковий вихід з-під контролю»: шкідлива поведінка агента спричинена не шкідливими вхідними даними, а звичайною помилкою середовища. Відсутність файлу, невдалий запит API, термін дії облікових даних, що закінчився, або відмова в дозволі можуть змусити агента шукати обхідний шлях. Прагнучи досягти початкової мети, заданої користувачем, агент може перетнути межі безпеки шляхом несанкціонованої розвідки, зміни контролю доступу, виявлення секретів або витоку даних. Замість того, щоб агента переманив зловмисник, сам агент стає зловмисником. Крім того, атака може бути спрямована на внутрішні системи, зовнішні системи або обидві водночас, і про це неможливо дізнатися, поки атака вже триває.

Перший широко висвітлений випадок випадкового виходу з-під контролю стався цього місяця, коли OpenAI оприлюднила інформацію про ініційовану агентом атаку, яка скомпрометувала виробничу інфраструктуру Hugging Face. Під час оцінювання попередньої версії моделі GPT модель виявила, що не може просунутися в оцінюванні за допомогою наданого контексту. Щоб подолати цей глухий кут, модель знайшла спосіб вирватися зі свого тестового середовища пісочниці та викрасти результати оцінювання з Hugging Face. Модель використала своє середовище виконання, щоб обійти передбачувані мережеві обмеження, підвищити привілеї поза межами пісочниці, отримати секрети та отримати доступ до захищених систем Hugging Face, і все це заради вузької мети — вирішення завдання оцінювання.

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

Дослідники штучного інтелекту працюють над тим, щоб пом'якшити прояви такої поведінки в самих моделях. Хоча ці зусилля безумовно є цінними, багато хто в дослідницькій спільноті вбачає фундаментальну напруженість між навчанням моделей для забезпечення високих показників безпеки та навчанням тих самих моделей використанню дедалі складніших завдань. Ми вважаємо малоймовірним, що засоби захисту, орієнтовані виключно на рівень моделі, знизять ризик виходу з-під контролю до прийнятного рівня.

Захист кодинг-агентів за допомогою нативних інтеграцій із середовищем виконання

Звідси випливає висновок, що безпека агентів не може ґрунтуватися виключно на засобах захисту на рівні моделі, користувача чи завдання. Натомість командам безпеки потрібна видимість того, що агенти насправді роблять на клієнтських кінцевих точках, а також засоби контролю, які можуть зупинити небезпечні дії до їх виконання. Це засоби контролю системного рівня, які мають бути тісно інтегровані із середовищем виконання агента.

Numbat надає ці засоби контролю у вигляді легкої статичної бінарної бібліотеки Go, яка безшовно інтегрується у провідні клієнтські середовища виконання агентів. Він пропонує моніторинг у реальному часі, забезпечення дотримання політик та судову реконструкцію для різних середовищ виконання агентів та середовищ виконання.

Ключовими точками інтеграції між Numbat та середовищем виконання агента є перехоплювачі (hooks), сеансові артефакти та телеметрія OTLP. Ми розглянемо кожну з них по черзі.

Перехоплювачі

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

Ті самі детерміновані властивості, які роблять перехоплювачі привабливими для цих цілей, також роблять їх привабливими для виявлення та реагування. Зазвичай недостатньо зловити більшість випадків потенційно небезпечної події. Натомість необхідно охопити всі такі випадки для виявлення та реагування. Numbat налаштовує кілька типів перехоплювачів, дозволяючи командам безпеки та ІТ-адміністраторам впроваджувати розширену логіку виявлення.

У більшості кодинг-агентів певні типи перехоплювачів (зазвичай звані перехоплювачами «перед дією» / pre-action) також здатні блокувати виконання наступної дії агента. Використовуючи ці перехоплювачі перед дією, Numbat здатний реалізувати не лише логіку виявлення, а й превентивні правила безпеки, щоб зупинити вихід з-під контролю ще до його початку.

Сеансові артефакти

Перехоплювачі є потужним засобом реалізації логіки виявлення та запобігання в реальному часі. Проте цю логіку необхідно задавати в коді. Часто інцидент безпеки агента набуває форми, яку неможливо було передбачити заздалегідь, не кажучи вже про те, щоб звести до вихідного коду. Тому Numbat також має можливість отримувати доступ до сеансових артефактів та аналізувати їх заднім числом.

Сеансові артефакти включають багато типів журналів і діагностичних даних. Мабуть, найважливішим типом журналу є стенограма сеансу, яка записує розмови з LLM, що визначають послідовність дій агента. Досвідчені користувачі кодинг-агентів вже звикли експортувати стенограми сеансів для подальшого аналізу за допомогою команд, що надаються середовищем виконання. Але ці експорти зазвичай здійснюються у форматі звичайного тексту (plaintext), який погано підходить для команд безпеки, яким потрібні машиночитані журнали з послідовною, передбачуваною схемою.

Таким чином, Numbat отримує сеансові артефакти безпосередньо з файлової системи. Оскільки більшість клієнтських середовищ виконання агентів зберігають оригінальні артефакти у файловій системі (зазвичай у специфічному для агента прихованому каталозі під $HOME), підключення до файлової системи забезпечує найбільш прямий шлях до цих даних у їхній найбільш зручній та первинній формі. Команди безпеки, які використовують Numbat, можуть збирати ці артефакти в нормалізованому форматі шкали часу NDJSON за допомогою numbat scan, як для локальної обробки на клієнтській кінцевій точці, так і для асинхронного віддаленого аналізу. Оскільки сеансові артефакти є статичними, самодостатніми записами, Numbat здатен відновлювати ці часові шкали навіть для сеансів, які відбулися задовго до встановлення Numbat.

Телеметрія OTLP

Більшість клієнтських середовищ виконання агентів пропонують розширену телеметрію через протокол OpenTelemetry (OTLP). Ця телеметрія зазвичай надає безліч сигналів на додачу до тих, що доступні через перехоплювачі або сеансові артефакти.

Numbat може функціонувати як приймач OTLP за допомогою команди numbat collect. Ця команда запускає сервер, на який кодинг-агенти надсилають телеметрію OTLP для подальшого аналізу. Важливо те, що цей сервер є локальним і за замовчуванням прослуховує лише localhost, а це означає, що вся телеметрія за замовчуванням залишається на пристрої. Адміністратори безпеки можуть потім вирішити, що робити із записаною телеметрією: чи то реалізувати легку обробку на пристрої, чи то віддалену обробку за допомогою numbat ship, чи то більш детальний аналіз на платформах аналітики, таких як ClickHouse.

Розгортання Numbat усередині Perplexity

Усередині Perplexity ми використовуємо Numbat для захисту використання нашими інженерами клієнтських кодинг-агентів, включаючи Claude Code, Codex, OpenCode та Pi.

І наші зусилля із запобігання, і зусилля з виявлення широко використовують правила Numbat, які реалізуються через підсистему перехоплювачів кожного агента. Ми сформулювали кілька базових правил для власних потреб, багато з яких ми випустили як частину 52 вбудованих правил Numbat. Ці правила організовані в 11 категорій поведінки та набір багатоступеневих виявлень послідовностей, таких як доступ до секретів, витік даних, підвищення привілеїв та латеральне переміщення. Правила використовують вирази CEL на основі нормалізованих подій, а оператори можуть додавати власні правила та тести без зміни коду Numbat.

Наприклад, вбудоване правило privilege.sudoers_tamper виявляє записи в полісі sudoers, використання visudo та спроби встановити надання доступу NOPASSWD. Це високосигнальні дії, які можуть перетворити обмежений процес агента на постійний доступ з правами root.

yaml
# privilege.sudoers_tamper (simplified for readability) id: privilege.sudoers_tamper severity: high expr: | ( event.event_type == "file.write" && event.file_path.matches("(^|/)etc/sudoers$|(^|/)etc/sudoers\\.d/[^/]+$") ) || ( event.event_type == "command.exec" && event.command.matches("\\bvisudo\\b|\\bNOPASSWD\\s*:") )

Окремі команди не завжди виглядають шкідливими самі по собі, тому Numbat також корелює послідовності в межах сеансу агента. Вбудоване правило chain.secret_manager_read_then_egress виявляє, коли агент зчитує значення із загального інструменту керування секретами, а згодом намагається виконати запит curl або wget, який переносить дані. Зчитування секрету може бути легітимним. Вихідний запит може бути легітимним. У послідовності вони вимагають розслідування.

yaml
# chain.secret_manager_read_then_egress (simplified for readability) id: chain.secret_manager_read_then_egress severity: high sequence: within_events: 64 steps: - expr: | event.event_type == "command.exec" && event.command.matches("secretsmanager|get-secret|vault read") - expr: | event.event_type == "command.exec" && event.command.matches("curl.*(--data|--upload-file)|wget.*--post")

Керування та моніторинг Numbat у всьому парку пристроїв

Подібно до Bumblebee, нашого сканера з відкритим кодом для виявлення вразливостей ланцюжка постачання на кінцевих точках розробників, Numbat розгортається у всьому нашому парку пристроїв за допомогою MDM. Кожен Numbat записує активність агента локально та надсилає структуровану телеметрію в наші централізовані системи безпеки.

Звідти Perplexity Computer за регулярним графіком переглядає останні результати сканування Numbat та журнали аудитів на предмет підозрілої або шкідливої поведінки. Він розслідує виявлення, відновлює відповідні сеанси агентів та приділяє додаткову увагу діям, які Numbat заблокував.

Внутрішній конвеєр Perplexity для моніторингу телеметрії Numbat. Заплановане завдання Perplexity Computer асинхронно переглядає нові сигнали та сповіщає команду безпеки про ризиковану активність.

Computer також шукає прогалини в нашому покритті. Він аналізує нову поведінку, пропонує вдосконалення для виявлень Numbat, тестує ці зміни та відкриває запити на витяг (pull request) для перевірки людиною. Після затвердження та розгортання ці правила покращують моніторинг у всьому парку пристроїв і створюють кращі докази для наступного розслідування.

Це створює маховик безпеки, що самовдосконалюється: агенти генерують активність, Numbat перетворює цю активність на нормалізовані часові шкали та телеметрію, Computer проводить розслідування та вдосконалює правила, а оновлення, перевірені людьми, зміцнюють засоби контролю, які захищають майбутні сеанси агентів.

Висновок

У Perplexity ми віримо, що агенти штучного інтелекту виконуватимуть завдання в усіх типах середовищ: локальних, хмарних та гібридних. Кожна комбінація середовища виконання агента та середовища виконання створює унікальні проблеми безпеки, причому комбінаторна складність загрожує перевантажити обмежені ресурсами команди безпеки. Виходи агентів з-під контролю та інші нові вразливості ще більше ускладнюють картину безпеки.

Засоби захисту, які вбудовуються в саму систему агента, можуть покращити стан безпеки користувача незалежно від того, де виконується агент. Це саме те, що забезпечує Numbat: тісно інтегровані засоби захисту агентів, які дозволяють захисникам запобігати проблемній поведінці в реальному часі, виявляти її та реагувати на неї. Поєднання Numbat з Perplexity Computer створює потужну платформу безпеки агентів, яка дає захисникам змогу випереджати події.

Numbat вже доступний як проєкт із відкритим вихідним кодом для macOS, Linux та Windows. Наші власні клієнтські кінцеві точки захищені за допомогою Numbat, що дозволяє членам команди Perplexity впевнено використовувати агентів для виконання широких завдань на тривалих інтервалах часу. Ми запрошуємо команди безпеки з усього світу використовувати системний підхід Numbat до захисту та охорони їхніх розгортань агентів.

Цитування

BibTeX
@online{perplexity2026SecuringAgentsAcrossPerplexitySClientEndpointsWithNumbat,
  author = {{Perplexity} and Adel Karimishiraz and Bex Brooker and Phi Hoang and Jerry Ma},
  title = {{Securing agents across Perplexity's client endpoints with Numbat}},
  date = {2026-07-29},
  url = {https://perplexity.coolkeypoint.com/hub/blog/securing-agents-across-perplexity-s-client-endpoints-with-numbat}
}