Repeat-After-Me lurer seks agentrammeverk til å kjøre angriperens verktøykall
tirsdag 13. oktober · KI-generert · Kilde: CSO Online
Behandle hvert verktøykall fra en KI-modell som upålitelig input, for seks utbredte agentrammeverk kjørte angriperens kall bare fordi modellen ble bedt om å gjenta teksten.
Modellen sa nei, men LangGraph kjørte verktøykallet likevel. Det er kjernen i en ny artikkel fra forskere ved Pennsylvania State University, Université Montpellier og Dartmouth College, omtalt av CSO Online. Angrepet, som forskerne kaller «Repeat-After-Me», fungerte på LangGraph, Microsoft Agent Framework, AutoGen, Google Agent Development Kit 2.0, AWS Strands Agents og CrewAI. Artikkelen ble lagt ut på arXiv 9. oktober og er ikke fagfellevurdert.
Trikset er enkelt. Angriperen kjenner formatet orkestreringslaget gjenkjenner som et verktøykall, skriver et ferdig kall med egne argumenter og ber modellen gjenta det ordrett. Modellen tror den bare kopierer tekst, mens orkestratoren tolker svaret som en kjørbar forespørsel. I den eneste fullstendige transkripsjonen brukte forskerne LangGraph 1.2.0 med Llama 3.1 8B gjennom Ollama, to ufarlige stub-verktøy og en systemprompt som eneste vern. Første forsøk ble avvist. Da forespørselen ble rammet inn som hypotetisk, leverte modellen et strukturert kall til launch_missiles med max_distance = 500, og ToolNode kjørte det umiddelbart. Avvisningen kom først etter at verktøyet hadde svart.
«Systemprompten formet hva modellen sa, ikke hva orkestratoren gjorde» — forskerne bak ToFu-artikkelen
For de fem andre rammeverkene skriver forskerne bare at oppførselen ble reprodusert, uten flere detaljer, og funnet betyr ikke at alle oppsett med disse rammeverkene er sårbare. Forskerne har meldt den manglende sjekken før kjøring til LangGraph-vedlikeholderne. LangChain, Microsoft, Google, AWS og CrewAI hadde ikke svart CSO Online da saken ble publisert.
Når angriperen kan diktere argumentene, må verktøyet selv validere input. Derfor bygde forskerne ToFu, et fuzzing-rammeverk som leser hvert verktøys beskrivelse og sjekker om koden faktisk håndhever grensene beskrivelsen lover, for eksempel å holde seg innenfor en arbeidsmappe. Av 273 åpne MCP-servere med 3405 verktøy hadde 118 servere verifiserte feil: 253 bugs fordelt på 343 verktøy etter manuell gjennomgang. De alvorligste var 64 path traversal-feil, 7 SSRF-feil, 5 dataeksfiltreringsfeil og 3 OS command injection-feil. Resten var stort sett reflected output og log injection. Mange verktøy stoler i praksis på at modellen renser input, skriver forskerne, selv om prompter, hentet innhold og output fra andre verktøy kan påvirke argumentene.
«Gyldig syntaks eller en overbevisende forklaring fra modellen skal aldri erstatte tillatelse» — Vibhum Dubey, uavhengig sikkerhetsforsker, til CSO Online
Artikkelen sier ikke om feilene i MCP-serverne er rettet, eller om noen av dem er utnyttet.
Hva bør du gjøre?
- Legg inn en egen autorisasjonssjekk mellom modellens output og kjøringen av sensitive verktøy, med eksplisitt godkjenning for alt som skriver, sletter eller kjører kommandoer.
- Valider argumentene i selve verktøyet du skriver: en filsti som skal holde seg i arbeidsmappen, må sjekkes i koden, ikke bare stå i beskrivelsen til modellen.
- Gå gjennom vedlegg F i artikkelen (arXiv 2610.13651), som lister alle de 273 testede MCP-serverne som GitHub-repoer, og kjør tredjeparts servere med begrenset fil- og nettverkstilgang.