SkillCloak laat kwaadaardige AI-agentvaardigheden statische scanners omzeilen met zelfuitpakkende verpakking

Scanners die bedoeld zijn om kwaadaardige add-on-vaardigheden voor AI-codeeragenten te onderscheppen, kunnen voor de gek worden gehouden door een paar eenvoudige veranderingen waardoor de malware blijft werken, blijkt uit een nieuwe studie van onderzoekers van de Hong Kong University of Science and Technology.

Hun sterkste truc glipte meer dan 90% van de tijd langs elke geteste scanner, en hetzelfde team bouwde een runtimechecker die de meeste verborgen vaardigheden opvangt die de scanners missen.

Vaardigheden zijn kleine pakketten, meestal een Markdown-instructiebestand plus een paar scripts, die agenten zoals Claude Code, OpenAI Codex en OpenClaw laden om een ​​nieuwe mogelijkheid op te pikken. Omdat een vaardigheid slechts een bundel bestanden is, kan dezelfde vaardigheid verschillende agenten tegenkomen. En het werkt met de eigen toegang van de agent: uw bestanden, uw terminal, uw opgeslagen wachtwoorden.

Een slechte kan inloggegevens stelen, de broncode kopiëren of een achterdeur installeren. Het meeste van wat een openbare marktplaats vermeldt, wordt geüpload door vreemden met weinig controle.

De belangrijkste verdediging tot nu toe was de vaardigheidsscanner, die de bestanden van een vaardigheid leest voordat je deze installeert en alles blokkeert dat er gevaarlijk uitziet. Het papier, getiteld “Verhul en ontplof,” test of dat ook daadwerkelijk stand houdt. Dat is niet het geval. Het verslaan van scanners is echter niet nieuw.

The Hacker News berichtte over onderzoekers die een nepvaardigheid langs elke scanner duwden waarmee ze te maken kregen, wat volgens de eigen telling van het bedrijf tienduizenden agenten bereikte. Wat dit artikel toevoegt is een manier om dit systematisch en op grote schaal te doen, en een verdediging die nog steeds werkt als dat zo is.

Hoe de verkapte vaardigheden doorkomen

Het hulpmiddel van de onderzoekers, VAARDIGHEDENherschrijft een kwaadaardige vaardigheid om er netjes uit te zien en zich precies hetzelfde te gedragen. Het werkt op twee manieren.

De lichtere herschrijft de weggeefbytes waarop een scanner toetst, met behulp van de eigen operators van het papier: verwissel een teken voor een look-alike uit een ander alfabet, of splits een gemarkeerde opdracht over een nieuwe regel, zodat het patroon van de scanner niet langer overeenkomt, maar de opdracht wordt nog steeds uitgevoerd.

De zwaardere, zelfuitpakkende verpakking, verplaatst de hele lading naar een map die de scanner overslaat, zoals .git/, achter een onschuldig ogende decoder die de vaardigheid alleen opnieuw opbouwt als de agent deze uitvoert. Scanners slaan dergelijke mappen over om tijd te besparen en valse alarmen te voorkomen, wat precies de blinde vlek is waar de truc misbruik van maakt.

Bij acht scanners en 1.613 echte kwaadaardige vaardigheden afkomstig van ClawHub, een openbare marktplaats, kwam de inpaktruc ruim 90% van de tijd voorbij elk van de acht, en langs de meeste van hen ruim 99%.

Door het lichtere herschrijven werd meer dan 80% op de meeste scanners en 96% op één scanner gewist. En de vermomming kost de aanvaller bijna niets: op Claude Code en OpenAI Codex werkten de verhulde vaardigheden net zo goed als de originelen.

Kijken naar wat een vaardigheid doet, niet hoe het eruit ziet

Omdat uiterlijk kan worden nagebootst, stellen de onderzoekers voor om in plaats daarvan gedrag te controleren, in een tool die zij noemen VAARDIGHEID DETONAAT. Het voert de vaardigheid uit in een sandbox en kijkt wat het doet op besturingssysteemniveau: wat het leest, wat het schrijft, waar het gegevens naartoe verzendt.

Er zijn twee ideeën die ervoor zorgen dat het voor agenten werkt. Het volgt gevoelige gegevens op basis van waar deze naartoe stromen, in plaats van hoe het eruit ziet, zodat base64 of encryptie dit niet verhindert. En het voert de instructies uit die een vaardigheid alleen tijdens runtime opbouwt, en dat is precies waar de inpaktruc zijn lading verbergt.

In een gecontroleerde test ving de checker 97% van de aanvallen op terwijl hij 2% van de veilige vaardigheden ten onrechte markeerde, een lager percentage vals alarm dan de scanners die hij verslaat, en bleef stabiel toen de vaardigheden werden verhuld. Op het gebied van kwaadaardige vaardigheden in de echte wereld werd 87% betrapt.

De scanner van Cisco, de sterkste geteste, ging de andere kant op: hij ving 99% van de vaardigheden uit de echte wereld vóór het cloaken en ongeveer 10% daarna.

Het voordeel is snelheid: een paar minuten per vaardigheid tegen een paar seconden van een scanner, hoewel deze één keer wordt uitgevoerd voordat een vaardigheid live gaat. Het werk is een preprint en is nog niet door vakgenoten beoordeeld; de onderzoekers hebben hun code vrijgegeven.

