
CVE-2026-72744에 대한 개념 증명 익스플로잇으로, Nuxt 개발 서버의 Chrome DevTools 워크스페이스 엔드포인트에 존재하는 정보 공개 취약점입니다. 해당 결함을 시연하고 수정 사항을 검증합니다.
이 리포지토리는 Nuxt 개발 서버의 Chrome DevTools workspace 엔드포인트에 존재하는 정보 노출 취약점 CVE-2026-72744의 Proof of Concept (PoC)입니다.
취약한 개발 서버는 연결 원본이 로컬인지 여부를 TCP peer address가 아닌,
공격자가 지정할 수 있는 Host 등의 HTTP 헤더로 판단합니다. 개발 서버가
0.0.0.0에 바인딩된 경우, LAN 상의 비인증 공격자는
Host: localhost를 붙인 요청으로 프로젝트의 절대 경로와 영구적인
workspace UUID를 획득할 수 있습니다.
이 PoC는 Nuxt 4.5.0(취약 버전)과 4.5.1(수정 버전)을 Docker로 기동하고, 호스트 측에서 동일한 요청을 보내 동작의 차이를 확인합니다. 파일의 읽기/쓰기나 코드 실행은 수행하지 않습니다.
교육 목적 및 허가된 보안 검증에만 사용하십시오. 제3자의 환경에 무단으로 요청을 전송하지 마십시오.
>= 4.4.7, < 4.5.1 및 >= 3.21.7, < 3.21.104.5.1 / 3.21.10experimental.chromeDevtoolsProjectSettingsrootDir의 절대 경로와 프로젝트 고유 workspace UUID 노출취약 버전의 isLocalDevRequest는 Host가 허용 목록에 있고, 브라우저 유래의
크로스사이트 헤더가 없으면 요청을 로컬로 취급합니다.
비브라우저 클라이언트는 이러한 헤더를 자유롭게 생략·지정할 수 있으므로, 다음
요청이 검사를 통과합니다.
GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1
Host: localhost
수정 버전은 기존 헤더 검사에 더해, 실제 TCP peer address가 loopback
(127.0.0.0/8 또는 ::1)임을 요구합니다.
docker compose up -d --build
| URL | 버전 | 예상 결과 |
|---|---|---|
http://localhost:3000 | Nuxt 4.5.0 | HTTP 200, 정보 노출 |
http://localhost:3001 | Nuxt 4.5.1 | HTTP 403 |
최초 빌드에서는 npm 패키지를 획득하므로 수 분이 걸릴 수 있습니다.
python3 exploit.py -t http://localhost:3000 --expect vulnerable
예상 출력:
[!] VULNERABLE: the endpoint disclosed workspace.root and workspace.uuid.
python3 exploit.py -t http://localhost:3001 --expect fixed
예상 출력:
[+] FIXED: the non-loopback request was rejected with HTTP 403.
curl -i -H 'Host: localhost' \
http://localhost:3000/.well-known/appspecific/com.chrome.devtools.json
curl -i -H 'Host: localhost' \
http://localhost:3001/.well-known/appspecific/com.chrome.devtools.json
Docker의 포트 전달을 경유하므로, 컨테이너에서 본 연결 원본은 loopback이 아닙니다. 이를 통해 단일 호스트 상에서 LAN 공격 상당의 조건을 재현할 수 있습니다.
docker compose down -v
exploit.py는 Host: localhost를 지정하고, Origin, Referer,
Sec-Fetch-Site를 보내지 않고 대상 엔드포인트에 접근합니다. HTTP 200의
JSON에 문자열의 workspace.root와 workspace.uuid가 포함되는 경우에만 취약하다고
판정합니다. HTTP 403은 수정된 기대 동작입니다.
Nuxt 4계열은 4.5.1 이후, 3계열은 3.21.10 이후로 업데이트하십시오. 업데이트할 수
없는 경우 개발 서버를 loopback에만 바인드하거나,
experimental.chromeDevtoolsProjectSettings: false를 설정하십시오.