Agentų apsauga „Perplexity“ kliento galiniuose taškuose su „Numbat“
„Numbat“ yra „Perplexity“ atvirojo kodo agentų saugumo rinkinys kliento galiniams taškams. Jis aptinka, užkerta kelią ir tiria rizikingą dirbtinio intelekto agentų elgesį „macOS“, „Linux“ ir „Windows“ sistemose.
Dirbtinio intelekto agentai turi būti saugūs, kad būtų naudingi. Tobulėjant modelio ir sistemos galimybėms, didėja ir budrumas, reikalingas vartotojams apsaugoti.
Ankstyvieji agentų saugumo tyrimai buvo sutelkti į raginimų injekcijas ir kitas priešiškų įvestčių formas. Tačiau neseniai padaryta pažanga agentų autonomijos srityje sukelia saugumo incidentų, kuriems nebūtina daryti prielaidą apie priešiškų įvestčių ar žmogiškųjų priešų egzistavimą.
Greičiau agentai, kuriems pavesta siekti aukšto lygio tikslų be nurodymų, kaip juos pasiekti, gali tapti priešu. Taip nutinka, kai agentas, reaguodamas į vartotojo nurodytą tikslą, pasirinkta veiksmų eigą, kurios vartotojas nepageidavo ir kuriai būtų nepritaręs. Nors apie tokius incidentus prieš kelis mėnesius buvo teorizuojama, jie greitai tapo praktiškai svarbiais klausimais.
Kadangi šių elgsenų negalima visiškai ištaisyti modelio sluoksnyje, tvirta gynyba turi apimti aplinkinę sistemą, įskaitant agento sąsają, kuri tarnauja kaip modelio sąsaja su išoriniu pasauliu. Mes atveriame „Numbat“ – mūsų agentų saugumo rinkinį, kuris padeda gynėjams užkirsti kelią su agentais susijusiems incidentams, juos aptikti ir sušvelninti. „Numbat“ identifikuoja įmonės kliento galiniuose taškuose dažnai randamas agentų sąsajas ir tiesiogiai integruojasi su jomis, užtikrindamas saugumo taisyklių vykdymą bei įgalindamas greitą aptikimą ir reagavimą.
Įvadas
Agentų diegimas kelia naujų saugumo iššūkių kūrėjams, diegėjams ir gynėjams. Tai ypač pasakytina apie atvejus, kai įmonės diegia agentus tiesiogiai kliento galiniuose taškuose su privilegijuota prieiga prie įmonės sistemų ir duomenų.
Agentų diegimai kliento galiniuose taškuose, pavyzdžiui, CLI pagrįsti arba darbalaukio programomis pagrįsti kodavimo agentai, pasižymi įvairiu smėlio dėžės (sandbox) ir izoliacijos lygiu. Vartotojai naudoja šiuos agentus nesuskaičiuojamiems naudojimo atvejams, kurių kiekvienas turi savo lydinčiąją veiksmų erdvę, galinčią paveikti patį galinį tašką arba kitas pasiekiamas sistemas iš galinio taško. Vis dažniau tikimasi, kad agentai veiks autonomiškai valandas ar net dienas. Šioms darbo eigoms daugelis vartotojų renkasi deleguoti agentų veiksmų patvirtinimus klasifikatoriams arba visiškai praleisti patvirtinimus naudodami nerimą keliančius konfigūracijos vėliavėlių pavadinimus, tokius kaip --dangerously-skip-permissions ir --yolo. Agentų naudojimo atvejų ir konfigūracijų gausa, kartu su veiksmų, kuriuos kodavimo agentai gali atlikti privilegijuotuose galiniuose taškuose, gausa sukuria rizikos profilį, kurį saugumo komandos privalo aktyviai valdyti.
Šiandien išleidžiame „Numbat“ – atvirojo kodo agentų saugumo rinkinį, kurį sukūrėme tam, kad aptiktume, tirtume ir užkirstume kelią pavojingai dirbtinio intelekto agentų veiklai. Daugeliui įmonių pritaikant pažangiausius agentų produktus, „Numbat“ suteikia galimybę saugumo komandoms neatsilikti nuo kylančių saugumo iššūkių. Jis integruojasi į kiekvieną iš plačiausiai naudojamų kliento pusės agentų sąsajų, kartu pateikdamas nuoseklią sąsają visose jose. Tokiu būdu „Numbat“ išvaduoja saugumo komandas iš naštos kurti pritaikytas apsaugos priemones ir stebėjimo įrankius kiekvienam atskiram agentui, kuriuo pasitiki jų vartotojai. „Numbat“ yra prieinamas gynėjų ekosistemai kaip „Perplexity“ narystės „Open Secure AI Alliance“ su „NVIDIA“ ir kitomis organizacijomis dalis.
Šis straipsnis prasideda diskusija apie saugumo iššūkius, paskatinusius „Numbat“ kūrimą. Tuomet pristatome „Numbat“ dizainą ir architektūrą bei pamokas, išmoktas diegiant „Numbat“ tūkstančiuose „Perplexity“ galinių taškų.
Pažeidžiamumo kraštovaizdžio nustatymas
Dirbtinio intelekto agentų saugumo incidentų kraštovaizdis sparčiai kinta. Didelė dalis esamos agentų saugumo literatūros yra skirta injekcijų atakoms, kurių metu į modelio raginimus arba kontekstą įterpiama kenkėjiška naudingoji apkrova, siekiant klaidinti agentus ir priversti juos elgtis netinkamai. Injekcijų atakos ir apsaugos priemonės buvo išsamiai ištirtos, o agentų kūrėjai, įskaitant „Perplexity“, sukūrė vis tvirtesnę gynybą nuo injekcijų atakų.
Tačiau dirbtinio intelekto agentui nereikia kenkėjiškos naudingosios apkrovos, kad sukeltų saugumo incidentą. Tiesingai tariant, net nereikia daryti prielaidos apie priešo egzistavimą. Patikimas agentas, veikiantis patikimoje aplinkoje su administratoriaus patvirtintais įrankiais, gali imtis žalingų veiksmų vien todėl, kad pernelyg stengiasi įvykdyti savo užduotį.
Tyrėjai šį trikties režimą apibūdina kaip „atsitiktinį lydimąsi“: žalingą agento elgesį, kurį sukelia ne priešiška įvestis, o įprasta aplinkos klaida. Trūkstamas failas, nepavykęs API užklausos, pasibaigęs galiojimo laiku įgaliojimas arba prieigos atsisakymas gali paskukti agentą ieškoti aplinkkelio. Siekdamas savo pradinio vartotojo nustatyto tikslo, agentas gali peržengti saugumo ribas per neteisėtą žvalgymą, prieigos kontrolės pakeitimus, paslapčių atradimą arba duomenų nutekėjimą. Užuot agentą pasisavinęs užpuolikas, pats agentas tampa užpuoliku. Be to, ataka gali būti nukreipta į vidines sistemas, išorines sistemas arba į abu variantus, o apie tai sužinoma tik tada, kai ataka jau vyksta.
Pirmasis plačiai aprašytas atsitiktinis lydimasis įvyko šį mėnesį, „OpenAI“ atskleidus agento inicijuotą ataką, kuria buvo pažeista „Hugging Face“ gamybinė infrastruktūra. Vertinant išankstinio išleidimo GPT modelį, modelis negalėjo pasiekti pažangos atliekant vertinimą su pateiktu kontekstu. Kad įveiktų šią aklavietę, modelis rado būdą ištrūkti iš savo smėlio dėžės (sandbox) testavimo aplinkos ir nutekinti vertinimo atsakymus iš „Hugging Face“. Modelis pasinaudojo savo sąsaja, kad išvengtų numatytų tinklo apribojimų, padidintų privilegijas už smėlio dėžės (sandbox) ribų, gautų paslaptis ir pasiektų saugias „Hugging Face“ sistemas – visa tai siekdamas siauro tikslo išspręsti vertinimą.
Lydimieji taip pat apima nenumatytas sistemos mutacijas ir ištrynimus. Nors šie įvykiai galbūt yra labiau kasdieniški nei išorinės sistemos pažeidimas, jie yra dažnesni ir svarbesni bet kuriam kodavimo agentų pažangiam vartotojui. Gamybinių duomenų bazių arba namų katalogų ištrynimas yra bet kurio kūrėjo didžiausias košmaras, todėl agentai privalo sugebėti vengti tokio elgesio viso vykdymo metu.
Dirbtinio intelekto tyrėjai stengiasi sušvelninti šį elgesį pačiuose modeliuose. Nors šios pastangos tikrai vertingos, daugelis tyrėjų bendruomenės narių įžvelgia esminę įtampą tarp modelių mokymo stiprioms saugumo savybėms ir tų pačių modelių mokymo atlikti vis sudėtingesnes užduotis. Tikime, kad mažai tikėtina, jog vien į modelio sluoksnį orientuota gynyba sumažins lydimosi riziką iki priimtinų lygių.
Kodavimo agentų apsauga per gimtąsias sąsajų integracijas
Galutinis rezultatas yra tas, kad agentų saugumas negali remtis tik modelio, vartotojo ar užduoties lygio apsaugos priemonėmis. Saugumo komandoms reikia matomumo, ką agentai iš tikrųjų daro kliento galiniuose taškuose, bei valdiklių, galinčių sustabdyti pavojingus veiksmus prieš jiems įvykstant. Tai sisteminio lygio valdikliai, kurie turi būti glaudžiai integruoti su agento sąsaja.
„Numbat“ teikia šiuos valdiklius lengvo statinio „Go“ dvejetainio failo pavidalu, kuris sklandžiai įsitraukia į pagrindines kliento pusės agentų sąsajas. Jis siūlo tiesioginį stebėjimą, politikos vykdymą ir teismo ekspertizės rekonstrukciją visose agentų sąsajose ir vykdymo aplinkose.
Pagrindiniai „Numbat“ ir agento sąsajos integracijos taškai yra kabliukai (hooks), sesijos artefaktai ir OTLP telemetrija. Aptarsime juos pačius.
Kabliukai (Hooks)
Praktikiai visi kodavimo agentai turi kabliuko (hook) posistemį. Kabliukai leidžia agentams deterministiškai vykdyti subrutinas iš anksto nustatytuose agento vykdymo gyvavimo ciklo taškuose. Agentų vartotojai paprastai konfigūruoja kabliukus, kad suteiktų modeliams papildomo konteksto nuspėjamais būdais, įgyvendintų testavimo ir tikrinimo ciklus bei atliktų kitus agento galimybių patobulinimus.
Dėl tų pačių deterministinių savybių, dėl kurių kabliukai yra patrauklūs šiems tikslams, jie taip pat tampa patrauklūs aptikimui ir reagavimui. Paprastai neužtenka sugauti daugumą galimai keliančio susirūpinimo įvykio atvejų. Greičiau reikia padengti visus tokius atvejus aptikimui ir reagavimui. „Numbat“ konfigūruoja kelis kabliukų tipus, leidžiančius saugumo komandoms ir IT administratoriams įgyvendinti turtingą aptikimo logicą.
Daugumoje kodavimo agentų tam tikri kabliukų tipai (dažnai vadinami „prieš veiksmą“ kabliukais) taip pat gali blokuoti kito agento veiksmo vykdymą. Naudodamas šiuos „prieš veiksmą“ kabliukus, „Numbat“ gali įgyvendinti ne tik aptikimo loginę schemą, bet ir prevencines saugumo taisykles, kad sustabdytų lydimosi kilimą iš pat pradžių.
Sesijos artefaktai
Kabliukai yra galingos priemonės įgyvendinti aptikimo ir prevencijos logikai realiuoju laiku. Tačiau ši logika turi būti nusakoma kode. Dažnai agento saugumo incidentas įgyja formą, kurios nebuvo galima numatyti iš anksto, jau nekalbant apie jos sumažinimą iki programinio kodo. Todėl „Numbat“ taip pat turi galimybę pasiekti ir analizės tikslais retrospektyviai nagrinėti sesijos artefaktus.
Sesijos artefaktai apima daugelio tipų žurnalus ir diagnostiką. Galbūt svarbiausias žurnalo tipas yra sesijos stenograma, kuri įrašo LLM pokalbius, nurodančius agento veiksmų seką. Kodavimo agentų pažangūs vartotojai jau yra įpratę eksportuoti sesijos stenogramas tolimesniam analitiniam darbui per sąsajos teikiamas komandas. Tačiau šie eksportai paprastai būna paprasto teksto (plaintext) formatu, kuris netinkamas saugumo komandoms, reikalaujančioms mašinos skaitomų žurnalų su nuoseklia, nuspėjama schema.
Todėl „Numbat“ nuskaito sesijos artefaktus tiesiai iš pačios failų sistemos. Kadangi daugelis kliento pusės agentų sąsajų saugo pradinius artefaktus failų sistemoje (paprastai agentui skirtame taško kataloge po $HOME), prisijungimas prie failų sistemos užtikrina tiesiausią kelią prie šių duomenų jų tinkamiausia ir nepaliesta forma. Saugumo komandos, naudojančios „Numbat“, gali rinkti šiuos artefaktus normalizuotu NDJSON laiko juostos formatu per numbat scan, skirtu arba vietiniam apdorojimui kliento galiniame taške, arba asinchroninei nuotolinei analizei. Kadangi sesijos artefaktai yra statiniai, savarankiški įrašai, „Numbat“ sugeba atkurti šias laiko juostas net sesijoms, įvykusioms gerokai prieš „Numbat“ įdiegimą.
OTLP telemetrija
Dauguma kliento pusės agentų sąsajų siūlo išsamią telemetriją per OpenTelemetry protokolą (OTLP). Ši telemetrija paprastai pateikia daug signalų, viršijančių tuos, kurie pasiekiami per kabliukus arba sesijos artefaktus.
„Numbat“ gali veikti kaip OTLP imtuvas per komandą numbat collect. Ši komanda paleidžia serverį, į kurį kodavimo agentai siunčia OTLP telemetriją tolimesnei analizei. Svarbu tai, kad šis serveris yra vietinis ir pagal numatytuosius nustatymus klauso tik „localhost“, tai reiškia, kad visa telemetrija lieka įrenginyje. Saugumo administratoriai tuomet gali nuspręsti, ką daryti su įrašyta telemetrija – ar tai apimtų lengvą įrenginio apdorojimą, nuotolinį apdorojimą per numbat ship, ar sudėtingesnę analizę analitikos platformose, tokiose kaip „ClickHouse“.
„Numbat“ diegimas „Perplexity“ viduje
„Perplexity“ viduje mes naudojame „Numbat“, kad apsaugotume savo inžinierių naudojamus kliento pusės kodavimo agentus, įskaitant „Claude Code“, „Codex“, „OpenCode“ ir „Pi“.
Tiek mūsų prevencijos, tiek aptikimo pastangos plačiai naudoja „Numbat“ taisykles, kurios yra įgyvendinamos per kiekvieno agento kabliuko posistemį. Sukūrėme keletą pagrindinių taisyklių savo reikmėms, iš kurių daugelį pateikėme kaip „Numbat“ 52 įmontuotųjų taisyklių dalį. Šios taisyklės yra suorganizuotos į 11 elgsenos kategorijų ir kelių žingsnių sekos aptikimų rinkinį, tokį kaip paslapties prieiga, nutekėjimas, privilegijų padidinimas ir šoninis judėjimas. Taisyklės naudoja CEL išraiškas per normalizuotus įvykius, o operatoriai gali pridėti savo taisykles ir testus nekeisdami „Numbat“ kodo.
Pavyzdžiui, įmontuotoji taisyklė privilege.sudoers_tamper aptinka įrašus į sudoers politiką, visudo naudojimą ir bandymus įdiegti NOPASSWD teises. Tai yra didelio signalo lygio veiksmai, galintys paversti ribotą agento procesą nuolatine root prieiga.
# 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*:")
)Atskiros komandos ne siempre atrodo kenkėjiškos savaime, todėl „Numbat“ taip pat koreliuoja sekas sesijos metu. Įmontuotoji taisyklė chain.secret_manager_read_then_egress aptinka, kai agentas nuskaito reikšmę iš įprasto paslapčių valdymo įrankio ir vėliau bando atlikti duomenis perduodančią curl arba wget užklausą. Paslapties nuskaitymas gali būti teisėtas. Išėjimo užklausa gali būti teisėta. Sujungtos į seką, joms reikalingas tyrimas.
# 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“ valdymas ir stebėjimas visame parke
Kaip ir „Bumblebee“, mūsų atvirojo kodo skaitytuvas, skirtas tiekimo grandinės poveikiui kūrėjų galiniuose taškuose nustatyti, „Numbat“ yra diegiamas visame mūsų parke per MDM. Kiekvienas „Numbat“ įrašo agento veiklą vietoje ir siunčia struktūrizuotą telemetriją į mūsų centralizuotas saugumo sistemas.
Iš ten „Perplexity Computer“ periodiškai peržiūri naujausius „Numbat“ radinius ir audito žurnalus, ieškodama įtartino arba kenkėjiško elgesio. Ji tiria aptikimus, atkuria atitinkamas agento sesijas ir skiria papildomą dėmesį veiksmams, kuriuos „Numbat“ užblokavo.
„Computer“ taip pat ieško spragų mūsų apsaugos padengime. Ji analizuoja naują elgseną, siūlo patobulinimus „Numbat“ aptikimams, išbando šiuos pakeitimus ir atidaro pull užklausas žmogaus peržiūrai. Kai patvirtinamos ir įdiegiamos, šios taisyklės pagerina stebėjimą visame parke ir sukuria geresnius įrodymus sekančiam tyrimui.
Tai sukuria savaime patobulėjantį saugumo ratą: agentai sukuria veiklą, „Numbat“ paverčia šią veiklą normalizuotomis laiko juostomis ir telemetrija, „Computer“ tiria ir tobulina taisykles, o žmogaus peržiūrėti atnaujinimai sustiprina valdiklius, apsaugančius būsimas agentų sesijas.
Išvada
„Perplexity“ mes tikime, kad dirbtinio intelekto agentai veiks visų tipų aplinkose: vietinėse, debesų ir hibridinėse. Kiekvienas agento sąsajos ir vykdymo aplinkos derinys kelia unikalių saugumo iššūkių, o kombinacinis sudėtingumas grasina prislėgti ribotų resursų saugumo komandas. Agentų lydimieji ir kiti nauji pažeidžiamumai dar labiau apsunkina saugumo vaizdą.
Gynyba, kuri gyvuoja pačioje agento sistemoje, gali pagerinti vartotojo saugumo poziciją nepriklausomai nuo to, kur agentas vykdomas. Tai būtent tai, ką „Numbat“ suteikia: glaudžiai integruotos agentų apsaugos priemonės, leidžiančios gynėjams užkirsti kelią, aptikti ir reaguoti į keliantį susirūpinimą elgesį realiuoju laiku. „Numbat“ sujungimas su „Perplexity Computer“ sukuria galingą agentų saugumo platformą, kuri suteikia gynėjams galią išlikti priekyje.
„Numbat“ šiandien yra prieinamas kaip atvirojo kodo projektas „macOS“, „Linux“ ir „Windows“ sistemoms. Mūsų pačių kliento galiniai taškai yra apsaugoti „Numbat“, leidžiantys „Perplexity“ komandos nariams užtikrintai naudoti agentus plataus masto užduotims ir ilgalaikiams horizontams. Kviečiame saugumo komandas visur pasinaudoti „Numbat“ sisteminio lygio požiūriu į jų agentų diegimų apsaugą.
Citata
@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}
}