Security Blog

Te jaositte työn kolmelletoista agentille. Paperclip ei jakanut avainta.

#460

October 2, 2026 · By Marketing team

← All posts

71 000 tähden agenttikehyksen skannaus paljasti, että kahdellatoista sen kolmestatoista agentista oli sama salatekstimuotoinen tunnus. Kun käytätte agenttiarmeijaa, "salaisuus asuu konfiguraatiossa" lakkaa olemasta pikatie ja kertautuu.

Teitte sen nykyaikaisella tavalla. Yhden ison agentin sijaan perustitte armadan — yksi seulomaan tukipyyntöjä, yksi kirjoittamaan tekstiä, yksi ajamaan suunnitteluputkea, tusina näitä, kullakin oma tehtävänsä ja oma konfiguraationsa. Se tuntuu turvallisemmalta. Pienempi räjähdysvaikutus. Enemmän vähimmäisoikeuksia.

Sitten tarkastuskäynti kävi läpi 71 000 tähden Paperclip-nimisen agenttikehyksen konfiguraatiot ja totesi, että kahdellatoista sen kolmestatoista agentista oli samat tunnukset — identtinen tunnus, liitettynä salatekstinä kunkin agentin konfiguraatioon [1]. Yksi Anthropicin API-avain oli kirjoitettuna selkokielisenä suunnitteluagentin konfiguraatioon. Yhden agentin käyttöön tarkoitettu bottitunnus oli luettavissa agenteille, joilla ei ollut asiaa sen luo.

Kolmetoista ovea. Yksi avain, kopioitu kahteentoista niistä. Varastakaa se heikoimmalta agentilta, ja saatte loput yksitoista.

Mitä oikeasti tapahtui

Paperclip antaa jokaiselle agentille MCP-palvelimen konfiguraation — tiedoston, joka kertoo agentille, mihin työkaluihin ja palveluihin se voi yhdistää ja miten se todentaa itsensä niissä. Jossain vaiheessa salaisuudet päätyivät suoraan näihin tiedostoihin kirjaimellisena tekstinä: n8n JWT, kantotunnus, Anthropicin API-avain. Ei viitattuna. Ei ajonaikaisesti injektoiduna. Kirjoitettuna — ja sitten, koska seuraavan agentin pystytys on kopioi-liitä, monistettuna koko armadaan.

Tarkastus nosti kolme asiaa. Jaetut salatekstimuotoiset tunnukset kahdella toista agentilla (arvio HIGH). Anthropicin avain selkokielisenä suunnitteluagentin konfiguraatiossa (arvio CRITICAL). Ja bottitunnus, jonka oikeudet ulottuivat agenteille, joille sitä ei ollut tarkoitettu — suora vähimmäisoikeuksien virhe [1]. Ansiokkaasti Paperclipin tiimi toimi nopeasti: he siirtyivät tunnusviittauksiin, peittivät konfiguraation agenttien välisissä lukutoimissa ja alkoivat pakottaa sidontasynkronoinnin [2]. Oikea suunta.

Tämä ei ole Paperclipin piittaamattomuutta

Tässä on kohta, jonka kanssa kannattaa hetki istua. Paperclip teki sen, mitä lähes jokainen kehys tekee. Salaisuuden asettaminen konfiguraatiotiedostoon on tapa, jolla ohjelmisto on todentanut itsensä kolmekymmentä vuotta. Se toimi, koska sovellus oli yksi, konfiguraatio yksi ja yksi ylläpitäjä tiesi, missä avain asui.

Aika muuttui tavan alla. Moniagenttijärjestelmä ei ole yksi sovellus yhdellä konfiguraatiolla — se on tusina prosesseja, kullakin tiedostonsa, kullakin kopio edellisestä. Salateksti konfiguraatiossa oli siedettävä pikatie, kun vuotokohtia oli yksi. Kolmella toista sama pikatie tarkoittaa, että yksi vuoto on kolmetoista vuotoa — ja kysymykseen "kumpi agentti teki sen?" ei ole vastausta, koska lokissa ollut tunnus kuului kaikille niistä.

Tunnusviittaukset — Paperclipin julkaisema korjaus — ovat aidosti parempia. Mutta huomatkaa, mitä ne muuttavat ja mitä eivät. Viittaus yhä ratkeaa todelliseen salaisuuteen siellä, missä agentti toimii; agentti, tai mikä tahansa sen kompromisoiva tekijä, voi yhä lukea ratkaistun arvon. Ja kehyksen oma virheseuranta näyttää jo seuraavan vikatilan: viittaus voi ajautua epäsopivaan sidontaan, jolloin konfiguraatio näyttää täytetyltä kun validointi epäonnistuu hiljaa [3]. Salaisuus siirtyi yhden kerroksen taakse. Se ei poistunut rakennuksesta.

