Wer die JavaScript-Bibliothek Axios in Node.js-Anwendungen einsetzt, sollte diese Meldung aufmerksam lesen. In allen Versionen von 0.x bis 1.x vor den Patches 0.31.0 bzw. 1.15.0 fehlt eine grundlegende Prüfung: Header-Werte werden nicht auf CRLF-Zeichen (\r\n) geprüft, bevor sie an den Socket übergeben werden. Das klingt zunächst technisch und harmlos – hat aber weitreichende Konsequenzen.
Das eigentlich Beunruhigende an dieser Lücke ist ihr Gadget-Charakter. Axios muss nicht direkt angegriffen werden. Es genügt, wenn irgendwo im Abhängigkeitsstack eine Prototype-Pollution-Lücke ausgenutzt wird – etwa in weit verbreiteten Bibliotheken wie qs, minimist oder body-parser. Gelingt es einem Angreifer, Object.prototype mit einem präparierten Header-Wert zu versehen, übernimmt Axios diesen automatisch beim Zusammenführen der Request-Konfiguration. Anschließend landet ein vollständig geschmuggelter HTTP-Request im ausgehenden Traffic – ohne dass der Anwendungscode selbst etwas Unsicheres tut.
Im konkreten Angriffsszenario lässt sich damit der AWS Instance Metadata Service (IMDSv2) ansprechen, der eigentlich gegen SSRF-Angriffe abgesichert ist. Weil Axios die injizierten Header ungefiltert weitergibt, kann ein Angreifer einen gültigen PUT-Request mit dem nötigen X-aws-ec2-metadata-token-ttl-seconds-Header einschmuggeln – und erhält im Gegenzug ein Session-Token, mit dem sich IAM-Credentials stehlen lassen. Dasselbe Muster funktioniert auch für Authorization-Header, Cookies oder Cache-Poisoning-Angriffe.
Offiziell wird der CVSS-Score mit 6.5 (Moderate) angegeben, was angesichts der möglichen Folgen – vollständige Cloud-Kompromittierung – deutlich zu niedrig wirkt. Der Entdecker selbst bewertet die Lücke mit CVSS 9.9.
Wer ist betroffen? Jede Node.js-Anwendung, die Axios nutzt und gleichzeitig eine Prototype-Pollution-anfällige Abhängigkeit im Stack hat. npm ls axios zeigt die verwendete Version; npm audit listet bekannte Lücken im gesamten Dependency-Tree.
Empfehlung: Update auf Axios 1.15.0 oder 0.31.0 – und parallel npm audit ausführen, um Prototype-Pollution-Risiken im restlichen Stack zu identifizieren.
Originalquelle: GitHub Advisory GHSA-fvcv-3m26-pcqx




