🇰🇷 한글 설명
Happy DOM은 그래픽 사용자 인터페이스 없이 동작하는 JavaScript 기반 웹 브라우저 구현체입니다. 21.0.0 이전 버전에서는 disableIframePageLoading과 disableCSSFileLoading이 기본값 false로 설정되어, 서버에서 신뢰할 수 없는 HTML을 파싱할 때 iframe src와 link rel="stylesheet" href URL을 기본적으로 로드합니다. 이로 인해 공격자가 내부망이나 클라우드 메타데이터 엔드포인트로의 서버 측 요청을 유발하고 민감한 응답이나 자격 증명을 노출시킬 수 있습니다.
💡 쉬운 설명
서버가 외부에서 받은 HTML을 처리할 때, 그 안에 들어 있는 링크를 자동으로 열어보는 문제입니다. 공격자가 이를 악용하면 서버가 대신 내부 시스템에 접속해 중요한 정보를 빼낼 수 있습니다.
🇺🇸 원문 (English)
Happy DOM is a JavaScript implementation of a web browser without its graphical user interface. Prior to 21.0.0, Happy DOM loads iframe src URLs and link rel="stylesheet" href URLs by default while parsing untrusted HTML on the server because disableIframePageLoading and disableCSSFileLoading default to false. An attacker who controls parsed HTML can therefore cause server-side requests to arbitrary internal or cloud endpoints without an application opt-in and may expose confidential responses or credentials returned by those endpoints. This issue is fixed in version 21.0.0.
📍 영향받는 시스템
Happy DOM 21.0.0 미만 버전을 사용하는 Node.js 서버 애플리케이션
⚔️ 공격 벡터
공격자가 조작한 HTML(iframe 또는 stylesheet 링크)을 서버가 파싱하게 만들어 내부망이나 클라우드 메타데이터 주소로 서버 측 요청을 유도
🛡️ 대응 방법
happy-dom을 21.0.0 이상으로 업그레이드하고, 가능하면 disableIframePageLoading 및 disableCSSFileLoading 옵션을 true로 설정
🔧 검증 코드
출력된 버전이 21.0.0 미만이면 취약하므로 업그레이드가 필요하고, 21.0.0 이상이면 패치가 적용된 상태입니다.
npm ls happy-dom 2>/dev/null | grep happy-dom
📊 CVSS Vector String
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N
💻 영향받는 소프트웨어
IBM WebSphere Application Server