웹 캐시 디셉션 (WEB-46)

WEB-46 Cache Deception

웹 캐시 디셉션 (Web Cache Deception):
캐시 시스템이 URL 경로 구조나 확장자만 보고 캐싱 결정을 하면, 공격자가 민감한 엔드포인트에 캐시 가능한 확장자(.css, .js, .jpg 등)를 붙여서 응답을 캐시하게 만들 수 있습니다. 이후 인증 없이 캐시된 민감정보를 접근할 수 있습니다.

캐시 가능한 확장자

.css, .js, .jpg, .jpeg, .png, .gif, .ico, .woff, .woff2, .ttf

공격 예시

✓ 정상:
/api/user/profile
(인증 필수, 캐시 X)
✗ 공격:
/api/user/profile.js
(확장자로 캐시됨, 인증 우회)
✗ 경로 트릭:
/api/user/profile.js/config
(서버: .js보고 캐시, 실제: profile 처리)
✗ 쿼리스트링:
/api/admin?user=1.js
(경로 기반 캐시 결정)

Step 1: 민감한 응답을 캐시에 저장

💡 팁: URL을 /api/user/profile.js 형태로 만들면 확장자가 인식됩니다.

Step 2: 인증 없이 캐시된 민감정보 접근

미리 준비된 공격 URL들