🇰🇷 한글 설명
@fastify/busboy 3.1.0부터 3.2.0 버전에서 특정 길이의 경계(boundary)를 가진 multipart 요청을 보낼 경우 Node.js 이벤트 루프가 중단되는 취약점이 존재합니다. 공격자가 정교하게 조작된 요청을 보내면 CPU 점유율이 급증하여 서비스 거부(DoS) 상태를 유발할 수 있습니다.
💡 쉬운 설명
특수한 형태의 데이터를 보내면 서버의 두뇌 역할을 하는 프로세스가 무한 루프에 빠져 다른 일을 못 하게 만드는 공격입니다. 이로 인해 웹사이트가 매우 느려지거나 접속이 불가능해질 수 있습니다.
🇺🇸 원문 (English)
@fastify/busboy is a multipart form-data parser. In versions 3.1.0 through 3.2.0, a remote unauthenticated attacker can stall the Node.js event loop by sending a multipart request whose boundary is crafted to a specific length. The vendored streaming search stores its skip table in a fixed 256 entry byte array, and a boundary of exactly 252 bytes makes the search needle 256 bytes, which truncates the default skip distance to zero and turns the search into a CPU bound loop on a small body. A single small request can keep one core busy and deny service to other requests handled by the same process. The issue is fixed in @fastify/busboy 3.2.1, which widens the skip table so the skip distance is preserved. Users should upgrade to 3.2.1.
📍 영향받는 시스템
@fastify/busboy versions 3.1.0 through 3.2.0
⚔️ 공격 벡터
특정 길이(252바이트)로 조작된 multipart/form-data 경계값을 포함한 원격 요청 전송
🛡️ 대응 방법
@fastify/busboy 버전을 3.2.1 이상으로 업그레이드
🔧 검증 코드
출력된 결과에서 @fastify/busboy의 버전이 3.1.0에서 3.2.0 사이인지 확인