🇰🇷 한글 설명
Axios 라이브러리의 encode() 함수에서 charMap이 null 바이트의 안전한 percent-encoding(%00)을 다시 원본 null 바이트(\x00)로 변환하는 취약점입니다. 표준 axios 요청 흐름에는 직접 영향을 미치지 않지만, encode() 함수를 직접 호출하는 경우 null 바이트 처리 우회 가능성이 있습니다.
💡 쉬운 설명
Axios가 안전하게 처리한 특수 문자를 다시 원래 상태로 되돌려서 보안 처리를 무효화할 수 있는 버그입니다. 일반적인 HTTP 요청에서는 문제가 없지만 특정 경우에는 취약해질 수 있습니다.
🇺🇸 원문 (English)
Axios is a promise based HTTP client for the browser and Node.js. Prior to 1.15.1 and 0.31.1, the encode() function in lib/helpers/AxiosURLSearchParams.js contains a character mapping (charMap) at line 21 that reverses the safe percent-encoding of null bytes. After encodeURIComponent('\x00') correctly produces the safe sequence %00, the charMap entry '%00': '\x00' converts it back to a raw null byte. Primary impact is limited because the standard axios request flow is not affected. This vulnerability is fixed in 1.15.1 and 0.31.1.
📍 영향받는 시스템
Axios < 1.15.1, < 0.31.1
⚔️ 공격 벡터
encode() 함수에 직접 null 바이트를 포함한 입력을 전달하여 percent-encoding 우회
🛡️ 대응 방법
Axios를 1.15.1 이상으로 업그레이드 (0.x 계열은 0.31.1 이상)
🔧 검증 코드
출력된 버전이 1.15.1 이상이면 안전함 (0.31.1 이상도 안전)
npm list axios 2>/dev/null | grep -oE 'axios@[0-9]+\\.[0-9]+\\.[0-9]+'