Security Misconfiguration
OWASP Top 10에서 6위에서 5위로 상승한 Security Misconfiguration은 애플리케이션의 90%가 어떤 형태로든 잘못 구성된 것으로 테스트되었으며, 평균 발생률은 4.%, 20만 건 이상의 CWE가 이 범주에 포함된다.
애플리케이션은 다음과 같은 경우에 취약하다.
- 애플리케이션 스택의 어느 부분에서도 적절한 보안 강화가 이루어지지 않거나 클라우드 서비스에 대한 권한이 잘못 구성된 경우
- 불필요한 기능이 활성화되거나 설치된 경우(예: 불필요한 포트, 서비스, 페이지, 계정 또는 권한)
- 기본 계정과 그 비밀번호가 여전히 활성화되어 변경되지 않은 경우
- 오류 처리 과정에서 스택 추적이나 기타 과도하게 정보가 노출되는 오류 메시지가 사용자에게 표시되는 경우
- 업그레이드된 시스템의 최신 보안 기능이 비활성화되거나 안전하게 구성되지 않은 경우
- 애플리케이션 서버, 애플리케이션 프레임워크(예: Struts, Spring, ASP.NET), 라이브러리, 데이터베이스 등의 보안 설정이 안전한 값으로 설정되지 않은 경우
- 서버가 보안 헤더나 지시어를 전송하지 않거나 안전한 값으로 설정되지 않은 경우
- 소프트웨어가 최신이 아니거나 취약한 경우(세부 내용은 A06:2021-Vulnerable and Outdated Components 참조)
일관된 반복적인 애플리케이션 보안 구성 프로세스가 없다면 시스템이 더 높은 위험에 노출된다.
예방 방법
안전한 설치 프로세스를 구현해야 한다.
- 반복 가능한 보안 강화 프로세스는 새로운 환경을 적절히 잠금 해제된 상태로 신속하고 쉽게 배포할 수 있게 한다. 개발, QA 및 운영 환경은 동일하게 구성하되 각 환경마다 다른 자격 증명을 사용해야 한다. 이 프로세스는 새로운 안전한 환경을 설정하는 데 필요한 노력을 최소화하기 위해 자동화되어야 한다.
- 불필요한 기능, 구성 요소, 문서 및 샘플이 없는 최소 플랫폼을 유지한다. 사용하지 않는 기능과 프레임워크는 제거하거나 설치하지 않는다.
패- 치 관리 프로세스의 일환으로 보안 노트, 업데이트 및 패치에 적합한 구성을 검토하고 업데이트하는 작업을 수행한다. 클라우드 스토리지 권한(예: S3 버킷 권한)을 검토한다.
- 세분화된 애플리케이션 아키텍처는 구성 요소 또는 테넌트 간의 효과적이고 안전한 분리를 제공한다. 이는 세분화, 컨테이너화 또는 클라우드 보안 그룹(ACL)을 통해 가능하다.
- 클라이언트에게 보안 지시어를 전송한다(예: 보안 헤더).
- 모든 환경의 구성 및 설정 효과성을 검증하는 자동화된 프로세스를 마련한다.
공격 시나리오
시나리오 #1: 애플리케이션 서버에 샘플 애플리케이션이 삭제되지 않고 남아 있다. 이 샘플 애플리케이션은 알려진 보안 결함을 포함하고 있어 공격자가 서버를 손상시키는 데 이용할 수 있다. 이러한 애플리케이션 중 하나가 관리자 콘솔이라면 기본 계정이 변경되지 않아 공격자가 기본 비밀번호로 로그인하여 시스템을 장악할 수 있다.
시나리오 #2: 서버에서 디렉터리 목록 표시가 비활성화되어 있지 않다. 공격자는 디렉터리를 나열할 수 있으며, 컴파일된 Java 클래스를 발견하고 다운로드하여 디컴파일 및 리버스 엔지니어링을 통해 코드를 확인할 수 있다. 이 과정에서 심각한 접근 제어 결함을 발견할 수 있다.
시나리오 #3: 애플리케이션 서버의 구성으로 인해 사용자에게 자세한 오류 메시지(예: 스택 추적)가 반환된다. 이는 민감한 정보나 알려진 취약점이 있는 구성 요소 버전과 같은 근본적인 결함을 노출할 수 있다.
시나리오 #4: 클라우드 서비스 제공업체(CSP)의 기본 공유 권한이 인터넷에 공개되어 있다. 이는 다른 CSP 사용자들이 클라우드 스토리지에 저장된 민감한 데이터에 접근할 수 있게 한다.