Security Blog

Du bad din agent om at rette fejlene. En af dem var skrevet af en angriber.

#331

October 2, 2026 · By Marketing team

← All posts

En falsk Sentry-fejlrapport narrer AI-kodeagenter til at køre en angribers kode med udviklerens fulde rettigheder i 85 % af tilfældene. Selve injektionen er ikke katastrofen; de stående adgangsoplysninger, en kapret agent kan nå frem til, er det.

En udvikler åbner sin AI-kodeagent og skriver den mest almindelige anmodning i verden: "kig på de uløste Sentry-fejl og ret dem." Agenten henter fejllisten via sin Sentry-forbinder, læser det øverste problem, følger de rettelsesskridt, der står lige i rapporten, og kører dem. Et halvt minut senere har den kørt en angribers kode på udviklerens maskine, med udviklerens fulde rettigheder, og ingen gjorde noget forkert.

Det er Agentjacking, offentliggjort i denne måned af Tenet Security, og det virkede 85 % af tiden mod de tre mest populære kodeagenter på markedet: Claude Code, Cursor og Codex [1][2].

Hvad der faktisk skete

Først, hvad Sentry er: en af de mest udbredte fejlovervågningstjenester i software. Når din app kaster en fejl eller crasher, fanger Sentry den og arkiverer den rapport, dine udviklere triagerer — den ligger inde i en meget stor del af de apps, du rører ved hver dag. For at sende den de rapporter, indlejrer hver app en DSN: en klientnøgle, der bevidst følger med i din hjemmesides kildekode, så browseren kan ringe fejlene hjem. Alle kan læse den. Og enhver, der har den, kan POSTe en fejlhændelse ind i dit Sentry-projekt.

Det er hele nøglen til angrebet. Tenet skabte en falsk fejlhændelse, hvis message-felt var formateret til at ligne Sentries egne rettelsesvejledninger: pæn markdown, en "anbefalet rettelse", en kommando, der skal køres. De indsendte den med den offentlige DSN. Og så ventede de på det mest naturlige, en udvikler gør — bede agenten om at tømme fejlkøen.

Agenten spørger Sentry via sin MCP-forbinder. Forbinderen giver fejlen tilbage som betroet systemoutput. Agenten kan ikke skelne en ægte Sentry-rapport fra en forfalsket; de har præcis samme form byte for byte. Så den gør, som den får besked på, og kører "rettelsen", typisk et npx-kald til en angribers pakke. Derfra har den alt, hvad udvikleren har: miljøvariabler, Git-legitimationsoplysninger, private repository-URL'er, cloud-nøglerne i ~/.aws/.

Tenet fandt 2.388 organisationer med injicerbare DSN'er, fra selvstændige udviklere op til Fortune 100. I deres kontrollerede tests kørte agenterne reelt de injicerede instruktioner hos rigtige virksomheder — herunder, ifølge Tenet, en 250 milliarder dollar stor Fortune 100-teknologivirksomhed, hvis AI-agent læste den falske fejlrapport og kørte Tenets kode på to af virksomhedens maskiner [1][3]. Offentliggjort over for Sentry den 3. juni. Virksomheden anerkendte det samme dag og afslog at rette det i roden, idet de kaldte problemet "teknisk set ikke forsvarligt". De udsendte et indholdsfilter, der blokerer én bestemt payload-streng [4].

Det er ikke Sentry, der er skødesløs

Her kommer den ubehagelige del: intet i den kæde var en fejl. DSN'en skal være offentlig. MCP-serveren skal returnere dine fejldata. Agenten skal handle på de diagnoser, du bad den rette. Hvert skridt var autoriseret, og det er præcis derfor, ingen firewall, ingen EDR, ingen systemprompt fangede det.

