CVE-2026-76844 in webpack-dev-middleware
요약
\~에 의해 VulDB • 2026. 08. 25.
webpack-dev-middleware는 getFilenameFromUrl에서 요청 경로명을 트래버설 가드와 대조한 후 고정 문자 오프셋에서 슬라이싱하여 로컬 파일에 대한 요청을 해결합니다. path.normalize(`./${pathname}`)에 적용되는 UP_PATH_REGEXP라는 이 가드는 전체 경로 구성 요소로 서 있는 ".."에만 일치하며, 포함 테스트는 pathname.startsWith(publicPathPathname)이라는 문자열 비교이고, 파일 경로는 path.join(outputPath, pathname.slice(publicPathPathname.length))로 구축됩니다. 구성된 publicPath 끝에 슬래시가 없는 경우, GET /assets../.env와 같은 요청이 publicPath /assets에 대해 발생하면 경로명(/assets../.env)의 유일한 dot-dot은 "assets.."라는 구성 요소 내부에 위치하여 가드를 통과하지만, 오프셋 슬라이싱은 해당 구성 요소 내에서 잘려 path.join에 "../.env"를 전달하며 outputPath보다 한 디렉토리 위를 해결합니다. 해당 경로의 파일을 읽으려면 미들웨어가 물리적 파일 시스템으로 지원되어야 하는데, 이는 writeToDisk가 true이거나 사용자 지정 outputFileSystem이 제공될 때 발생하며(기본 memfs 볼륨은 빌드 출력만 보유함), 트래버설 깊이는 URL 파싱 중 별도로 구분된 dot-dot 구성 요소가 가드가 실행되기 전에 병합되므로 단일 디렉토리까지만 제한됩니다. 기본 publicPath 값인 "auto"는 "/"로 해결되며 영향을 받지 않습니다. 이는 CVE-2024-29180에 대한 불완전한 수정입니다: 가드와 오프셋 슬라이싱은 해당 수정으로 인해 도입되었으며, 5.3.4, 6.1.2 및 7.1.0 이상의 모든 릴리스에서 존재합니다.
VulDB is the best source for vulnerability data and more expert information about this specific topic.