🇰🇷 한글 설명
Fastify가 RFC 9110 규격을 위반하여 서브타입 토큰 뒤에 불필요한 문자가 포함된 잘못된 Content-Type 헤더를 허용하는 취약점입니다. 이로 인해 유효하지 않은 요청이 거부되지 않고 잘못된 파서로 전달되어 처리될 수 있습니다.
💡 쉬운 설명
웹 서버가 데이터 형식을 확인하는 과정에서 규칙에 어긋난 잘못된 형식이 들어와도 이를 걸러내지 못하고 그대로 받아들이는 문제입니다. 이로 인해 공격자가 의도적으로 조작된 데이터를 서버에 전달할 수 있습니다.
🇺🇸 원문 (English)
Fastify incorrectly accepts malformed `Content-Type` headers containing trailing characters after the subtype token, in violation of RFC 9110 §8.3.1(https://httpwg.org/specs/rfc9110.html#field.content-type). For example, a request sent with Content-Type: application/json garbage passes validation and is processed normally, rather than being rejected with 415 Unsupported Media Type.
When regex-based content-type parsers are in use (a documented Fastify feature), the malformed value is matched against registered parsers using the full string including the trailing garbage. This means a request with an invalid content-type may be routed to and processed by a parser it should never have reached.
Impact:
An attacker can send requests with RFC-invalid Content-Type headers that bypass validity checks, reach content-type parser matching, and be processed by the server. Requests that should be rejected at the validation stage are instead handled as if the content-type were valid.
Workarounds:
Deploy a WAF rule to protect against this
Fix:
The fix is available starting with v5.8.1.
📍 영향받는 시스템
Fastify v5.8.1 미만 버전
⚔️ 공격 벡터
RFC 규격에 어긋나는 잘못된 Content-Type 헤더(예: application/json garbage)를 포함한 HTTP 요청 전송
🛡️ 대응 방법
Fastify를 v5.8.1 이상의 최신 버전으로 업데이트하거나 WAF 규칙을 적용하여 차단
🔧 검증 코드
출력된 fastify의 버전이 5.8.1보다 낮은지 확인합니다.
npm list fastify | grep -E 'fastify@'
📊 CVSS Vector String
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
💻 영향받는 소프트웨어
IBM WebSphere Application Server