Fejlen er strukturel, og den er ikke Sentries alene. Ethvert værktøj, der fodrer en agent med tekst, en udefrakommende kan påvirke — en fejltracker, en opgavekø, et scrapet webark, et delt dokument — er en injektionskanal, og agenten behandler det hele som én udifferentieret strøm af instruktioner. Prompt injection, to år inde i agentæraen, er stadig uløst: du kan ikke pålideligt holde fjendtlig tekst ude af en models ræsonnement. Antag, at du ikke kan.

Injektionen er ikke katastrofen

Her er den del, der er værd at sidde med. Grunden til, at Agentjacking er en fem-alarm-brand, er ikke, at agenten blev snydt. Det er hvad den snydte agent kunne nå frem til. Den kørte med udviklerens fulde stående adgang: hver nøgle i miljøet, hver adgangsfil på disken, hele nøgleringen en kommando væk.

Den sprængradius er ikke en naturlov. Det er en konfiguration. Agenten havde stående adgang til det hele, fordi det er sådan, adgangsoplysninger gemmes i dag — omgivende, på boksen, læsbare af hvad der end kører der. Fjern det, og samme kapring løber ind i en mur.

Bygget til det her, med vilje

En Clavitor-adgangsoplysning ligger aldrig i det miljø, hvor agenten kører. Der er ingen ~/.aws/credentials at læse, ingen API-nøgle i en miljøvariabel at eksfiltrere, for den hemmelige værdi lander aldrig dér, hvor koden kører — agenten får resultatet af at bruge en adgangsoplysning, ikke selve adgangsoplysningen. Den kan kun nå den ene ting, den er navngivet til, så den kan ikke opregne lageret for at finde ud af, hvad der ellers er der. Og tildelingen er afgrænset og kan tilbagekaldes, så en session, der begynder at opføre sig som en angriber, kan afbrydes midt i handlingen.

Her er den ærlige kant: det stopper ikke injektionen, og det stopper ikke en kapret agent i at køre en kommando. Prompt injection er uløst, og vi påstår ikke at løse det. Det, der ændrer sig, er udbyttet. Angriberens kode kører stadig — og finder et miljø, hvor der står intet værd at stjæle i det. Kapringen lykkes, og kuppet mislykkes.

Vi skrev de regler ned, som et system til adgangsoplysninger skal holde, når selve agenten kan vendes imod dig, begyndende med at hemmeligheden aldrig bor dér, hvor koden kører, og at en agent kun når frem til det, den er navngivet til. Kør dine igennem dem: clavitor.ai/rules.

Læren er ikke "patch Sentry"

Sentry kan ikke rette det her, og sagde det. Og det næste forgiftede værktøj bliver ikke Sentry. Så længe dine agenter bærer omgivende, stående adgangsoplysninger, er hvert betroet værktøj, de læser, en ladt pistol, og prompt injection er den aftrækker, du ikke kan låse.

Du kommer ikke til at holde den ondsindede tekst ude. Så hold op med at holde adgangsoplysningerne inden for rækkevidde af den agent, der læser den.

Clavitor (@clavitorai) er boksen til adgangsoplysninger bygget til AI-agenter — og imod dem. clavitor.ai

Kilder

[1] Tenet Security — "Agentjacking: hijacking coding agents with fake Sentry errors" (85 % succes; 2.388 organisationer; mekanisme): https://tenetsecurity.ai/blog/agentjacking-coding-agents-with-fake-sentry-errors/

[2] The Hacker News — "Agentjacking Attack Tricks AI Coding Agents Into Running Malicious Code": https://thehackernews.com/2026/06/agentjacking-attack-tricks-ai-coding.html

[3] The New Stack — "A public Sentry key is all it takes to hijack Claude Code, Cursor, and Codex": https://thenewstack.io/agentjacking-sentry-mcp-attack/

[4] Infosecurity Magazine — "New 'Agentjacking' Attacks Could Hijack AI Coding Agents" (Sentries svar): https://www.infosecurity-magazine.com/news/agentjacking-attacks-hijack-ai/