Aikido

Die npm-Backdoor ermöglicht es Hackern, Glücksspielergebnisse zu manipulieren.

Unsere Malware-Erkennungspipelines haben kürzlich eine kleine Gruppe von Paketen auf npm entdeckt, die mir irgendwie bekannt vorkamen.

Pakete wie json-bigint-erweitern, jsonfx, und jsonfb ahmten die beliebten json-bigint Bibliothek: gleiche Funktionalität, identische README-Datei und sogar ein Autorenname, der dem ursprünglichen Betreuer unangenehm ähnlich ist.

Meistens deutet dieses Muster auf gängige Angriffe auf die Lieferkette hin, wie Typosquatting und Abhängigkeitsverwirrung, die darauf abzielen, Systeme zu kompromittieren und secrets zu stehlen. Aber dieser Fall fühlte sich fast sofort anders an.

Es hat nicht versucht, alle zu treffen. Es hat versucht, etwas zu treffen.

Die Entführung

Auf den ersten Blick json-bigint-erweitern verhält sich genau wie das legitime json-bigint Bibliothek: Sie exportiert die bekannten Funktionen „parse/stringify“, die zur Unterstützung großer Ganzzahlen in JSON verwendet werden. Tatsächlich würden die meisten Entwickler und Organisationen nichts Ungewöhnliches bemerken. Diese Nutzlast wurde speziell entwickelt, um unauffällig zu bleiben und nur dann ausgelöst zu werden, wenn sie erkennt, dass sie in einer bestimmten Zielumgebung ausgeführt wird, indem sie den Wert einer bestimmten Umgebungsvariablen namens SERVICE_NAME.

Sobald es erkennt, dass es sich in der richtigen Umgebung befindet, installiert es zwei Backdoors:

Zunächst wird eine gezielte Express-Middleware installiert, die speziell in eine Zahlungsroute eingebunden ist (/v1/bezahlen/waren-kaufen). Diese Middleware dient dazu, zusätzlichen Code, der von einem Endpunkt abgerufen wird, dynamisch auszuführen. Bei näherer Betrachtung des abgerufenen Codes scheint es sich um ein komplexes System zur Umschreibung von Cashflows zu handeln, das zur Manipulation eines Glücksspiels verwendet wird.

const routeInjectionRules = {
    '/v1/pay/purchase-goods': {
      identify: function (handlers, fn, index) {
        ...
      },
      position: 'after',
      extraMiddlewares: [function (req, res, next) {
       // Translation: [Plugin] Mount risk middleware as post-payment success logic.
log('[插件] 支付成功后的后置逻辑挂载risk'); 
       riskCode(req, res, next); // Executes dynamically fetched code
      }]
    }
  };

Zweitens eine Middleware auf Prototyp-Ebene, die Express.js stillschweigend mit Monkey-Patches versieht und globale Middleware hinzufügt, um jeder POST-Route. Diese Middleware wartet auf ein Geheimnis. x-Operation Kopfzeile und schaltet vier Arten von Befehlen für den Bediener frei:

  1. RunSQL: Führen Sie beliebige SQL-Befehle in der Produktionsdatenbank aus.
  2. RunFileList: Listet serverseitige Dateien und Verzeichnisse auf.
  3. RunFileContent: Laden Sie den Inhalt einer ausgewählten Datei herunter.
  4. Komprimieren und herunterladen: Ein Verzeichnis als ZIP-Datei herunterladen.

Das Betreiber-Dashboard

Innerhalb des Pakets befindet sich auch eine eingebettete HTML-Seite für einen „Verzeichniskomprimierungs-Download-Dienst“ (chinesischer Titel: Verzeichnis-Komprimierungs-Download-Service).

Bediener-Dashboard

Obwohl diese Seite nirgendwo im von uns beobachteten Backdoor-Code verknüpft war, scheint es sich um eine benutzerorientierte Oberfläche zum Durchsuchen und Exfiltrieren von Verzeichnissen als ZIP-Dateien zu handeln.

Manipulation von Glücksspielergebnissen

Das Beängstigende daran: das Risikocode(...) Die in der Middleware aufgerufene Funktion wird ferngesteuert und alle 30 Sekunden aktualisiert. 

