1. 어떤 취약점인가?
단 20MB HTTP 요청 하나로 Django 서버를 1분간 마비시킬 수 있는 취약점이다. 인증 없이도 공격이 가능하다는 점에서 더 심각하다.
2. 왜 이런 일이 생겼나?
Django가 multipart/form-data 요청을 처리할 때 base64 인코딩된 데이터에 공백이 많으면 내부적으로 엄청난 연산이 발생한다. 2.5MB 요청 하나가 내부적으로 86GB 메모리 복사를 유발한다고 한다.
3. 더 무서운 점
인증된 엔드포인트라도 CSRF 검증 단계에서 이미 파서가 실행되기 때문에 로그인 없이도 공격이 가능하다. 일반적인 서버 환경에서 동시에 수십 개 요청만 보내도 서버가 마비된다.
4. 느낀 점
아직 Django를 직접 써본 적은 없지만 이 기사를 읽으면서 느낀 점이 있다. 20년 가까이 운영된 프레임워크에서도 이런 취약점이 발견된다는 게 놀라웠다. 그리고 이 취약점을 발견한 게 Claude Code + Codex라는 점도 인상적이었다. 평소에 JWT만 적용하면 보안이 충분하다고 생각했는데 그게 아니었다. 앞으로 개발할 때 보안을 더 넓은 시각으로 봐야겠다고 느꼈다.