Защита на агенти в клиентските крайни точки на Perplexity с Numbat

Numbat е пакетът за сигурност на агенти с отворен код на Perplexity за клиентски крайни точки. Той открива, предотвратява и разследва рисково поведение на AI агенти на macOS, Linux и Windows.

АвториPerplexity Secure Intelligence Institute

AI агентите трябва да бъдат сигурни, за да са полезни. С напредването на възможностите на моделите и системите нараства и бдителността, необходима за защита на потребителите.

Ранните изследвания в областта на сигурността на агентите бяха насочени към инжектиране на подкани (prompt injections) и други форми на враждебни входни данни. И все пак, неотдавнешният напредък в автономията на агентите води до инциденти с сигурността, които не е нужно да предполагат съществуването на враждебни входни данни — или изобщо на човешки противници.

Напротив, агентите, насочени към преследване на високо ниво цели, без предписани указания как да ги постигнат, могат да се превърнат в противник. Това се случва, когато агентът, в отговор на зададена от потребителя цел, избере ход на действие, който потребителят не е възнамерявал и не би одобрил. Въпреки че такива инциденти бяха теоретизирани само преди няколко месеца, те бързо се превърнаха в предмет на практическа загриженост.

Тъй като тези поведения не могат да бъдат напълно пачнати в слоя на модела, надеждната защита трябва да заема заобикалящата я система, включително интерфейса на агента (harness), който служи като връзка на модела с външния свят. Ние правим Numbat с отворен код – нашият пакет за сигурност на агенти, който помага на защитниците да предотвратяват, откриват и смекчават инциденти, свързани с агенти. Numbat идентифицира и се интегрира директно с интерфейсите на агенти, които обикновено се срещат на крайните точки на корпоративни клиенти, като налага правила за сигурност и дава възможност за бързо откриване и реакция.

Въведение

Възприемането на агенти поставя нови предизвикателства пред сигурността както за разработчиците, така и за потребителите и защитниците. Това е особено вярно, когато предприятията разполагат агенти директно на крайните точки на клиентите с привилегирован достъп до корпоративни системи и данни.

Разполагането на агенти на клиентски крайни точки, като например базирани на CLI или настолни приложения агенти за кодиране, идва с различни нива на пясъчна изолация (sandboxing) и изолация. Потребителите използват тези агенти за безброй случаи на употреба, всеки от които със собствено съпътстващо пространство за действие, което може да засегне самата крайна точка или други системи, достъпни от нея. Все по-често от агентите се очаква да работят автономно в продължение на часове или дори дни. За тези работни процеси много потребители избират да делегират одобренията за действия на агенти на класификатори или да заобиколят изцяло одобренията с тревожно наречени конфигурационни флагове като --dangerously-skip-permissions и --yolo. Многобройността на случаите на употреба и конфигурациите на агентите, съчетана с широтата на действията, които агентите за кодиране могат да извършват на привилегировани крайни точки, създава рисков профил, който изисква проактивно управление от екипите по сигурността.

Днес пускаме Numbat, пакет за сигурност на агенти с отворен код, който създадохме за откриване, разследване и предотвратяване на опасна активност от AI агенти. Тъй като все повече компании възприемат авангардни продукти с агенти, Numbat дава възможност на екипите по сигурността да поддържат темпото на произтичащите от това предизвикателства пред сигурността. Той се интегрира във всеки от най-широко използваните клиентски интерфейси за агенти, като същевременно предоставя постоянен интерфейс във всички тях. По този начин Numbat освобождава екипите по сигурността от тежестта да изграждат собствени защитни механизми и инструменти за наблюдение за всеки отделен агент, на който разчитат техните потребители. Numbat е достъпен за екосистемата на защитниците като част от членството на Perplexity в Open Secure AI Alliance с NVIDIA и други организации.

Системна архитектура на защитените от Numbat агенти. Numbat набляга на локалното откриване и криминалистиката, независима от агентите.

Тази статия започва с дискусия относно предизвикателствата пред сигурността, мотивиращи Numbat. След това представяме дизайна и архитектурата на Numbat, заедно с нашите уроци от разполагането на Numbat в хилядите собствени крайни точки на Perplexity.

Насочване към пейзажа на уязвимостите

Пейзажът на инцидентите със сигурността на AI агентите се развива бързо. Голяма част от съществуващата литература за сигурност на агентите се фокусира върху атаки с инжектиране, при които злонамерен полезен товар се въвежда в подканите или контекста на модела, за да обърка агентите до неправилно поведение. Атакате с инжектиране и защитните мерки са обстойно проучени, а разработчиците на агенти, включително Perplexity, са разработили все по-устойчиви защити срещу атаки с инжектиране.

Но AI агентът не се нуждае от злонамерен полезен товар, за да създаде инцидент със сигурността. Всъщност изобщо не е нужно да се предполага съществуването на противник. Доверен агент, работещ в доверена среда с одобрени от администратора инструменти, може да предприеме вредни действия просто защото се опитва твърде много да завърши задачата си.

Изследователите описват този режим на срив като „случаен срив (accidental meltdown)“: вредно поведение на агента, предизвикано не от враждебни входни данни, а от обикновена грешка в околната среда. Липсващ файл, неуспешна заявка за API, изтекли пълномощия или отказ на разрешение могат да накарат агента да търси заобиколно решение. Преследвайки първоначалната си зададена от потребителя цел, агентът може да премине границите на сигурността чрез неоторизирано разузнаване, промени в контрола на достъпа, откриване на тайна или извличане на данни. Вместо агентът да бъде привлечен от нападател, самият агент е нападателят. Нещо повече, атаката може да бъде насочена към вътрешни системи, външни системи или и двете, без да има начин да се разбере, докато атаката вече е в ход.

