06 - Vulnerable and Outdated Components
https://owasp.org/Top10/A06_2021-Vulnerable_and_Outdated_Components/
개요
OWASP Top 10 2021 중 6위로 올라간 Vulnerable and Outdated Components (취약하거나 오래된 구성 요소) 이다.
- 애플리케이션에서 사용 중인 타사 구성요소가 취약하거나 더 이상 유지,관리되지 않는 상태를 말한다.
- 구성 요소를 제대로 추적, 업데이트, 보안 배치 하지 않으면, 애플리케이션 전체가 공격에 노출될 위험이 증가한다.
위험 요인
- 클라이언트,서버 양쪽에서 사용하는 모든 구성요소에 대한 버전 정보가 파악되지 않을 때
- 구성 요소 자체가 취약하거나 지원 종료된 상태
- 보안 공지나 취약점 알림을 정기적으로 모니터링 하지 않을 때
- 적시에 패치 적용 또는 업그레이드 하지 않을 때
- 업데이트 후 호환성 테스트 미실시로 최신 버전 적용이 어려울 때
- 구성 요소의 설정도 충분히 보호되지 않을 때 ( A05 Security Misconfiguration와 연계됨)
방지 방법
- 불필요한 구성 요소, 문서, 샘플 코드를 제거하여 공격 표면을 단축한다.
- 애플리케이션에서 사용 중인 모든 구성요소와 버전을 목록화 하여 관리한다.
- OWASP Dependency Check, retire.js 등 자동화 도구 활용해 의존성 및 취약성을 탐지한다.
- 보안 공지를 정기적으로 확인하고, 위험이 확인되면 대응 체계를 가동한다.
실제 사례
- Apache Struts 취약점 (Equifax 데이터 유출 사고, 2017년)
- 미국 신용정보회사 Equifax가 데이터 침해를 당해 1억명이 넘는 사용자의 개인 정보가 유출되었다.
- 웹 애플리케이션 프레임워크인 Apache Struts 에 대한 보안 패치가 출시되었음에도, Equifax 는 제때 적용하지 않아 발생한 침해사고이다.
배운 점
- 소프트웨어는 새로운 기능과 편의성을 확장할 수 있는 도구이지만, 배포 이후 유지보수 없이 방치될 경우 곧바로 보안 취약점이 될 수 있다는 것을 알게 되었다.
- 내가 짠 코드가 안전하더라도, 사용한 구성요소가 취약하면 뚫릴 수 있다는 것을 알게 되었다.
- 개인적으로 어플리케이션의 업데이트 등은 귀찮아서 밀어두는 경우가 많았는데, 보안을 위해서는 바로바로 최신 버전으로 적용을 해야겠다고 생각하게 되었다.