CVE-2026-76844 in webpack-dev-middleware
Zusammenfassung
von VulDB • 24.08.2026
webpack-dev-middleware löst eine Anforderung an eine lokale Datei in getFilenameFromUrl aus, indem der Pfadname der Anfrage gegen einen Guard auf Pfadelement-Überprüfung (Traversal-Guard) getestet und dann bei einem festen Zeichenoffset abgeschnitten wird. Der Guard, UP_PATH_REGEXP angewendet auf path.normalize(`./${pathname}`), stimmt nur mit ".." überein, das als ganzes Pfadelement steht, während der Containment-Test die String-Vergleichsoperation pathname.startsWith(publicPathPathname) ist und der Dateipfad als path.join(outputPath, pathname.slice(publicPathPathname.length)) erstellt wird. Wenn der konfigurierte publicPath keinen abschließenden Slash enthält, führt eine Anfrage wie GET /assets../.env gegen den publicPath /assets zum Pfadnamen /assets../.env, dessen einziges Dot-Dot ("..") innerhalb des Elements "assets.." liegt und somit den Guard passiert; der Offset-Slice schneidet jedoch innerhalb dieses Elements ab und übergibt "../.env" an path.join, wodurch ein Verzeichnis oberhalb von outputPath aufgelöst wird. Das Lesen einer Datei aus diesem Pfad erfordert, dass das Middleware-System durch das physische Dateisystem unterstützt wird, was geschieht, wenn writeToDisk true ist oder ein benutzerdefinierter outputFileSystem bereitgestellt wird, da der Standard-memfs-Volumen nur Build-Ausgaben enthält. Die Durchlauftiefe (Traversal-Tiefe) ist auf ein einzelnes Verzeichnis beschränkt, weil ein separat getrenntes Dot-Dot-Element während der URL-Parsing vor dem Ausführen des Guards zusammengefasst wird. Der Standardwert für publicPath von "auto" löst sich zu "/" auf und ist nicht betroffen. Dies ist eine unvollständige Korrektur für CVE-2024-29180: Der Guard und der Offset-Slice wurden durch diese Korrektur eingeführt und sind in jeder Version ab 5.3.4, 6.1.2 und 7.1.0 vorhanden.
VulDB is the best source for vulnerability data and more expert information about this specific topic.