Subresource Integrity (SRI)

agnusdei·2025년 9월 22일
0

CTF

목록 보기
134/168

1. Subresource Integrity (SRI) 개념

**Subresource Integrity (SRI)**는 웹 브라우저가 외부에서 로드되는 리소스(스크립트, 스타일시트 등)의 무결성을 검증하도록 하는 웹 보안 기능입니다.

  • 외부 CDN(Content Delivery Network) 또는 타사 서버에서 제공되는 파일이 변조되지 않았음을 확인
  • 브라우저가 로드하려는 리소스의 해시값을 미리 지정하고, 실제 로드된 파일의 해시와 비교
  • 일치하지 않으면 브라우저가 파일 실행을 차단

2. 작동 원리

HTML <script><link> 태그에 integrity 속성을 사용:

<script src="https://code.jquery.com/jquery-3.6.1.min.js"
        integrity="sha384-abc123..."
        crossorigin="anonymous"></script>
  1. 브라우저가 파일을 요청
  2. 서버에서 파일 수신
  3. integrity 속성에 정의된 해시값과 수신한 파일의 해시값 비교
  4. 해시 불일치 시: 파일 실행 차단, 콘솔에 에러 출력

3. 펜테스트 관점에서 의미

펜테스터 관점에서 SRI는 타사 스크립트 공급망 공격(Supply Chain Attack) 방어와 관련이 깊습니다.

예시 시나리오:

  1. 공격자가 타사 CDN에 있는 jQuery 파일을 변조
  2. 변조된 스크립트가 모든 웹사이트 방문자에게 배포
  3. 악성 코드 실행 가능 → 세션 탈취, XSS(Cross-Site Scripting) 등 발생

SRI 적용 시:

  • 브라우저가 해시를 검증하므로, 변조된 스크립트는 로드되지 않음
  • 공격자의 의도된 코드 실행 차단

4. SRI의 한계

  • 파일이 변경될 경우, 개발자가 새로운 해시를 업데이트해야 함
  • HTTPS 없이 외부 스크립트를 로드하면 보안 보장이 약화
  • 브라우저 지원 여부: 대부분 최신 브라우저는 지원하지만, 구형 브라우저에서는 무시될 수 있음

5. 펜테스트 체크리스트

펜테스터는 다음을 점검합니다:

  1. 외부 스크립트/스타일 로드 시 SRI 적용 여부
  2. 해시값이 정확하게 설정되어 있는지
  3. crossorigin 속성이 필요한 경우 올바르게 설정되었는지
  4. HTTPS와 함께 사용되어 안전한지

정리하면, SRI는 외부 리소스 무결성을 보장하여, CDN/타사 스크립트 변조 공격을 방어하는 강력한 클라이언트 측 보안 수단입니다. 펜테스트에서는 SRI 적용 여부와 구현 상태가 공격 표면을 줄이는 중요한 점검 포인트가 됩니다.


profile
DevSecOps ⚙️ + CTF🚩

0개의 댓글