🇰🇷 한글 설명
Hono 프레임워크의 parseBody() 함수에서 점(dot)으로 구분된 필드명을 중첩된 객체로 변환할 때 중첩 깊이나 생성되는 객체 수를 제한하지 않는 취약점입니다. 공격자가 정교하게 조작된 요청을 보내면 자바스크립트 힙 메모리를 고갈시켜 서버 프로세스를 종료시키고 서비스를 중단시킬 수 있습니다. 이 문제는 dot-notation 파싱이 활성화된 경우에만 발생합니다.
💡 쉬운 설명
데이터를 처리하는 과정에서 너무 복잡한 구조를 만들어 서버의 메모리를 순식간에 가득 채우는 공격입니다. 이로 인해 서버가 과부하로 멈추거나 꺼질 수 있습니다.
🇺🇸 원문 (English)
Hono is a Web application framework that provides support for any JavaScript runtime. Prior to 4.13.5, when parseBody() expands dot-separated form field names into nested objects with dot-notation parsing enabled, it does not limit the nesting depth or the total number of intermediate objects created. Empty segments are preserved, so one deeply dotted field name can encode one nesting level per byte, while a large number of shallowly dotted fields can create the same amplification across a request. A request body within a normal size limit can therefore allocate an object graph far larger than the request after the body has already been accepted. An unauthenticated attacker who can reach an affected endpoint can send concurrent requests that exhaust the JavaScript heap, terminate the server process, and leave the service unavailable until restart. Dot-notation parsing is not enabled by default, and applications using the default behavior are not affected. This issue is fixed in version 4.13.5.
📍 영향받는 시스템
Hono framework version < 4.13.5 (dot-notation parsing enabled)
⚔️ 공격 벡터
중첩된 구조를 유도하는 조작된 점(dot) 포함 폼 데이터를 포함한 HTTP 요청 전송
🛡️ 대응 방법
Hono 프레임워크를 4.13.5 버전 이상으로 업데이트하거나 dot-notation 파싱 기능을 비활성화합니다.
🔧 검증 코드
출력 결과에 [email protected] 이상의 버전이 표시되지 않으면 취약한 버전이 설치되어 있을 가능성이 높습니다.
npm list hono | grep -E 'hono@([0-4]\.[0-1][0-2]\.[0-9]|4\.13\.5)'
📊 CVSS Vector String
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
💻 영향받는 소프트웨어
IBM WebSphere Application Server