하위리소스무결성(SRI) (Subresource Integrity)
한 줄 정의: 외부에서 불러오는 스크립트나 스타일시트 파일이 변조되지 않았음을 브라우저가 해시값으로 검증하도록 하는 웹 보안 메커니즘입니다.
쉽게 풀면
하위리소스무결성은 외부 서버에서 파일을 가져올 때 그 파일이 원래 예상한 내용과 정확히 일치하는지 확인하는 봉인 검사와 같습니다. 택배 상자에 봉인 스티커가 붙어 있으면 중간에 뜯겼는지 확인할 수 있는 것처럼, 웹페이지가 외부 콘텐츠 배포망에서 스크립트 파일을 불러올 때 미리 지정해둔 해시값과 실제 받은 파일의 해시값을 비교하여 다르면 실행을 거부합니다. 이를 통해 외부 서버가 해킹되어 파일이 변조되더라도 사용자 브라우저에서 그 변조된 코드가 실행되는 것을 막을 수 있습니다.
왜 중요한가
많은 웹사이트가 외부 콘텐츠 배포망에서 공용 라이브러리를 불러와 사용하는데, 이 지점이 공급망 공격의 경로가 될 수 있어 하위리소스무결성은 정보보안학에서 공급망 보안 연구의 한 축으로 다뤄집니다.
논문에서는 이렇게 쓰입니다
"외부 라이브러리를 사용하는 웹사이트 중 하위리소스무결성(SRI)을 적용한 비율이 상대적으로 낮게 나타났다."
실제 웹사이트들의 SRI 적용 실태를 조사한 연구 사례입니다.
"콘텐츠 배포망 서버가 침해되었을 때 하위리소스무결성이 악성 코드 실행을 차단하는 효과를 실험을 통해 검증하였다."
공급망 침해 시나리오에서 SRI의 방어 효과를 검증한 연구 사례입니다.
조금 더 깊게 보면
하위리소스무결성은 스크립트나 스타일시트 태그에 암호학적 해시값을 지정하는 방식으로 적용되며, 브라우저는 파일을 내려받은 뒤 해시를 계산하여 지정된 값과 비교합니다. 값이 일치하지 않으면 브라우저는 해당 리소스의 실행이나 적용을 차단합니다.
주의할 점
외부 파일이 자주 갱신되는 경우 해시값도 함께 갱신해야 하므로, 관리가 소홀하면 정상적인 업데이트임에도 리소스가 차단될 수 있습니다.