Gebeurt al in het wild

Niets hiervan is hypothetisch. Openbare marktplaatsen zitten al vol kwaadaardige vaardigheden die scanners niet kunnen tegenhouden: Bitdefender ontdekte dat ruwweg 17% van de vaardigheden die het op één marktplaats controleerde, verborgen kwaadaardige code bevatte, en Koi Security telde er 341 in een enkele campagne die het ClawHavoc noemde, zoals THN meldde, en later 824 naarmate de markt groeide.

Sommigen gebruiken de exacte trucs van het papier. Van de vijf ontwijkingsvaardigheden die Unit 42 ondanks de ingebouwde scanner nog steeds live op ClawHub vond, heeft één, omnicogg, zijn README opgevuld met 22 MB rommel om voorbij de maximale grootte van de scanner te glippen, dezelfde operator die het papier test. Nog twee leverden Mac-wachtwoordstelers, en twee kaapten het financiële advies van de agent om affiliate-links te pushen en de lancering van meme-munten te manipuleren.

De runtime-kloof komt ook buiten de vaardighedenmarktplaatsen naar voren. Een strak ogende GitHub-repository leidde er onlangs toe dat Claude Code een omgekeerde shell op de eigen machine van de ontwikkelaar opende, waardoor de aanvaller de afstandsbediening kreeg. De kwaadaardige code heeft nooit in de repository gestaan; het installatiescript haalde het tijdens runtime op uit een DNS-record, dus een statische scan kon niets opvangen. Mozilla’s 0DIN-team heeft de keten getraceerd.

Een gerelateerde fout treft de toolbeschrijvingen die agenten via het Model Context Protocol lezen. Microsoft waarschuwde dat een vergiftigde beschrijving, gewijzigd nadat de tool was goedgekeurd, een financieel agent stilletjes ertoe aanzette onbetaalde facturen te lekken. Het mechanisme is anders, maar de gebroken veronderstelling is hetzelfde: dat wat de beoordeling heeft doorstaan, ook werkt.

Een aantal grenzen zijn de moeite waard om duidelijk te vermelden. Nog niemand heeft aanvallers betrapt op het gebruik van deze exacte inpaktrucs op grote schaal; de praktijkgevallen hier zijn aangrenzende ontwijkingen, niet SKILLCLOAK zelf. De runtime checker is een onderzoeksprototype, sterk in het laboratorium, maar niet getest op een live marktplaats of onder een aanvaller die deze actief probeert te ontwijken. En elk prestatienummer is van de auteurs, afkomstig uit een artikel dat niet door vakgenoten is beoordeeld. De richting is duidelijk zichtbaar; de specifieke cijfers verdienen de gebruikelijke voorzichtigheid die te danken is aan het vroege werk van een enkele groep.

Dat is de echte les, en het is waar een groeiende lijn van werk samenkomt. Een scanner beoordeelt een vaardigheid op basis van hoe deze eruitziet wanneer deze wordt ingediend, maar het kwaadaardige gedrag verschijnt pas zodra de vaardigheid wordt uitgevoerd, nadat de scan is voltooid. De vertrouwensbeslissing moet dus van de poort naar de markt worden verplaatst naar de machine waar de vaardigheid wordt uitgevoerd.

Waar moet je op jagen? De ontwijkingen in de krant laten tekenen achter waar een verdediger naar kan zoeken, zelfs als het gaat om een ​​vaardigheid die de scan heeft doorstaan:

  • Grote bestanden of bestanden met een hoge entropie die zijn weggestopt in mappen die een scanner vaak overslaat, zoals .git/ of build/.
  • Vaardigheden die code alleen uitpakken of samenstellen wanneer deze wordt uitgevoerd, in plaats van deze in het zicht te verzenden.
  • Bestanden zijn ruimschoots groter dan een redelijk formaat, de truc die een vaardigheid onder de maatlimiet van een scanner laat glijden.

Geen van deze is op zichzelf een bewijs. Het zijn goedkope eerste vlaggen, geen oordeel.

Voor teams die codeeragenten gebruiken, is de badge ‘geslaagd voor de scan’ een startpunt en geen garantie. Behoud statisch scannen als goedkope hygiëne, maar let op wat een vaardigheid doet wanneer deze wordt uitgevoerd: de bestanden die ermee worden aangeraakt, de opdrachten die worden uitgevoerd en waar de gegevens naartoe worden verzonden.

Het artikel biedt ook concrete oplossingen, zoals het hashen van een vaardigheid wanneer deze wordt gescand en het opnieuw controleren vóór elke run om ladingen op te vangen die later worden uitgepakt, en het markeren van vaardigheden die ondoorzichtige klodders in genegeerde mappen verzenden of bestanden voorbij een maximale grootte opvullen. Geen van hen dicht de kloof op eigen kracht, en dat is het punt: de duurzame verdediging houdt het gedrag tijdens de runtime in de gaten.

Installeer bovendien alleen vanaf een gecontroleerde bron, geef agenten de minste toegang die ze nodig hebben en gebruik ze niet op machines die geheimen bevatten die de moeite waard zijn om te stelen.

Thijs Van der Does