LJC.LOG
September 13, 2024

Subresource Integrity(SRI) 취약점 조치방법

Subresource Integrity (SRI)**는 웹 개발에서 외부 리소스(스크립트, 스타일시트, 폰트 등)의 무결성을 보장하는 보안 기능입니다.

SRI를 사용하면, 개발자는 외부 리소스에 대한 암호화 해시값을 HTML 태그에 포함시킵니다.

사용자가 웹 페이지를 방문할 때, 브라우저는 해당 리소스를 로드하기 전에 해시값을 검증하여 리소스가 변조되지 않았는지 확인합니다.

SRI를 제대로 구현하지 않으면 외부 리소스가 안전하지 않으며, 공격자가 악성 코드를 삽입할 수 있습니다.

google 폰트를 적용하면서 외부 리소스를 참조하면서 해당 취약점이 발견되었습니다. 아래는 해당 취약점 조치방법에 대해서 설명하겠습니다.

### 1. 위험

SRI가 없는 경우, 외부에서 로드되는 리소스는 무결성 검증이 없기 때문에 공격자가 리소스를 변조하여 Cross-Site Scripting (XSS) 같은 공격을 통해 악성 스크립트를 삽입할 가능성이 있습니다. 이를 통해 공격자는 다음과 같은 보안 위협을 초래할 수 있습니다:

  • 사용자 데이터 탈취
  • 권한 없는 데이터 접근
  • 악성 코드 실행

### 2. 해결방법

SRI 해시를 사용하라는 글을 보고 적용하였습니다.

아래 링크에 들어가서 외부리소스 URL을 입력하면 해시값 조회가 가능합니다.

SRI 해시조회 사이트


위 링크에서 조회 시 integrity 속성이 있습니다.

integrity 속성에는 리소스의 암호화 해시값이 포함됩니다. 이 해시값은 리소스 파일의 내용을 기반으로 생성되며, 주로 SHA-256, SHA-384, SHA-512 같은 해시 알고리즘을 사용합니다.

위에서 조회 된 링크로 웹사이트에 적용시켜주면 됩니다.


CSP와 함께 사용하면 다음과 같은 이점을 얻을 수 있습니다:

  1. 출처와 무결성 검증:
  • CSP는 리소스가 허용된 출처에서 로드되도록 제한하고, SRI는 리소스가 변조되지 않았음을 보장합니다. 이 두 가지를 함께 사용하면, 출처와 무결성을 모두 확인할 수 있습니다.
  1. CDN 리소스 보호:
  • 외부 CDN에서 제공되는 리소스가 변조되었더라도, SRI는 해시값을 통해 이를 감지하고 변조된 리소스를 로드하지 않습니다. CSP는 리소스의 출처를 통제하고, SRI는 그 리소스가 변조되지 않았는지 확인합니다.
  1. CSP 우회 방지:
  • 일부 경우 CSP 정책을 우회하는 공격이 존재할 수 있습니다. SRI는 CSP를 보완하여, 외부 리소스가 무결성 검사를 통과하지 않으면 로드되지 않게 만듭니다.


결론

integrity 속성은 외부 리소스의 무결성을 보장하여, 웹 페이지가 변조된 리소스를 로드하지 않도록 보안성을 강화하는 중요한 도구입니다. 이를 통해 외부에서 제공되는 스크립트나 스타일시트가 신뢰할 수 있는 상태인지 확인할 수 있습니다.

Related Posts