08 - Software and Data Integrity Failures
https://owasp.org/Top10/A08_2021-Software_and_Data_Integrity_Failures/
개요
OWASP Top 10 2021 중 8위로 올라간 Software and Data Integrity Failures (소프트웨어 및 데이터 무결성 실패) 이다.
- 2021년에 새로 추가된 범주이다.
- 애플리케이션이 외부에서 받아온 코드나 데이터를 내부에서 믿고 쓰면서 진짜 원본인지, 중간에 변조되지 않았는지를 검증하지 않아 생기는 문제이다.
- 서명 확인도 없이 업데이트 맏기, 출처 불명 저장소에서 코드 끌어오기 같은 것들이 해당된다.
위험 요인
- 개발팀이 믿는 업데이트/패키지를 공격자가 바꿔치기 하면, 그걸 여러 고객에게 일괄 배포하게 되어 공급망이 오염된다
- 빌드 서버, 자동 실행 도구, 시크릿(비밀번호 등)이 공격자에게 노출되면 배포 산출물이 악성 버전으로 변조되어 배포될 수 있다.
- 직렬화된 토큰, 설정, 객체를 검증 없이 받아들이면 공격자가 데이터나 객체를 변조하여 권한 상승, 원격 코드 실행 등의 공격이 가능하다.
방지 방법
- 코드, 데이터 서명 검증
- 소프트웨어와 데이터가 맞는 발행자로부터 왔고, 변조되지 않았는지를 디지털 서명 등으로 확인해야 한다.
- 신뢰 가능한 저장소만 사용
- npm/Maven 등 공식·사내 검증 저장소를 쓰고, 알려진 안전한 버전만 쓴다.
- 소프트웨어 공급망 보안 도구
- OWASP Dependency-Check, OWASP CycloneDX(SBOM) 등으로 구성요소 취약점/무결성을 점검한다.
- 소프트웨어 공급망 보안 도구 : 설치된 라이브러리가 알려진 취약점을 포함하고 있는지 확인하고, 소프트웨어 구성요소가 원본 그대로인지, 변조되지 않았는지 검증한다.
- 변경 검토 프로세스
- 코드/구성 변경에 리뷰,승인 절차를 두어 악성 코드 주입 가능성을 낮춘다.
- CI/CD 분리와 접근제어 (CI/CD = 개발 → 테스트 → 배포 자동화 파이프라인)
- 빌드·배포 파이프라인을 분리하고 권한 최소화/MFA(다단계 인증)/비밀관리를 철저히 한다.
- 파이프라인 무결성이 곧 산출물 무결성임을 명심한다.
- 직렬화 데이터 보호
- 서명되지 않은/암호화되지 않은 직렬화 데이터를 신뢰할 수 없는 클라이언트로 보내지 말고, 무결성 체크와 재생 공격 방지를 적용한다.
공격 예시 / 실제 사례
- 서명 없이 업데이트 적용
- 서명 없는 자동 업데이트를 쓰면, 공격자가 위조 업데이트를 넣어 전 세계 기기에 설치시킬 수 있다.
- 아직까지 많은 제품군들이 취약하다.
- SolarWinds 악성 업데이트
- SolarWinds의 업데이트 체인이 몇당간 은밀하게 오염되었고, 약 18,000곳이 업데이트를 받았으며 그중 약 100여 곳에서 실제 피해가 확인되었다.
- 공급망 무결성 실패의 대표적인 사례이다.
배운 점
- 외부에서 받은 모든 코드나 데이터는 무조건 검증해야 안전함을 배웠다.
- 공격자가 라이브러리나 패키지를 변조하면, 이를 사용하는 모든 사용자에게 악성 코드가 배포될 수 있어 배우 위험함을 알게 되었다.
- 소프트웨어가 기능을 제공하는 것은 매우 좋지만, 검증되지 않은 상태로 위험하면 위험함을 배웠다.