보안 구성 오류
보안 설정 오류는 잘못된 코드가 아닌 애플리케이션의 구성 설정으로 인해 발생하는 일반적인 취약점을 포괄하는 용어입니다. 이는 광범위한 주제이며 기술 스택과 같은 요인에 따라 크게 달라집니다.
이러한 문제를 해결하는 것은 구성 파일이나 코드 한 줄을 변경하는 것처럼 간단해 보이지만, 이러한 취약점으로 인한 영향과 결과는 심각할 수 있습니다.
아래에서 몇 가지 카테고리를 살펴보세요.
카테고리
웹서버
웹 서버의 대표적인 잘못된 설정은 디렉터리 목록을 사용하도록 설정하는 것입니다.
디렉터리 목록을 사용 설정해도 직접적인 영향은 거의 없거나 거의 없는 경우가 많지만, 공격자가 다른 실수를 쉽게 발견할 수 있게 해줍니다. 여기에는 의도적으로 숨긴 페이지, 백업 파일 및 기타 유사한 항목 등이 포함될 수 있습니다.
이러한 모든 것들은 본질적으로 잘못된 관행이며, 모호성에 의한 보안으로 간주된다는 점에 유의할 필요가 있습니다.
디렉터리 목록은 비활성화하기가 간단하며 공격자가 호스트를 열거하여 잠재적인 공격 경로를 찾는 데 더 많은 비용이 들게 함으로써 심층적인 방어 기능을 추가합니다.
프레임워크
디버그 모드
대부분의 프레임워크는 개발자를 위한 '디버그' 모드를 제공합니다. 이 모드는 무엇보다도 처리되지 않은 예외가 발생하면 일반적으로 스택 추적 세부 정보를 표시합니다. 일부 프레임워크는 스택 추적과 함께 코드 스니펫을 표시하기도 합니다. 이는 개발 과정에서 매우 유용할 수 있지만, 공격자에게 접근해서는 안 되는 많은 정보를 제공할 수도 있습니다.
엔드포인트 모니터링
또한 많은 프레임워크에는 프로덕션 환경이든 테스트/개발 환경이든 애플리케이션을 모니터링할 수 있는 엔드포인트 세트가 활성화되어 있습니다.
여기에는 다음이 포함될 수 있습니다:
- 메트릭(프로메테우스)
- 로그
- 환경 정보
- 경로/URL 매핑
이 정보는 일반적으로 민감한 정보는 아니지만 잠재적인 공격자가 애플리케이션을 더 잘 이해하는 데 도움이 되는 세부 정보를 제공할 수 있습니다. 물론 환경이나 로그에는 실제로 민감한 정보가 포함되어 있을 수 있으므로 누군가 이를 엿볼 경우 어떤 정보가 표시되고 활용될 수 있는지 염두에 두는 것이 중요합니다.
프로덕션 환경과 비프로덕션 환경의 차이점
개발/테스트 환경에서는 디렉토리 목록, 디버그 모드, 디버그 엔드포인트 비활성화 등의 가이드라인을 따르지 않고 프로덕션 환경에서만 이를 실행하는 실수를 자주 저지르곤 합니다. 그 이유는 이러한 비프로덕션 시스템은 테스트용이며 이러한 기능에서 제공하는 정보를 얻는 것이 중요하기 때문입니다.
그러나 이러한 사고방식은 잘못된 것입니다. 공격자는 여전히 비프로덕션 시스템에서 정보를 조사하고 유출한 다음 테스트 시스템에서 수집한 정보를 활용하여 프로덕션 시스템을 공격할 수 있습니다. 또한 테스트 시스템에서 프로덕션 데이터베이스의 복사본을 사용하는 기업도 드물지 않으므로 위험은 더욱 커집니다.
XXE
매우 심각한 보안 구성 오류의 한 유형은 XML 외부 엔티티(XXE)입니다.
이는 엔티티 확인이 활성화된 상태에서 신뢰할 수 없는 소스에서 구문 분석할 때 발생하며, 지금까지는 이러한 경우가 많았습니다. XXE는 무엇보다도 임의의 파일 읽기 및 서버 측 요청 위조로 이어질 수 있습니다.
자세한 내용과 간단한 예시는 아래 예시를 참조하세요.