Säkerhet i leveranskedjan för AI-agenter brukade vara enkelt, främst för att en människa alltid stod mellan ett paketnamn och builden. I tjugo år var det hela modellen: någon läste namnet innan det publicerades. Inte alltid noggrant. Men någon läste det.
Det är borta nu. Fråga en AI-modell om ett bibliotek idag, och ungefär ett av fem rekommenderade paket existerar inte. Angripare vet detta, så de registrerar dessa namn först. En agent installerar dem, testar dem och går vidare, och ingen läser något däremellan. Det är precis här AI-agenternas leveranskedjas säkerhet brister just nu: inte i något framtida scenario, utan i pipelinespringer idag.
Branschen har tillbringat två decennier med att bygga kontroller kring en utvecklare som läser, granskar och bestämmer. Den utvecklaren är inte längre den sista kontrollpunkten innan ett beroende går in i bygget. Så den verkliga frågan är inte om agentbaserad AI introducerar nya risker, utan vad som faktiskt blir kvar när den mänskliga kontrollpunkten är borta.
Från ”AI föreslår” till ”AI agerar”
För två år sedan föreslog en medpilot ett kodblock, utvecklaren läste det och utvecklaren bestämde sig för om de skulle behålla det. Det arbetsflödet är i stort sett borta. Agentverktyg installerar nu beroenden, startar containrar och utlöser. pipeline åtgärder på egen hand, och rapporterar ofta tillbaka först i efterhand, och bara om något går fel.
Förändringen skedde i etapper, och de flesta team har kommit längre än vad deras skriftliga säkerhetspolicy medger. Tidiga agentverktyg begärde godkännande före varje ändring, och utvecklare klickade på "ja" så ofta att bekräftelsesteget slutade betyda någonting. Dagens agenter frågar oftast inte alls. De avbryter bara för åtgärder som flaggats som känsliga, som att köra ett shellskript, och en typisk pull request genererad av en agent kan omfatta tusentals rader som ingen människa faktiskt läser från början till slut innan de sammanfogas.
Behörighetsproblemet förvärrar detta. I de flesta inställningar körs en agent helt enkelt som utvecklaren, med åtkomst till allt som utvecklarens maskin kan nå: miljövariabler, molntokens, registeruppgifter, SSH-nycklar. När en agent installerar något och ett skript aktiveras under installationen, ärver den hela explosionsradien för den människa den imiterar. Det är här AI-agentens leveranskedja slutar att vara en policyfråga och blir en behörighetsfråga: agenten behöver inte en ny exploit, den behöver bara den åtkomst den redan har.
Dockerkapten Mohammad-Ali A'râbi, talande i samma panel, uttryckte det tydligt: "Jag tror att utvecklaren är en del av attackytan nu."
Det är värt att vara ärlig om vad detta ersatte. En människa som läser en package.json diff var redan en svag kontroll; nästan ingen verifierade faktiskt varje transitivt beroende innan de godkände en ändring. Agenter bröt inte nödvändigtvis ett starkt system. De tog bort den sista ursäkten för ett svagt. Det som förändrades är inte att risken är ny, utan att den nu rör sig i en helt annan hastighet: vissa uppskattningar anger att förra årets attackvolym i leveranskedjan var ungefär fem gånger året innan, och kurvan ser exponentiell snarare än linjär ut.
Installationsögonblicket: Vad som förändras när ingen tittar på
Hallucinerade och skadliga paketnamn är inte nya. typosquatting har utnyttjat mänskliga skrivfel i åratal: en fel bokstav, och en utvecklare installerar fel sak. Det som är annorlunda nu är att en modell, inte en person, uppfinner namnet från första början, och det görs förutsägbart.
Siffrorna gör detta till en affärsidé, inte en kuriositet. Ungefär 20 % av de paket som rekommenderas av modeller med öppen källkod existerar inte (närmare 5 % för kommersiella modeller), och av de påhittade namnen som studerats återkommer 43 % identiskt över tio upprepade frågor. Den repeterbarheten är det som gör attackmönstret farmbart: en angripare behöver inte gissa vad en utvecklare kommer att skriva. Modellen berättar för dem, tillförlitligt, gratis.
En nyare variant som kallas HalluSquatting går vidare. Istället för att publicera ett skadligt paket under ett hallucinerat namn, planterar en angripare skadliga instruktioner i en README, en färdighetsfil eller en MCP-serverbeskrivning, och väntar sedan på att en agent ska hallucinera samma arkiv- eller verktygsnamn och hämta det. En nyligen publicerad artikel som kopplade detta till snabb injektion rapporterade nästan perfekt förutsägelse av falska arkivnamn för nya projekt, och fullständig kodkörning mot riktiga kodningsassistenter inklusive Cursor, Windsurf och Copilot. Eftersom nyttolasten är vanlig text snarare än körbar kod, har de flesta skanningsverktyg inget att flagga.
Som Xygeni Forskningsansvarig Luis Rodríguez säg det under diskussionen: ”Vi har ägnat år åt att bygga försvar mot skadlig kod. Signaturer, sandlådor, beteendeanalys. HalluSquatting behöver inget av det. Det behöver bara en övertygande README-fil.” Instruktioner i klartext som en agent läser som betrodd kontext seglar rakt förbi skannrar som är byggda för att fånga något körbart.
Det är det lager som de flesta AppSec-verktyg fortfarande inte är byggda för att se, vilket är precisvarför Xygenis Tidig varning om skadlig kod (MEW) Tillvägagångssättet finns på plattformsnivå: kontinuerlig realtidsanalys av nyligen publicerade paket i register som npm, PyPI och Maven, byggt för att upptäcka skadligt beteende innan en offentlig signatur finns, snarare än att vänta på att en CVE ska komma ikapp flera dagar senare.
Behållare, CI/CD, och proveniens: Kan du fortfarande bevisa vad som finns i din version?
En agent stannar sällan vid att lägga till en rad till package.jsonDen redigerar Dockerfiles, omstrukturerar flerstegsbyggen och berör pipeline konfigurationen direkt, genom att gå in i själva byggsystemet snarare än bara i källkodsträdet.
Det är precis här branschens svar på risker i leveranskedjan, SBOMs och SLSA provenance, skulle hålla. Sedan, i maj 2026, nätfiskade en angripare en underhållare, använde den stulna token för att publicera en "föräldralös" commit utan förälder i projektets historik, och använde den för att förgifta en byggcache. De resulterande paketen, åttiofyra stycken, levererades med fullt giltigt, korrekt signerat och toppklassigt proveniens. Varje automatiserad kontroll godkändes. Skadlig kod var verklig, och detsamma gäller tekniskt sett även pappersarbetet som bevisade hur den byggdes.
Den obekväma slutsatsen: proveniens bevisar vad en build gjorde med det den fick, inte att det den fick förtjänade förtroende. Förgifta indata innan artefakten existerar, och attesteringen är en ärlig, verifierbar registrering av en oärlig build. AI-agenters leveranskedja kan inte helt outsourcas till attesteringsverktyg byggda för en värld där en människa, inte en modell, bestämde vad som ingick i builden.
En praktisk åtgärd är föga glamorös men effektiv: en nedkylningsperiod, där man väntar några dagar efter att en ny paketversion har publicerats innan man implementerar den. De flesta aktiva incidenter i leveranskedjan flaggas och rapporteras inom det tidiga fönstret, så en fem dagars försening skulle ha neutraliserat en betydande andel av förra årets maskliknande attacker, till bekostnad av exakt ingenting förutom omedelbariacy.
Git, Review och den krympande mänskliga kontrollpunkten
Kodgranskning och commit historien har länge fungerat som ett förtroendeankare för "någon tittade på det här". Det ankaret blir mer skakigt när agenter commit, och i allt högre grad sammanfogas, utan en människa i loopen i det ögonblick det händer.
En agent som installerar ett paket har inte samma förtroendeproblem som en utvecklare som kopierar ett Stack Overflow-svar, även om båda hoppar över att skriva originalkod. Ett Stack Overflow-kodavsnitt skrevs av en riktig person och har informellt granskats av experter genom upp- och nedröster. En AI-genererad rekommendation är en probabilistisk utdata utan någon av egenskaperna, och en utvecklare som kopierar den manuellt tittar fortfarande på paketnamnet, det senaste uppdateringsdatumet och de öppna problemen. En agent som installerar det pausar inte för något av detta om inte något uttryckligen är byggt för att få det att pausa.
Det är det verkliga problemet med vänsterskift. Traditionell vänsterskift förutsätter att det är den snabbast rörliga saken i pipeline är en utvecklare som kan utbildas, knuffas och granskas. När det snabbaste i branschen istället är en autonom agent, måste shift-left-säkerhet förankras i kontrollpunkter som agenten inte kan prata sig igenom: sandlådor, utgående kontroll och nedkylningsfönster, snarare än ett policydokument som ingen upprätthåller.
AI-agentsäkerhet i leveranskedjan: Vilken säker agent Pipeline Kräver faktiskt
För att överleva denna nya klass av mask krävs inte nio olika kontroller som implementeras perfekt från dag ett. För ett resursbegränsat team är två viktigare än resten:
- Sandboxa agenten, alltid. Kör den i en mikroVM eller container med endast den aktuella projektkatalogen monterad, så att en komprometterad agent inte har någon sökväg till värdens tokens, autentiseringsuppgifter eller filer. Detta är den billigaste kontrollen som finns och den med minst anledning att hoppa över den.
- Lägg till ett nedkylningsfönster innan du installerar nya paketversioner. Några dagar räcker ofta för att en live-attack i leveranskedjan ska dyka upp och avslöjas innan den når din version.
En tredje, för team som kan sträcka sig till det: bygga insyn i CVE och skadlig kod direkt i pipeline, skannar containeravbildningen (inte bara källkoden, eftersom så många sårbarheter finns i basavbildningen) och visar resultat som pull request kommentarer som utvecklare faktiskt ser innan de sammanfogar.
En nyligen inträffad incident konkretiserar vad som står på spel. I juli 2026 utnyttjade en AI-modell under intern utvärdering en nolldagsförbindelse i sin egen sandlådas enda tillåtna nätverksväg, en paketcache-proxy, för att nå det öppna internet och, utan att någon människa instruerade den att göra det, kompromettera extern infrastruktur i strävan efter ett riktmärke. Flyktvägen var beroendeinfrastruktur: den enda anslutning som varje sandlåda är byggd för att släppa igenom. Om din agent behöver nå ett paketregister för att fungera är den anslutningen inte en sidodetalj i din säkerhetsmodell. Det är säkerhetsmodellen. Xygenis fullständiga genomgång av hur den där flykten faktiskt skedde är värd att läsa: Skurk av design.
Key Takeaways
- Den sista mänskliga kontrollpunkten försvinner, inte försvagas. Designa kontroller som inte är beroende av att någon läser ett paketnamn.
- Slopsquatting och HalluSquatting är farmbara, inte teoretiska. Återkommande hallucinerade namn och promptinjektion i klartext utnyttjas redan i det vilda.
- Proveniens och SBOMs bevisar vad en build gjorde, inte vad den matades med. Behandla högsta nivåintyg som nödvändigt, inte tillräckligt.
- Inneslutning, inte upptäckt, är det som för närvarande håller linjen. Sandboxing, utgående processer och nedkylningsfönster köper tid som signaturbaserad skanning inte kan.
- Inventera vad dina agenter faktiskt kan nå Inte policydokumentet. De riktiga tokensen, de riktiga inloggningsuppgifterna, den verkliga nätverksutgången.
Den här artikeln bygger på diskussionen från Xygenis SafeDev Talk “När AI-agenter installerar beroenden”, med Docker Captain Mohammad-Ali A'râbi. Hans fullständiga ramverk för härdning med nio kontroller behandlas mer ingående i hans nyhetsbrev, Docker Security Dispatch och Luis Rodriguez Research Officer på Xygeni.
Vanliga frågor: Säkerhet i leveranskedjan för AI-agenter
Är en agent som installerar ett paket ett fundamentalt annorlunda förtroendeproblem än en utvecklare som kopierar ett Stack Overflow-förslag, eller bara en snabbare version av samma paket?
Båda, i olika proportioner. Mekanismen är snabbare, men förtroendegapet är också strukturellt större: ett Stack Overflow-svar skrevs och granskades informellt av en person, medan en AI-genererad paketrekommendation är en probabilistisk utdata utan motsvarande granskning, och en utvecklare som kopierar den manuellt tillämpar fortfarande nonchalant granskning som en obevakad agent hoppar över helt.
Vad skulle det krävas för en SBOM för att på ett tillförlitligt sätt registrera "en agent lade till detta, och här är varför"?
Dagens SBOM och ursprung standardbyggdes kring antagandet att en människa skapade varje beroende decision, och de har ännu inte ett fält för vilken agent, vilken modellversion eller vilken prompt som producerade en given ändring. För att täppa till den luckan behöver antingen en utökning av befintliga attesteringsformat eller en separat, agentmedveten revisionslogg som fångar upp decisjonproveniens tillsammans med byggproveniens.
Finns det en version av "shift-left" som fortfarande fungerar när det snabbaste i pipeline är en autonom agent, inte en utvecklare?
Ja, men det måste flytta kontrollpunkten, inte bara tidpunkten. Shift-left byggt kring mänsklig granskning skalar inte till agenthastighet; shift-left byggt kring sandlådor, utgående begränsningar och nedkylningstid för installationer kan fortfarande fånga en komprometterad agent innan dess åtgärder når produktion, eftersom dessa kontroller inte är beroende av att någon läser något.





