A Pillar Security kutatói állításuk szerint azonosították az első, valós környezetben is alkalmazható, AI-ügynökök közötti támadási módszert. A Google Pythonhoz készült Agent Development Kitjének háttértárában talált sérülékenység lehetővé tehette, hogy egy alacsonyabb jogosultságú mesterségesintelligencia-ügynök manipuláljon egy magasabb jogosultságokkal rendelkező másik ügynököt, és ezzel akár egy szoftveres ellátási lánc kompromittálásához is hozzájáruljon.
A biztonsági probléma a google/adk-python nyílt forráskódú eszközkészletben volt jelen, amelyet AI-ügynökök fejlesztésére és üzembe helyezésére használnak, és amelyet már több mint 90 millió alkalommal töltöttek le. A Google azóta kijavította a hibát, azonban bug bounty tekintetében nem ítélte jutalmazhatónak a bejelentést, mivel a támadás végrehajtásához social engineeringre, vagyis a projekt karbantartói bizalmának megszerzésére is szükség volt.
Az eset ennek ellenére jól mutatja az AI-ügynökök CI/CD-folyamatokban történő alkalmazásának kockázatait. Ezeket az ügynököket egyre gyakrabban használják hibajegyek és pull requestek előzetes osztályozására, kódellenőrzésekre és fejlesztői döntések támogatására. Dan Lisichkin, a Pillar kutatója szerint az ilyen új támadási felületek még nem jelennek meg megfelelően a hagyományos fenyegetési modellekben, mivel az AI-ügynökök elterjedése előtt ezek a forgatókönyvek nem létezhettek.
A sérülékenység hátterében az állt, hogy a projekt két eltérő jogosultsági szintű automatizált AI-ügynöke akaratlanul közös bizalmi határon osztozott. Az egyik egy nyilvánosan elérhető, alacsony jogosultságú ügynök volt, amely egy új hibajegy vagy pull request megnyitásakor aktiválódott. A másik egy magas jogosultságú, kizárólag a projekt karbantartói által használható ügynök volt.
A kutatók megállapították, hogy a nyilvános ügynök prompt injection segítségével manipulálható volt. A támadó egy speciálisan megfogalmazott utasítást helyezhetett el egy pull request szövegében, amelynek hatására az alacsony jogosultságú ügynök aktiválhatta a privilegizált ügynök munkafolyamatát. Mivel az ügynökök működését meghatározó workflowok nyilvánosak voltak, egy támadó feltérképezhette, hogyan lehet az egyik ügynökön keresztül meghívni a másikat. Lisichkin szerint ehhez nem volt szükség különleges technikai tudásra: egy megfelelő angol nyelvű prompt, aminek elkészítésében akár egy harmadik AI modell is segíthet.
A támadónak ugyanakkor valószínűleg először legitim hozzájárulásokkal kellett volna elnyernie a karbantartók bizalmát. Ezt követően létrehozhatott volna egy első pull requestet, amely egy valódi hibajavítás mellett rosszindulatú kódot, például manipulált package.json fájlt vagy kártékony függőséget tartalmazott.
A nyilvános ügynök beolvasta volna a pull request szövegét, majd ellenőrzésre jelölte volna azt. Az ügynök egy magas jogosultságú együttműködői személyes hozzáférési tokenhez, azaz PAT-hoz kapcsolódott, ami lehetővé tette, hogy a támadó által bevitt szöveg egy korlátozott hozzáférésű munkafolyamatot indítson el. Ezután a támadó egy második pull requestben helyezte volna el a prompt injectiont. Ennek hatására az osztályozást végző ügynök kiadhatta a megbízhatónak tekintett „@gemini-cli” utasítást, amely aktiválta a magas jogosultságú ügynököt és a rosszindulatú művelet végrehajtását.
A lépések összekapcsolásával olyan hitelesnek tűnő eseménysor jöhetett volna létre, amely szerint egy ember ellenőrzést kért, a Gemini elvégezte azt, majd jóváhagyta a fertőzött pull requestet, noha ezek az események valójában nem történtek meg.
Az eset legfontosabb tanulsága, hogy az AI-ügynökök technikai elkülönítése önmagában nem elegendő. Minden ügynöknek saját, egyértelműen meghatározott identitással és korlátozott jogosultságokkal kell rendelkeznie. A szervezeteknek ezért az AI-ügynökök identitását, erőforrás-hozzáféréseit és egymás közötti kapcsolatait is be kell építeniük a fenyegetési modelljeikbe.