Kyse ei ole pelkästään Paperclipista

Sama viikko, sama perussyyy, eri repositoriot. Laajasti käytetty koodiagentti jätettiin käsittelyyn, koska se tulosti raakoja .env-arvoja — salasanoja, tunnuksia, API-avaimia — suoraan keskustelutulosteeseensa. Toinen agenttien ajoympäristö antoi koko vanhemman ympäristönsä aliprosesseille, joten jokainen tarjoajan avain oli lapsiprosessin näkyvissä [4]. Äänikoukku kirjoitti litteroita, tunnukset mukanaan, maailmanluettavaan /tmp-hakemistoon [5]. Riippumattomat tiimit, riippumattomat uhkamallit, yksi jaettu oletus: että salaisuus voi asua siellä, missä agentti sen näkee. Koko hyökkäyksen tekijän argumentti on, ettei se voi.

Rakennettu tähän tarkoituksella

Clavitor lähtee päinvastaisesta oletuksesta: agentti ei koskaan pidä tunnusta hallussaan. Se pyytää toimenpidettä; pyydyn sieppataan, todennetaan salaisuudella, jota agentti ei voi lukea, ja toteutetaan. Konfiguraatiota, johon tunnus liitettäisiin, ei ole, koska konfiguraatiossa ei ole tunnusta. Ei mitään kopioitavaa kolmelletoista agentille, koska agentin ympäristö ei koskaan sisällä varastettavaa asiaa.

Jokainen agentti ulottuu vain siihen, mille se on nimetty — ei koko varastoon — joten bottitunnus ei päädy luettavaksi agentille, joka ei sitä koskaan pyytänyt. Ja jokainen toimenpide kirjataan sille toimijalle, joka sen teki, eikä jaetulle tunnukselle, joka oli kahdella toista agentilla yhteinen — joten kysymykseen "kumpi teki sen?" on vastaus.

Rehellinen reuna: tämä ei tee agentista hakkautumatonta. Kompromisoitu agentti voi yhä tehdä juuri sillä hetkellä ne asiat, joihin se on valtuutettu. Se ei voi lähteä avain mukanaan ja muuttua kahdeksitoista muuksi — koska käsissä ei ole avainta, jonka se voisi viedä mukanaan.

Opetus ei ole "vaihda tunnus"

Paperclip vaihtaa tunnukset, saa siirtymän päätökseen ja sulkee asiankirjat. Hyvä — niin pitääkin. Mutta vaihto ei ole opetus. Opetus on, että heti kun teillä on agenttiarmeija yhden sovelluksen sijaan, "salaisuus asuu konfiguraatiossa" lakkaa olemasta pikatie ja kertautuu. Kertautumista ei korjata tekemällä salaisuudesta hieman vaikeammin luettava. Se korjataan varmistamalla, ettei salaisuus ollut koskaan agentin käsissä.

Kirjasimme säännöt, joiden mielestämme tunnusvälineen pitäisi noudattaa agenttiaikakaudella — niiden joukossa, että salaisuus ei koskaan asu siellä, missä koodi suoritetaan, ja että agentti ulottuu vain siihen, mille se on nimetty. Testatkaa oma välineenne niitä vasten: clavitor.ai/rules.

Clavitor (@clavitorai) on tekoälyagenteille — ja niitä vastaan — rakennettu tunnusvarasto. clavitor.ai

Lähteet

[1] Paperclip-agenttikehys — tunnushygienian havainnot (CFG-H1 jaetut salatekstitunnukset, CFG-C1 kovakoodattu Anthropic-avain, CFG-H2 väärin rajattu bottitunnus): https://github.com/paperclipai/paperclip

[2] Paperclip — agentin salaisuussidontasynkronoinnin pakottaminen elinkaaren ajoissa (yhdistetty): https://github.com/paperclipai/paperclip/pull/8307

[3] Paperclip — secret_ref -ympäristömerkinnät voivat ajautua tahdista secret_bindings -riveistä, konfiguraatio näyttää täytetyltä mutta validointi epäonnistuu hiljaa (#8309): https://github.com/paperclipai/paperclip/issues/8309

[4] Chetter — runBatchAgent perii ajoympäristön kokonaisuudessaan ja paljastaa tarjoajien API-avaimet aliprosessille (#56): https://github.com/flatout-works/chetter/issues/56

[5] Claude Code voice hook — täydelliset litteraatit (tunnukset mukana) kirjoitetaan maailmanluettavaan /tmp (#58): https://github.com/rodlaneedu-hash/claude-code-voice-hook/issues/58