본문 바로가기
일반IT/IT보안

CCTV 없는 집, 도둑이 들어도 모른다! OWASP A10:2017 - 불충분한 로깅 및 모니터링

by gasbugs 2025. 8. 16.

안녕하세요! 👋 OWASP Top 10 2017년 버전의 대장정을 마무리하는 여러분, 오늘은 마지막 항목이자 보안 사고 대응의 가장 중요한 눈과 귀가 되어주는 A10: 불충분한 로깅 및 모니터링(Insufficient Logging & Monitoring)에 대해 알아보겠습니다.

 

https://github.com/OWASP-Seoul/owasp/raw/master/OWASP%20Project/OWASP_Top_10-2017-ko.pdf

 

아무리 튼튼한 자물쇠와 경보 시스템을 갖춰도, 정작 CCTV가 없거나 녹화된 영상을 아무도 확인하지 않는다면 어떨까요? 도둑이 들어와 집을 다 털어간 뒤에도, 누가, 언제, 어떻게 들어왔는지 전혀 알 수 없을 겁니다. 이처럼 '기록하고 감시하는' 활동의 부재가 얼마나 위험한지 함께 살펴보겠습니다. 🕵️‍♀️📹


🤔 불충분한 로깅 및 모니터링이란 무엇인가요?

불충분한 로깅 및 모니터링은 애플리케이션에서 발생하는 중요한 보안 이벤트를 제대로 기록(로깅)하지 않거나, 기록된 로그를 아무도 적극적으로 감시(모니터링)하지 않아 공격을 탐지하고 대응하는 데 실패하는 취약점을 말합니다.

 

이는 다른 취약점처럼 직접적으로 시스템을 뚫는 공격 기법은 아닙니다. 하지만 이 취약점이 존재하면, 공격자가 시스템에 침투했을 때 그 사실조차 인지하지 못하고, 피해가 걷잡을 수 없이 커진 뒤에야 알아차리게 되는 ‘깜깜이 보안’ 상태에 놓이게 됩니다.

 

연구에 따르면, 공격자가 시스템을 최초로 침해한 시점부터 기업이 그 사실을 발견하기까지 평균적으로 200일 이상이 걸린다고 합니다. 이 시간 동안 공격자는 시스템 내부를 자유롭게 돌아다니며 정보를 훔치고, 파괴하며, 더 깊숙한 곳으로 이동할 수 있습니다. 😱


어떤 기록을 놓치고 있을까?: 부족한 로깅의 예시

"로그를 남기고 있긴 한데..." 라고 안심하기엔 이릅니다. 무엇을 어떻게 기록하느냐가 중요합니다.

1. 기록하지 않는 경우

  • 로그인 시도 및 실패: 누가 로그인을 시도했고, 몇 번이나 실패했는지 기록하지 않으면 무차별 대입 공격(Brute Force Attack)이나 크리덴셜 스터핑 공격을 탐지할 수 없습니다.
  • 접근 거부/실패: 권한 없는 사용자가 관리자 페이지나 다른 사용자의 데이터에 접근하려고 시도했을 때, 이를 기록하지 않으면 접근 통제 취약점을 노리는 공격 시도를 알 수 없습니다.
  • 입력값 검증 실패: SQL 인젝션이나 XSS 공격에 사용될 만한 특수문자가 포함된 입력이 들어왔을 때, 이를 기록하지 않으면 공격 시도를 파악할 기회를 놓칩니다.
  • 서버 측의 중요한 예외 처리: 시스템에서 발생하는 심각한 오류 로그를 남기지 않으면, 공격에 의해 시스템이 비정상적으로 동작하는지 알 수 없습니다.

2. 잘못 기록하는 경우

  • 불충분한 정보: "Error occurred"와 같이 너무 일반적인 메시지만 남기면, 나중에 문제가 발생했을 때 원인을 파악하기가 거의 불가능합니다. 언제(Timestamp), 어디서(Source IP), 누가(User ID), 무엇을(Event) 했는지 명확히 기록해야 합니다.
  • 민감한 정보 기록: 로그 파일에 사용자의 비밀번호, 주민등록번호, 신용카드 번호와 같은 민감한 정보를 그대로 기록하는 경우. 로그 파일 자체가 유출되면 2차 피해를 유발하는 정보 유출 사고로 이어집니다.

