05 - Security Misconfiguration
https://owasp.org/Top10/A05_2021-Security_Misconfiguration/
개요
OWASP Top 10 2021 중 5위로 올라간 Security Misconfiguration (보안 구성 오류) 이다.
- 과거 6위에서 5위로 상승하였으며, 테스트된 애플리케이션 중 약 90%에서 일부 형태의 misconfiguration(구성 오류)가 발견되었다. 평균 발생률은 4.51% 이다.
발생 원인
- 적절한 보안 강화가 이루어지지 않았거나, 클라우드 서비스 권한이 잘못 설정된 경우
- 불필요한 기능, 서비스, 계정, 포트 등이 활성화된 상태
- 기본 계정 및 초기 비밀번호가 그대로 유지된 경우
- 업그레이드 후 보안 기능이 비활성화 또는 잘못 설정된 경우
- 프레임워크, 라이브러리, 데이터베이스 등의 보안 설정이 안전하지 않은 값으로 유지된 경우
- 보안 헤더를 전송하지 않거나, 안전하지 않은 설정인 경우
- 소프트웨어가 최신 상태가 아니거나 취약한 버전이 사용되는 경우
공격 예시
- 샘플 애플리케이션이 남아있고 기본 계정 비밀번호가 그대로인 경우, 공격자가 이를 이용하여 관리자 권한을 획득할 수 있다.
- 디렉터리 목록 보기를 활성화한 상태는 서버의 파일 구조가 노출되어 소스 디컴파일, 취약점 탐지 등이 가능히다.
- 오류 메시지에 스택 트레이스 등 내부 정보가 노출될 경우 정보가 유출된다.
- 클라우드 저장소가 기본 공유 설정으로 인터넷에 공개된 경우 민감 데이터가 그대로 노출될 수 있다.
방지 방법
- 단일화된 하드닝 과정(개발 환경, 테스트 환경, 운영 환경 모두 같은 보안 기준과 절차로 구성하는 것)을 마련해 구성하되, 환경별 자격증명(비밀번호 등)은 분리된 상태로 유지한다.
- 예제 코드, 문서, 샘플 앱 등을 제거하여 불필요한 구성요소를 제거한다.
- 패치 관리(보안 취약점이 발견되면 이를 고친 페치를 제때 확인하고 적용하는 과정)절차를 도입하여 보안 알림, 업데이트, 패치 사항 등을 장기 검토하고 적용한다. 특히 클라우드 저장소 권한을 정기적으로 검토하여 꼭 필요한 사람만 접근할 수 있게 한다.
- 한 부분이 뚫려도 다른 부분에 바로 영향을 미치지 못하도록 서비스 간 분리를 한다. 컨테이너(각 서비스마다 격리된 환경을 만들어 독립적으로 운영) , ACL(Access Control List, 네트워크에서 어떤 IP나 서비스가 어디에 접근할 수 있는지 제한) , 마이크로서비스 아키텍처(큰 프로그램을 여러 작은 서비스로 나눠서 관리) 등을 활용한 격리 체계를 구현한다.
- 보안 헤더(서버가 브라우저에 보내는 HTTP 응답 메시지에 붙는 특별한 설정값들. 예: CSP, X-Frame-Options 등)를 클라이언트에게 전송한다. 브라우저에서 발생할 수 있는 여러 공격을 예방할 수 있다.
- 배포 전에 구성의 효과성을 자동으로 점검하는 시스템을 도입한다.
배운 점
- 보안 구성에서 실수가 일어난다면 심각한 보안 침해 문제로 이어질 수 있음을 배웠다.
- 다양한 환경마다 일관된 보안 기준을 적용하는 단일화된 하드닝의 중요성을 깨달았다.
- 실제 웹 사이트 등에 회원가입을 할 때, 초기비밀번호가 주어지는 경우가 많았다. 이것을 바로 변경하지 않으면 심각한 피해가 이어질 수 있음을 알게 되었다.
- 보안은 코드상의 문제만으로 발생하는 것이 아니고, 환경과 설정까지 꼼꼼하게 관리해야 한다는 점을 배웠다.