Obwohl die Nutzlast (noch) nicht aktiv aufgerufen wird, haben wir eine Logik beobachtet, die in der Lage ist, die jüngste Spielhistorie eines Benutzers rückwirkend anzupassen, sodass sich sein Guthaben um einen ausgewählten Betrag verändert, während gleichzeitig die gesamte Guthaben-Kette neu aufgebaut wird, damit die Spielprotokolle intern weiterhin konsistent erscheinen.

Es handelt sich um einen ausgeklügelten Balance- und Geschichtsschreiber, der:

  • Liest die letzten Cashflow-Zeilen für einen Benutzer.
  • Wählt ein Fenster mit Spielrunden aus.
  • Passt die Einsatz-/Auszahlungswerte an, um einen Zielbetrag im Wallet des Benutzers zu erreichen.
  • Erstellt die vollständigen Spielprotokolle neu, damit sie in der Datenbank intern konsistent bleiben.

Das bedeutet, dass das Ziel nicht nur Betrug ist. Es handelt sich um Betrug, der interne Konsistenzprüfungen übersteht, indem Gewinne und Verluste gefälscht werden, während die Buchhaltung konsistent bleibt.

Einige der umgebenden Verweise weisen auf eine Glücksspiel-App namens Bappa Rummy hin, die online über Empfehlungsprogramme und alternative App-Stores weit verbreitet beworben wird, aber nicht mehr im offiziellen Google Play Store erhältlich ist.

Erkennung und Prävention

Wir wissen zwar nicht, wer hinter dieser Hintertür steckt, aber das Beängstigende daran ist, was sie tut, sobald sie in der richtigen Umgebung landet. Es handelt sich hierbei nicht „nur“ um ein typisches Abhängigkeitsimplantat, das Quellcode, secrets oder Kundendaten exfiltriert.

Stattdessen greift es direkt in die Geschäftslogik ein, führt ferngesteuerten Code im realen Datenverkehr aus und kann die datenbankgestützte Finanzhistorie überschreiben. Wenn Ihre Überwachung davon ausgeht, dass Datenbankprotokolle vertrauenswürdig sind, kann diese Art der Manipulation lange Zeit unbemerkt bleiben.

Wenn Sie bereits Aikido verwenden, würde dieses Paket in Ihrem Feed als kritischer Befund mit einer Bewertung von 100/100 gekennzeichnet werden.

Aikido nicht bei Aikido ? Erstellen Sie ein kostenloses Konto und verknüpfen Sie Ihre Repositorys. Der kostenlose Tarif umfasst unseren Malware-Schutz (keine Kreditkarte erforderlich).

Schließlich kann ein Tool, das Malware in Echtzeit stoppt, sobald sie auftritt, eine schwerwiegende Infektion verhindern. Das ist die Idee hinter Aikido Chain, einem kostenlosen Open-Source-Tool, das npm, npx, yarn, pnpm und pnpx umgibt und sowohl KI als auch menschliche Malware-Forscher einsetzt, um die neuesten Risiken in der Lieferkette zu erkennen und zu blockieren, bevor sie in Ihre Umgebung gelangen.

Indikatoren für Kompromittierung

Pakete und Autoren:

  • jsonfb (von sidoraress)
  • jsonfx (von sidoraress)
  • json-bigint-extend (von sidoraress & infinitynodestudio)

Die Backdoor kommuniziert mit einem Remote-Host sowohl für Payload-Updates als auch für die Protokollierung.

Beobachtete Endpunkte:

  • https://payment[.]y1pay[.]vip/v1/risk/get-risk-code
  • https://payment[.]y1pay[.]vip/v1/risk/log
  • https://payment[.]snip-site[.]cc

Andere IOCs und jagdbare Verhaltensweisen:

  • Anfragen, die einen x-operation-Header mit einem der vier Operationstoken enthalten:
    • RunSQL (Token: cfh2DNITa84qpYQ0tdCz)
    • RunFileList (Token: m3QiEkg8Y1r9LFTI5e4f)
    • RunFileContent (Token: Y3SrZjVqWOvKsBdpTCh7)
    • KomprimierenHerunterladen (Token: SJQf31UJkZ1f88q9m361)
  • Laufzeitmodifikationen an express.Route.prototype.post

Verfasst von
Ilyas Makari
Teilen:

https://www.aikido.dev/blog/npm-backdoor-lets-hackers-hijack-gambling-outcomes

Abonnieren Sie Bedrohungs-News.

Sicherheit jetzt implementieren

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.