본문으로 건너뛰기

CSP 우회 노트: nonce, strict-dynamic, 그리고 실수들

CSP는 XSS를 줄이지만, 설정 실수는 바로 우회 포인트가 된다. CTF에서도 자주 보이는 핵심 패턴만 정리한다.

자주 나오는 우회 지점

  • nonce 재사용: 템플릿 캐시로 동일 nonce가 재사용되면 공격자가 스크립트 삽입 가능
  • strict-dynamic 오해: 신뢰된 스크립트가 동적으로 로드하는 스크립트까지 허용됨
  • unsafe-inline + nonce 혼합: 둘 다 있으면 사실상 inline 허용
  • JSONP/할당형 스크립트: callback= 형태의 JSONP는 CSP 우회 경로

빠른 점검 체크리스트

  • 응답마다 nonce가 바뀌는지 확인
  • script-src에 와일드카드가 있는지 확인
  • 서드파티 스크립트가 동적 로드하는지 확인

방어의 핵심은 “nonce는 항상 새로, 정책은 최소 권한”이다. CSP는 규칙 그 자체보다 운영 습관에서 무너진다.