JWT jku 헤더 SSRF (WEB-51)

WEB-51 JWT jku SSRF

JWT jku 헤더 SSRF:
JWT의 jku (JWK Set URL) 필드는 공개 키 세트를 로드할 URL을 지정합니다. 이 필드를 검증하지 않으면 공격자가 내부 네트워크, 로컬 파일, 또는 클라우드 메타데이터 엔드포인트에 접근할 수 있습니다 (SSRF).

공격 메커니즘

  1. 정상: jku = https://trusted-server.com/.well-known/jwks.json
  2. 공격: jku = http://localhost:8080/admin (내부 관리자 페이지)
  3. 서버 처리: JWT 검증 시 jku에서 공개 키를 로드하려고 시도
  4. 결과: 서버가 내부 네트워크/파일에 접근하여 데이터 노출

SSRF 공격 대상 예시

localhost 관리자 페이지
http://localhost:8080/admin
AWS metadata endpoint (IAM 크레덴셜)
http://169.254.169.254/latest/meta-data/
Internal API
http://127.0.0.1:3000/internal/api
Private network router
http://10.0.0.1/router-admin
Local file read
file:///etc/passwd

안전한 JWK Set URL (정상 사용)

https://trusted-server.com/.well-known/jwks.json
이 URL은 공개되어 있고, 신뢰할 수 있는 서버에 호스트됩니다.

jku URL 직접 입력