가이드라인

보안 설정 오류

보안 설정 오류(Security Misconfiguration)는 잘못된 코드보다는 애플리케이션의 구성 설정으로 인해 발생하는 일반적인 취약점을 포괄하는 용어입니다. 이는 매우 광범위한 주제이며 기술 스택과 같은 요소에 크게 의존합니다.

이러한 문제를 해결하는 것은 구성 파일이나 코드 한 줄을 수정하는 것처럼 간단해 보일 때가 많지만, 해당 취약점이 미치는 영향과 결과는 매우 심각할 수 있습니다.

아래의 몇 가지 범주를 살펴보겠습니다.

범주

웹 서버

웹 서버의 대표적인 설정 오류 중 하나는 디렉터리 리스팅(Directory Listing) 활성화입니다.

디렉터리 리스팅을 활성화한다고 해서 즉각적인 피해가 발생하는 경우는 드물지만, 공격자가 다른 취약점을 쉽게 발견할 수 있는 환경을 제공합니다. 예를 들어 의도적으로 숨겨둔 페이지, 백업 파일 등이 노출될 수 있습니다.

이러한 항목들 자체가 본질적으로 잘못된 관행이며, 보안을 단순히 숨기는 것에 의존하는 '난독화 보안(security by obscurity)'에 해당한다는 점을 유념해야 합니다.

디렉터리 리스팅은 비활성화하기 매우 쉬우며, 공격자가 호스트를 탐색하여 잠재적인 공격 경로를 찾아내는 과정을 어렵게 만듦으로써 심층 방어(defense in depth)를 강화합니다.

프레임워크

디버그 모드

대부분의 프레임워크는 개발자를 위한 "디버그" 모드를 제공합니다. 이 모드는 처리되지 않은 예외가 발생할 때 스택 트레이스 세부 정보를 표시하는 등의 기능을 수행합니다. 일부 프레임워크는 스택 트레이스와 함께 코드 조각을 보여주기도 합니다. 이는 개발 중에는 매우 유용할 수 있지만, 공격자에게는 절대 노출되어서는 안 될 많은 정보를 제공할 위험이 있습니다.

모니터링 엔드포인트

많은 프레임워크에는 운영 환경이나 테스트/개발 환경에서 애플리케이션을 모니터링할 수 있도록 활성화할 수 있는 엔드포인트 세트가 포함되어 있습니다.

여기에는 다음이 포함될 수 있습니다:

  • 메트릭(Prometheus)
  • 로그
  • 환경 정보
  • 경로/URL 매핑

이러한 정보가 일반적으로는 민감하지 않더라도, 잠재적 공격자가 애플리케이션을 더 잘 이해하도록 돕는 세부 정보를 제공할 수 있습니다. 물론 환경 설정이나 로그에 실제로 민감한 정보가 포함되어 있을 수 있으므로, 외부인의 눈에 띄었을 때 악용될 수 있는 정보가 무엇인지 항상 주의해야 합니다.

운영 환경과 비운영 환경의 구분

많은 사람들이 개발/테스트 환경에서는 디렉터리 리스팅, 디버그 모드, 디버그 엔드포인트 비활성화와 같은 가이드라인을 따르지 않고 운영 환경에서만 적용하는 실수를 범합니다. 비운영 시스템은 테스트를 위한 것이며 이러한 기능이 제공하는 정보가 필요하다는 논리 때문입니다.

하지만 이러한 사고방식은 잘못된 것입니다. 공격자는 비운영 시스템을 탐색하여 정보를 알아낸 뒤, 이를 활용해 운영 시스템을 공격할 수 있습니다. 또한 테스트 시스템에 운영 데이터베이스의 복사본을 사용하는 기업도 적지 않으며, 이는 위험을 더욱 가중시킵니다.

XXE

매우 심각한 보안 설정 오류 유형 중 하나가 바로 XML 외부 엔티티(XXE) 공격입니다.

이는 엔티티 확인 기능이 활성화된 상태에서 신뢰할 수 없는 소스의 데이터를 파싱할 때 발생하며, 과거에는 흔히 발생하던 문제였습니다. XXE는 임의 파일 읽기, 서버 측 요청 위조(SSRF) 등 다양한 보안 문제를 야기할 수 있습니다.

자세한 내용과 간단한 예시는 아래를 확인해 주세요.

XXE 예시

태그라인

실무에 바로 적용하는 보안 코딩

OWASP Top 10과 같은 소프트웨어 취약점을 이해하고 완화하기 위한 보안 코딩 가이드라인을 살펴보고, 실제 앱 시뮬레이션을 통해 실습할 수 있는 가이드형 교육 미션을 시작해 보세요.

추가 가이드라인
데모 예약하기