🇰🇷 한글 설명
Hono는 모든 JavaScript 런타임을 지원하는 웹 애플리케이션 프레임워크입니다. 4.12.25 이전 버전에서는 Windows 호스트에서 인코딩된 백슬래시(%5C)가 요청 경로에서 \로 디코딩되며, Windows 경로 해석기가 이를 구분자로 처리합니다. 이로 인해 serve-static이 admin\secret.txt 같은 단일 URL 세그먼트를 루트 하위의 중첩 파일로 해석하여 제공할 수 있습니다.
💡 쉬운 설명
Windows 서버에서 웹 주소에 특수 문자를 넣으면, 원래 접근이 막혀 있어야 할 보호된 정적 파일을 읽을 수 있는 문제입니다. 해당 파일이 인증 미들웨어 뒤에 숨겨져 있더라도 우회될 수 있습니다.
🇺🇸 원문 (English)
Hono is a Web application framework that provides support for any JavaScript runtime. Prior to 4.12.25, on Windows hosts, an encoded backslash (%5C) in the request path decodes to \, which the Windows path resolver treats as a separator. serve-static then resolves a single URL segment such as admin\secret.txt into a nested file under the root and serves it, letting an attacker read static files meant to be protected behind prefix-mounted middleware. This vulnerability is fixed in 4.12.25.
📍 영향받는 시스템
Hono 4.12.25 미만 버전을 사용하는 Windows 호스트의 serve-static 기반 애플리케이션
⚔️ 공격 벡터
요청 경로에 %5C를 포함시켜 보호된 정적 파일 경로(예: admin%5Csecret.txt)에 접근하여 파일 내용을 읽음
🛡️ 대응 방법
Hono를 4.12.25 이상으로 업그레이드(npm update hono)하고 보호 경로에 대한 추가 접근 통제를 적용
🔧 검증 코드
출력된 hono 버전이 4.12.25 미만이면 취약하며, 4.12.25 이상이면 패치가 적용된 것입니다.
npm ls hono 2>/dev/null | grep -E 'hono@'