아무도 보지 않는 CCTV: 부족한 모니터링의 문제

로그를 잘 쌓아두기만 한다고 끝이 아닙니다. 그 기록을 실시간으로 분석하고, 이상 징후가 발생했을 때 즉시 알아채고 대응할 수 있는 모니터링 및 경보(Alerting) 체계가 없다면 로그는 그냥 서버 공간만 차지하는 데이터 덩어리에 불과합니다.

  • 예시:
    • 한 계정에서 1초에 10번 이상 로그인 실패가 발생하고 있는데 아무런 경보가 울리지 않음.
    • 평소 접속이 없던 해외 IP에서 관리자 계정 로그인이 성공했는데 아무도 알아채지 못함.
    • 야간에 갑자기 데이터베이스에서 대량의 데이터가 조회(SELECT)되고 있는데 아무런 경고가 없음.

이런 이상 징후들을 자동으로 탐지하고 보안 담당자에게 즉시 알려주는 시스템이 없다면, 공격을 실시간으로 막을 기회를 놓치게 됩니다.


🛡️ 우리 시스템의 눈과 귀 만들기 (대응 방안)

효과적인 로깅 및 모니터링 체계를 구축하기 위한 핵심 요소를 알아봅시다.

1. 무엇을 기록할 것인가? (What to Log)

OWASP는 다음과 같은 이벤트들을 필수로 기록하도록 권고합니다.

  • 입력값 검증 실패: SQLi, XSS, XXE 등 인젝션 공격 시도
  • 인증 이벤트: 로그인 성공 및 실패, 비밀번호 변경, 암호 재설정 등
  • 인가(접근 통제) 실패: 권한 없는 기능이나 리소스에 대한 접근 시도
  • 세션 관리 이벤트: 세션 생성, 무효화 등
  • 중요 기능 실행: 관리자의 사용자 계정 생성/삭제, 결제 처리 등
  • 백엔드 시스템의 오류: 심각한 예외, 연결 실패 등

로그에는 타임스탬프, 소스 IP, 사용자 ID, 이벤트 유형, 성공/실패 여부, 요청 URL 등이 명확하게 포함되어야 합니다.

2. 로그를 어떻게 보호할 것인가?

로그 파일 자체도 매우 중요한 정보이므로 안전하게 보호해야 합니다.

  • 접근 통제: 인가된 관리자만 로그 파일에 접근할 수 있도록 권한을 설정합니다.
  • 무결성 보장: 공격자가 자신의 흔적을 지우기 위해 로그를 변조하는 것을 막기 위해, 로그 파일의 해시 값을 생성하거나 별도의 중앙 로그 서버로 실시간 전송합니다.

3. 어떻게 감시하고 대응할 것인가?

  • 중앙 집중식 로깅: 여러 서버와 애플리케이션에서 발생하는 로그를 SIEM(Security Information and Event Management)과 같은 중앙 로그 관리 시스템으로 모아서 통합 분석해야 합니다.
  • 효과적인 경보 설정: "3분 이내에 동일 IP에서 10회 이상 로그인 실패 시 경보 발생" 과 같이, 실제 위협이 될 만한 시나리오에 대한 구체적인 경보 규칙을 설정해야 합니다.
  • 정기적인 검토 및 대응 훈련: 설정된 경보가 울렸을 때 어떻게 조치할지에 대한 명확한 대응 계획과 절차를 수립하고, 정기적으로 훈련해야 합니다.

2021년 OWASP Top 10에서는 이 항목이 A09: 보안 로깅 및 모니터링 실패(Security Logging and Monitoring Failures)라는 이름으로 순위가 한 단계 상승했습니다. 이는 사고를 '예방'하는 것만큼이나, 발생한 사고를 '탐지'하고 '대응'하는 능력이 현대 보안에서 얼마나 중요한지를 보여줍니다.

 

보안은 사고가 터지지 않도록 막는 것이 최선이지만, 100% 완벽한 방어는 없습니다. 따라서 우리는 항상 "공격은 언젠가 일어날 수 있다"는 사실을 인정하고, 그 공격의 징후를 놓치지 않고 신속하게 대응할 수 있는 감시 체계를 갖추는 데 투자해야 합니다.