Axios wurde durch eine Hintertür ersetzt: 5 NPM-Pakete, die durch HTTP-APIs ersetzt werden sollen
Ein mit Nordkorea verbundener Akteur hat einen RAT in Axios 1.14.1 an 70 Millionen wöchentliche Installer verschickt. Fünf npm-Einzelpakete, die Sie noch heute löschen und durch HTTP-API-Aufrufe ersetzen können.
Am 31. März 2026 veröffentlichte ein mit Nordkorea verbundener Betreiber zwei Backdoor-Versionen von
axios bis npm. Die Versionen 1.14.1 und 0.30.4 werden mit einer Postinstall-Abhängigkeit namens „ausgeliefert
plain-crypto-js das ein plattformspezifisches RAT-Implantat hervorbrachte
sfrclak[.]com:8000. Die Pakete waren drei Stunden lang live. Axios bekommt 70 Millionen
wöchentliche Downloads. Rechnen Sie nach.
Jeder ausgeführte CI-Job npm install Während dieses Fensters wurde eine Nutzlast in seinen Build gesendet
Umgebung. Geheimnisse in Umgebungsvariablen wurden exfiltriert; Private GitHub-Token sind daran gewöhnt
neuwertige Nachfolgeveröffentlichungen; Entwickler-Laptops laufen npm install vor Ort bekam eine RAT.
Bei dem Vorfall wurde 2FA umgangen, da die Maschine des Betreuers bereits durch eine kompromittiert wurde
gezielte Social-Engineering-Kampagne. 2FA auf dem npm-Konto bewirkt nichts, wenn der Angreifer es besitzt
das Terminal, das ausgeführt wird npm publish.
Sie können diese Angriffsklasse nicht eliminieren, aber Sie können Ihren Explosionsradius verkleinern. Jedes npm-Paket das macht eine kleine Sache; Eine E-Mail validieren, eine Telefonnummer analysieren, HTML entfernen, generieren ein QR-Code, der ein JWT signiert; ist ein Paket, das Sie löschen und durch einen HTTPS-Aufruf an eine API ersetzen können Steuerung über drehbaren Schlüssel. Ein kompromittiertes Paket wird ausgeführt, bevor Sie reagieren können. Ein kompromittierter API-Schlüssel hört innerhalb von Sekunden auf zu arbeiten.
Hier sind fünf npm-Pakete, die Sie diese Woche durch die HTTP-API ersetzen können, die dasselbe tut: plus einen CI-Schutz, der verhindert, dass neue Postinstall-Hooks in Ihrer Sperrdatei landen.
Überprüfen Sie Ihre aktuelle NPM-Abhängigkeitsoberfläche
Bevor Sie etwas löschen, sollten Sie wissen, was Sie haben. Dieser Shell-Durchlauf zeigt Produktionsabhängigkeiten auf mit Install-Hooks und prüft, ob sich die vergifteten Axios-Versionen irgendwo in Ihrem Baum befinden:
Wenn eine der Axios-Versionen in Ihrer Sperrdatei erscheint, rotieren Sie jedes Geheimnis auf dem betroffenen Computer oder CI Job hatte Zugriff auf. Nicht „Überprüfen Sie die Protokolle“. Drehen. Gehen Sie davon aus, dass die Exfiltration in den 180 Minuten stattgefunden hat zwischen Veröffentlichung und Löschung. Geheimnisse, die durchgesickert sind, können nicht preisgegeben werden.
Google Threat Intelligence schreibt den Vorgang UNC1069 zu, dem gleichen Akteur, der ihn ausgeführt hat
früher WAVESHAPER Kampagnen. Ihr Playbook richtet sich an Maintainer-Laptops über
Phishing, nutzt dann die Anmeldeinformationen des Betreuers zur Veröffentlichung. Davon muss Ihre Verteidigung ausgehen
Mindestens ein Betreuer mindestens einer transitiven Abteilung ist nur einen Phish davon entfernt, ein Implantat zu sein
Liefersystem.
Ersatz 1: E-Mail-Validator → /v1/email/validate
validator, email-validator, deep-email-validator, Und
disposable-email-domains tauchen in einem großen Teil der Anmeldeströme auf. Zusammen fügen sie hinzu
ungefähr ein halbes Megabyte Installationsgewicht, ihre eigenen transitiven Bäume und eine gepflegte Liste von
Wegwerfdomänen, die innerhalb weniger Wochen veraltet sind.
Die API überprüft Syntax, DNS-MX-Einträge und eine Live-Liste der verfügbaren Domänen in einem Aufruf. Tauschen Die beiden Pakete sehen so aus:
Sie verlieren die Möglichkeit zur Offline-Validierung. Sie erhalten einen gepflegten MX-Check, eine Live-Verfügbarkeitsliste, und keine Pakete mit Postinstall-Hooks in Ihrem Baum. Für die Anmeldung, den Checkout und den Webhook E-Mail-Felder, dieser Kompromiss begünstigt die API.
Ersatz 2: libphonenumber-js → /v1/phone
libphonenumber-js ist eine Portierung von Google libphonenumber. Es wiegt 147 KB
minimiert. Der „Mini“-Build sinkt auf 79 KB, verliert jedoch für die meisten Länder Metadaten. Die vollständigen Metadaten
Bundle bringt das Gewicht wieder auf 2 MB entpackt. Auf Cloudflare Workers oder einem kalten Lambda ist dies der Fall
echte Latenz, die Sie bei jedem Aufruf bezahlen.
Ein POST gibt das E.164-Format, das Land, die nationale Nummer, den Leitungstyp und die Zeitzone zurück. Wenn die Nummer
ist ungültig, data.valid Ist false und der Rest ist null. Ihre Serverseite
Der Anmeldeablauf ruft dies zwischen „Formular lesen“ und „In Datenbank schreiben“ auf. Der 60-ms-API-Roundtrip dauert
innerhalb Ihres vorhandenen DB-Schreibfensters.
Ersatz 3: qrcode → /v1/qr/generate
Der qrcode Das NPM-Paket selbst ist in Ordnung: 34 KB, kein Postinstall-Hook. Was nicht in Ordnung ist, ist
die canvas Peer-Abhängigkeit, zu der Sie in der Hälfte der Tutorials gezwungen werden, was ein Ende hat
nativen Code, installiert Node-Gyp und verfügt über zehn Jahre CVEs in der gesamten Build-Toolchain. Jeder Eingeborene
npm dep ist eine Supply-Chain-Naht.
Die Antwort ist rohes SVG. Leiten Sie es in eine Datei weiter, stopfen Sie es in eine Rechnungsvorlage oder rendern Sie es inline
in einer React-Komponente mit dangerouslySetInnerHTML. Keine nativen Module, kein Build
Toolchain, kein transitiver Baum.
Ersatz 4: jsonwebtoken → /v1/jwt/generate und /v1/jwt/decode
jsonwebtoken ist eine der am häufigsten kopierten JWT-Bibliotheken in Node. Es ist auch die Bibliothek
Die meisten Leute konfigurieren es falsch: falscher Algorithmus, fehlender Zielgruppenanspruch, kein Ablaufdatum. Ein falscher Algorithmus
Der Verifizierungsaufruf und ein vom Angreifer kontrollierter Header führen das JWT aus der Zeit von 2015 wieder ein none
Verletzlichkeit. Die API erzwingt Algorithmus-Whitelists und lehnt nicht signierte Token am Endpunkt ab:
Verwenden Sie dies für kurzlebige Token, die von einem Back-End-Dienst ausgegeben werden: Links zum Zurücksetzen des Passworts, einmalig Download-URLs, Service-to-Service-Bearer-Token. Verwenden Sie keinen externen Dienst für Benutzersitzungen JWTs auf dem Hot Path jeder authentifizierten Anfrage; Halten Sie für diese Fälle eine verifizierte Bibliothek in Bearbeitung und sperren Sie den Algorithmus.
Ersatz 5: HTML-to-Text → /v1/html-to-text/convert
html-to-text, sanitize-html, node-html-parser, und ihre
Freunde gibt es, weil jede API, die Benutzerinhalte akzeptiert, irgendwann HTML für Klartext entfernen muss
B. Vorschauen, E-Mail-Zusammenfassungen oder Suchindizierung. Ihr Gesamtgewicht beträgt 500 KB bis 1,2 MB; sie ziehen
parse5 oder htmlparser2 durch die Tür, von denen jeder sein eigenes hat
Betreueroberfläche.
Für eine reichhaltigere Ausgabe /v1/html-to-markdown gibt GitHub-Flavored Markdown zurück und
/v1/html-sanitize gibt bereinigtes HTML mit einer konfigurierbaren Zulassungsliste zurück. Wählen Sie das aus
Das entspricht der Art und Weise, wie Ihr nachgeschalteter Verbraucher den Inhalt speichern möchte.
Fügen Sie einen CI-Schutz hinzu, der neue Postinstall-Hooks blockiert
Das Löschen von Paketen ist eine einmalige Arbeit. Schlank bleiben ist kontinuierlich. Diese Überprüfung der GitHub-Aktionen schlägt fehl
die PR, wenn ein Lockfile-Update ein neues einführt postinstall oder preinstall
irgendwo im Baum einhaken:
Die Prüfung ist kostengünstig, läuft bei jedem PR und erzwingt eine menschliche Überprüfung, bevor ein neuer Skript-Hook landet.
Kombiniere es mit npm config set ignore-scripts true auf CI und expliziten Zulassungslisten für
Pakete, von denen Sie wissen, dass sie sie benötigen esbuild-Stil-Postinstallation (TypeScript, Puppeteer, bcrypt).
Was Sie aufgegeben haben und wann Sie es zurückgeben sollten
Die Verlagerung der Validierung auf einen HTTP-Aufruf ist mit echten Kosten verbunden. Sie tauschen sie gegen eine kleinere Abhängigkeit ein Oberfläche:
| Abtausch | npm-Paket | HTTP-API |
|---|---|---|
| Latenz | Mikrosekunden | 50 bis 150 ms vom Rand entfernt |
| Offline-Nutzung | Ja | NEIN |
| Risiko installieren | Postinstall führt beliebigen Code aus | Kein Installationsschritt |
| Widerruf | Neu erstellen, erneut veröffentlichen, erneut bereitstellen | API-Schlüssel in Sekunden rotieren |
| Audit-Trail | Standardmäßig keine | Protokoll pro Anruf anfordern |
| Versionsdrift | Anpinnen oder renovieren | Versionsheader, stabiler Vertrag |
Die richtige Antwort ist „beides, mit Absicht.“ Halten Sie Bibliotheken für kritische Pfade im Prozess (Sitzungs-JWT). Verifizierung, Kryptoprimitive, Authentifizierungs-Middleware). Verschieben Sie den langen Schwanz der Einzweck-Versorgungsunternehmen aus Ihrer Sperrdatei und auf einen signierten HTTPS-Endpunkt, den Sie widerrufen können.
Wichtige Erkenntnisse
- Angenommen, ein Betreuer ist nur einen Katzensprung von einem Implantat entfernt. Axios bekam wöchentlich 70 Millionen Downloads und trotzdem wurde sein npm-Konto durch einen Social-Engineering-Angriff auf a kompromittiert persönlicher Laptop.
-
Prüfen Sie noch heute Postinstall-Hooks. Jede Abhängigkeit, die währenddessen beliebigen Code ausführt
npm installist eine Nahtstelle in der Lieferkette. Führen Sie eine Bestandsaufnahme durch und löschen Sie sie dann oder setzen Sie sie auf die Zulassungsliste. - Löschen Sie zunächst Einzweckpakete. E-Mail, Telefon, QR, JWT-Signierung, HTML Konvertierung; Jeder hat einen einzeiligen HTTP-Ersatz mit einem widerrufbaren Schlüssel.
- Nach der Belichtung drehen, nicht untersuchen. Wenn vergiftete Axios in Ihrem gelandet sind Baum, drehen Sie jedes Geheimnis, das die betroffene Umgebung berührt. Die Exfiltration erfolgt innerhalb von Minuten.
-
Fügen Sie einen CI-Schutz hinzu. Neu blockieren
postinstallHaken verhindern, dass sie in Ihrem landen lockfile ohne menschliche Überprüfung. Der Axios-Kompromiss hätte diese Wache zum Fallen gebracht.
Botoi bietet HTTP-Ersatz für die fünf oben genannten Pakete und etwa 145 weitere Einzelzweckpakete Dienstprogramme: Hashing, UUID-Generierung, Regex-Tests, Zeitstempelkonvertierung, JSON-Schemavalidierung, Barcode-Generierung, PDF-Rendering und der Rest. Ein API-Schlüssel, 5 Anforderungen/Min. im kostenlosen Kontingent, nein Haken installieren. Durchsuchen Sie die interaktive Dokumente oder verkabeln MCP-Server in dein KI-Coding-Agent zum Aufrufen derselben Endpunkte von Claude Code oder Cursor aus, ohne den Editor zu verlassen.
FAQ
- Was ist mit dem axios npm-Paket im März 2026 passiert?
- Zwischen dem 31. März 2026, 00:21 und 03:20 UTC, nutzte ein Angreifer ein manipuliertes Betreuerkonto, um Axios 1.14.1 und 0.30.4 mit einer bösartigen Postinstall-Abhängigkeit namens plain-crypto-js zu veröffentlichen. Die Abhängigkeit hat plattformspezifische RAT-Implantate von sfrclak[.]com:8000 heruntergeladen. Google Threat Intelligence schreibt die Operation UNC1069 zu, einem Nordkorea-Nexus-Akteur. Die Pakete waren etwa drei Stunden lang aktiv, lange genug, um weltweit in CI-Caches und Entwickler-Laptops zu landen.
- Reduziert das Ersetzen von NPM-Paketen durch HTTP-APIs das Risiko?
- Es verkleinert die Angriffsfläche auf zwei Arten. Zuerst entfernen Sie einen Postinstall-Hook, der beliebigen Code auf Ihrem Build-Server ausführt. Zweitens verschieben Sie die Validierungslogik vom Entwickler-Laptop auf einen signierten, reinen HTTPS-Endpunkt, den Sie über die API-Schlüsselrotation steuern. Ein vergiftetes Paket wird ausgeführt, bevor Sie reagieren können. Ein widerrufener API-Schlüssel funktioniert innerhalb von Sekunden nicht mehr.
- Ist ein HTTP-Aufruf langsamer als ein lokales NPM-Paket?
- Für einen einzelnen Anruf auf eine Kaltanfrage, ja; Die typische Botoi-API-Latenz beträgt 50 bis 150 ms von einem Client in Nordamerika bis zum Cloudflare-Edge. Bei den meisten serverseitigen Abläufen (Anmeldung, Auschecken, Webhook-Verarbeitung), die sich mit DB-Aufrufen überschneiden, die Sie bereits tätigen, fügt es nichts Messbares hinzu. Bei Pfaden mit hohem Durchsatz wird die Antwort per Eingabe-Hash für dasselbe Latenzprofil wie bei einem lokalen Paket zwischengespeichert.
- Wie überprüfe ich mein Repo jetzt auf riskante NPM-Pakete?
- Führen Sie npm audit --omit=dev aus, um Produktionsabhängigkeiten aufzudecken, und überprüfen Sie dann jedes Paket mit einem Postinstall- oder Preinstall-Hook mithilfe der Skripte npm ls und npm view {name}. Pakete, die eine kleine Sache erledigen (E-Mail-Validierung, QR-Generierung, JWT-Signierung, Telefonparsing, HTML-Stripping), sind gute Kandidaten für die Umstellung auf einen HTTP-Aufruf. Pakete, die Kryptografie durchführen oder aktiv Netzwerkinhalte abrufen, sind die Prüfziele mit der höchsten Priorität.
- Was passiert, wenn anstelle von npm ein HTTP-API-Anbieter kompromittiert wird?
- Der Explosionsradius ist kleiner und die Erkennung schneller. Sie kontrollieren den API-Schlüssel und können ihn in einem Aufruf widerrufen. Ihr Anbieter stellt eine Statusseite, ein Vorfall-RSS und signierte Antworten über HTTPS zur Verfügung. Vergleichen Sie das mit einem Paket, das in Ihrem Build ausgeführt wird und dessen Erkennung das Lesen jedes Postinstall-Hooks in Ihrem transitiven Abhängigkeitsbaum erfordert. Kein Risiko besteht auch nicht; Das eine gibt dir Hebel, das andere nicht.
Starte mit botoi zu entwickeln
150+ API-Endpunkte für Abfragen, Textverarbeitung, Bildgenerierung und Entwickler-Tools. Kostenloser Tarif, keine Kreditkarte nötig.