Dold kod renderas med hjälp av Public Use Area (ibland kallat Public Use Access), vilket är Unicode-specifikationens utbud av specialtecken reserverade för privat bruk för att definiera emojis, flaggor och andra symboler. Kodpunkter representerar varje bokstav i det amerikanska alfabetet när de skrivs in i en dator, men resultatet är helt osynligt för människor. Personer som granskar kod eller använder statiska analysverktyg ser bara tomma utrymmen eller tomma rader. För JavaScript-tolken översätts kodpunkter till körbar kod.
Osynliga Unicode-tecken uppfanns för decennier sedan, men har sedan dess till stor del glömts bort. Det vill säga fram till 2024, när hackare börjar använda den här karaktären för att dölja skadliga uppmaningar som matas till AI-motorer. Även om texten var osynlig för människor och textskannrar, hade LLM små problem med att läsa den och följa de skadliga instruktionerna den förmedlade. Sedan dess har AI-motorer utformat skyddsräcken för att begränsa karaktärsanvändningen, men sådana försvar åsidosätts regelbundet.
Sedan dess har Unicode-teknik använts i mer traditionella skadliga attacker. I ett av paketen Aikido analyserade i fredagens inlägg använde angriparen osynliga tecken för att koda den skadliga nyttolasten. Att inspektera koden visar ingenting. Men medan JavaScript körs extraherar en liten avkodare de faktiska byten och skickar dem till eval()-funktionen.
konstant s = v => (…v).map(w => (w = w.codePointAt(0), w >= 0xFE00 && w <= 0xFE0F ? w – 0xFE00 :w >= 0xE0100 && w <= 0xE01EF ? w – 0xE0100 + 16 : null)). Filtrera (n => n !== null);
utvärdering(Buffer.från(s(””).toString(”utf-8”));
”Den backtick-sträng som skickas till s() verkar tom för alla tittare, men den är fylld med osynliga tecken som, när de avkodas, ger en fullständigt skadlig nyttolast,” förklarade Aikido. ”I tidigare incidenter kunde den avkodade nyttolasten hämta och köra ett andrastegsskript som använder Solana som en leveranskanal för att stjäla tokens, referenser och hemligheter.”
Sedan de hittade det nya paketet på GitHub har forskarna hittat liknande paket på npm och VS Code-marknadsplatsen. Aikido noterar att många av de 151 upptäckta paketen har tagits bort sedan de först laddades upp, så det är troligt att endast ett litet antal är spridda under kampanjen.
Det bästa sättet att skydda dig mot plågan från attacker i leveranskedjan är att noggrant inspektera paket och deras beroenden innan du införlivar dem i ditt projekt. Detta inkluderar att granska paketnamn och söka efter stavfel. Om misstankarna om användningen av LLM är korrekta kan skadliga paket se allt mer legitima ut, särskilt om osynliga Unicode-tecken kodar den skadliga nyttolasten.
