🇰🇷 한글 설명
Axios의 FormDataPart 생성자가 value.type을 검증 없이 Content-Type 헤더에 직접 삽입하여 CRLF 인젝션을 허용합니다. 공격자가 Blob/File 객체의 .type 속성을 제어하면 multipart 폼 데이터 본문에 임의의 MIME 헤더를 주입할 수 있으며, 1.15.1에서 수정되었습니다.
💡 쉬운 설명
Axios 파일 업로드 기능에서 파일 타입 정보를 제대로 검증하지 않아 공격자가 악의적인 데이터를 삽입할 수 있습니다. 이를 통해 서버로 전송되는 요청 구조를 조작하여 다양한 공격을 수행할 수 있습니다.
🇺🇸 원문 (English)
Axios is a promise based HTTP client for the browser and Node.js. From 1.0.0 to before 1.15.1, the FormDataPart constructor in lib/helpers/formDataToStream.js interpolates value.type directly into the Content-Type header of each multipart part without sanitizing CRLF (\r\n) sequences. An attacker who controls the .type property of a Blob/File-like object (e.g., via a user-uploaded file in a Node.js proxy service) can inject arbitrary MIME part headers into the multipart form-data body. This bypasses Node.js v18+ built-in header protections because the injection targets the multipart body structure, not HTTP request headers. This vulnerability is fixed in 1.15.1.
📍 영향받는 시스템
Axios 1.0.0 ~ 1.15.0 (Node.js 환경)
⚔️ 공격 벡터
사용자 업로드 파일의 .type 속성에 CRLF 시퀀스를 포함시켜 multipart 폼 본문에 임의의 MIME 헤더 주입
🛡️ 대응 방법
Axios를 1.15.1 이상으로 업그레이드 (npm install axios@^1.15.1)
🔧 검증 코드
출력된 버전이 1.15.1 이상이면 안전, 1.15.0 이하면 취약함
npm list axios 2>/dev/null | grep -E 'axios@([0-9]+\.[0-9]+\.[0-9]+)'