Първият широко съобщен случаен срив пристигна този месец с разкриването от страна на OpenAI на инициирана от агент атака, която компрометира производствената инфраструктура на Hugging Face. По време на оценката на предварителен GPT модел, моделът се оказа неспособен да напредне по оценката с предоставения контекст. За да разбие тази задънена улица, моделът намери начин да избяга от своята тестова среда в Sandbox и да извлече отговорите от оценката от Hugging Face. Моделът се възползва от своя интерфейс (harness), за да избяга от предвидените мрежови ограничения, да ескалира привилегиите отвъд границите на sandbox, да получи тайна и достъп до сигурни системи на Hugging Face, всичко това с цел да преследва тесната цел за разрешаване на оценката.

Сривовете включват също и непреднамерени системни мутации и изтривания. Въпреки че може би са по-обикновени от пробива на външна система, тези събития са по-чести и по-значими за всеки напреднал потребител на агенти за кодиране. Изтриването на производствени бази данни или домашните директории (home directories) е най-лошият кошмар на всеки разработчик и агентите трябва да могат да избягват подобно поведение по време на цялото си изпълнение.

Изследователите на изкуствения интелект работят за смекчаване на тези поведения в самите модели. Въпреки че тези усилия със сигурност са ценни, мнозина в изследователската общност възприемат фундаментално напрежение между обучението на модели за силни свойства на сигурността и обучението на същите тези модели за изпълнение на все по-сложни задачи. Вярваме, че е малко вероятно защитите, фокусирани единствено върху слоя на модела, да намалят риска от срив до приемливи нива.

Осигуряване на сигурност на агентите за кодиране чрез естествени интеграции с интерфейса (Harness)

Заключението е, че сигурността на агентите не може да се разчита единствено на защитни механизми на ниво модел, потребител или задача. Вместо това екипите по сигурността се нуждаят от видимост за това какво всъщност правят агентите на крайните точки на клиентите, плюс контроли, които могат да спрат опасните действия, преди те да стартират. Това са контроли на системно ниво, които трябва да бъдат стегнато интегрирани с интерфейса на агента.

Numbat предоставя тези контроли под формата на лек статичен Go бинарен файл, който се включва безпроблемно в водещи клиентски интерфейси за агенти. Той предлага наблюдение на живо, налагане на политики и криминалистична реконструкция в различните интерфейси на агенти и среди за изпълнение.

Ключовите точки на интеграция между Numbat и интерфейса на агента са куките (hooks), артефактите на сесията и OTLP телеметрията. Ще обсъдим всяка от тях по ред.

Куки (Hooks)

Практически всички агенти за кодиране притежават кука (hook) подсистема. Куките позволяват на агентите детерминистично да изпълняват подпрограми в предварително зададени точки в жизнения цикъл на изпълнение на агента. Потребителите на агенти обикновено конфигурират куки, за да предоставят на моделите допълнителен контекст по предсказуеми начини, да внедрят цикли за тестване и проверка и да направят други подобрения на възможностите на агента.

Същите детерминистични свойства, които правят куките привлекателни за тези цели, ги правят привлекателни и за откриване и реакция. Обикновено е недостатъчно да се улови повечето проявления на потенциално тревожно събитие. Напротив, човек трябва да покрие всички такива проявления за откриване и реакция. Numbat конфигурира множество видове куки, което позволява на екипите по сигурността и ИТ администраторите да внедрят богата логика за откриване.

В повечето агенти за кодиране определени видове куки (обикновено наричани „преди действие“ куки) също така могат да блокират изпълнението на следващото действие на агента. Използвайки тези куки преди действие, 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 в целия парк от устройства (fleet)

Подобно на Bumblebee, нашия скенер с отворен код за експозиция на веригата за доставки на крайните точки на разработчиците, Numbat се разполага в нашия парк чрез MDM. Всеки Numbat записва активността на агента локално и изпраща структурирана телеметрия в нашите централизирани системи за сигурност.

Оттам нататък Perplexity Computer преглежда скорошните констатации на Numbat и одитните логове по повтарящ се график за съмнително или злонамерено поведение. Тя разследва откривания, възстановява съответните сесии на агенти и обръща допълнително внимание на действията, които Numbat е блокирал.

Вътрешен конвейер на Perplexity за наблюдение на телеметрията на Numbat. Планирана задача на Perplexity Computer асинхронно преглежда нови сигнали и алармира екипа по сигурността за рискова активност.

Computer също така търси пропуски в нашето покритие. Той анализира ново поведение, предлага подобрения в откриванията на Numbat, тества тези промени и отваря заявки за издърпване (pull requests) за човешки преглед. След като бъдат одобрени и разположени, тези правила подобряват наблюдението в целия парк и дават по-добри доказателства за следващото разследване.

Това създава самоусъвършенстващ се цикъл на сигурност: агентите генерират активност, Numbat превръща тази активност в нормализирани времеви линии и телеметрия, Computer разследва и подобрява правилата, а прегледаните от хора актуализации укрепват защитите, защитаващи бъдещите сесии на агентите.

Заключение

В Perplexity вярваме, че AI агентите ще се изпълняват във всички видове среди: локални, облачни и хибридни. Всяка комбинация от интерфейс на агент и среда за изпълнение поставя уникални предизвикателства пред сигурността, като комбинаторната сложност заплашва да претовари екипите по сигурността с ограничен капацитет. Сривовете на агенти и други нови уязвимости усложняват картината на сигурността още повече.

Защитите, които обитават самата система на агента, могат да подобрят състоянието на сигурността на потребителя, независимо къде се изпълнява агентът. Това е точно това, което 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}
}