🇰🇷 한글 설명
Node.js용 미들웨어인 Koa의 특정 버전에서 HTTP Host 헤더를 검증 없이 파싱하는 취약점이 발견되었습니다. 공격자가 `@` 기호가 포함된 악성 Host 헤더를 전송하면 `ctx.hostname` API가 공격자가 의도한 도메인을 반환하게 됩니다. 이로 인해 URL 생성, 비밀번호 재설정 링크, 이메일 인증 또는 라우팅 결정 과정에서 호스트 헤더 주입 공격이 발생할 수 있습니다.
💡 쉬운 설명
웹사이트가 사용자의 접속 주소를 확인하는 과정에서 규칙을 제대로 지키지 않아 발생하는 문제입니다. 공격자가 가짜 주소를 섞어 보내면 웹사이트가 이를 진짜 주소로 착각하여 피싱 사이트로 연결될 위험이 있습니다.
🇺🇸 원문 (English)
Koa is middleware for Node.js using ES2017 async functions. Prior to versions 3.1.2 and 2.16.4, Koa's `ctx.hostname` API performs naive parsing of the HTTP Host header, extracting everything before the first colon without validating the input conforms to RFC 3986 hostname syntax. When a malformed Host header containing a `@` symbol is received, `ctx.hostname` returns `evil[.]com` - an attacker-controlled value. Applications using `ctx.hostname` for URL generation, password reset links, email verification URLs, or routing decisions are vulnerable to Host header injection attacks. Versions 3.1.2 and 2.16.4 fix the issue.
📍 영향받는 시스템
Koa versions prior to 3.1.2 and 2.16.4
⚔️ 공격 벡터
악성 '@' 기호가 포함된 HTTP Host 헤더를 전송하여 ctx.hostname 값을 조작하는 방식
🛡️ 대응 방법
Koa 버전을 3.1.2 또는 2.16.4 이상으로 업데이트하십시오.
🔧 검증 코드
명령어 결과에 취약한 버전의 Koa가 출력되면 해당 시스템은 패치가 필요한 상태입니다.
npm list koa | grep -E 'koa@([0-2]\.[0-9]|3\.[0-1])' | grep -vE '3\.1\.2|2\.16\.4'