SecurityDev

OWASP Top 10 및 보안 트렌드 변화 분석 1

2024.12.05개발팀장ㅣDerek

 

 

안녕하세요! 오늘은 소프트웨어 보안에서 가장 중요하고도 기본이 되는 OWASP Top 10에 등록된 취약점들의 항목과 대응 전략을 소개해 드리겠습니다.

 

 

OWASP Top 10은 전 세계적으로 가장 많이 참조되는 웹 애플리케이션 보안 가이드라인인데요. 이번 글에서 6위부터 10위까지의 항목에 대해 상세히 알아보고, 이를 실무에서 어떻게 효과적으로 대응할 수 있는지 실질적인 팁을 공유드리겠습니다. 🛠️

 

 


📌 OWASP Top 10이란?

 

 

웹 애플리케이션 보안은 현대 디지털 환경에서 가장 중요한 이슈 중 하나입니다. 해커들은 끊임없이 새로운 공격 방법을 시도하고 있으며, 이에 맞서 보안을 강화하는 것은 모든 개발자와 보안 전문가들에게 필수적인 과제가 되었습니다.

 

 

OWASP(Open Web Application Security Project)는 이러한 보안 문제를 체계적으로 연구하고, 웹 애플리케이션에서 자주 발생하는 취약점을 정리한 OWASP Top 10을 3~4년 주기로 발표하고 있습니다.

 

 

아래 이미지는 2017년 발표와 2021년 발표를 비교하며 순위 변동 및 새로 추가된 항목을 보여줍니다.

 

 

 

 

 

 

 

 

이번 글에서는 2021년 발표된 OWASP Top 10 목록의 주요 항목을 살펴보고, 보안 트렌드의 변화와 이를 실무에서 어떻게 활용할 수 있는지에 대해 심도 있게 다뤄보겠습니다.

 

 


🌐 10위: Server-Side Request Forgery (SSRF)

 

 

Server-Side Request Forgery(SSRF)는 웹 애플리케이션 취약점 중 하나로, 2017년 OWASP Top 10에 새롭게 추가된 항목입니다. 비록 최근에 등장했지만, 그 영향력은 무시할 수 없습니다.

 

 

SSRF는 주로 사용자가 입력한 URL이나 URL과 연결된 데이터를 충분히 검증하지 않았을 때 발생합니다. 이를 통해 애플리케이션이 해당 URL로 직접 요청(Request)을 보내게 되는 상황이 발생하며, 이는 다양한 공격 벡터를 제공합니다.

 

 


주요 원인

 

 

  1. 내부 서버 스캐닝 및 접근

 

  • 외부에 노출된 서비스에 SSRF 취약점이 존재할 경우, 이를 악용해 내부 네트워크에 접근하거나 스캐닝이 가능합니다.
  • 이러한 접근은 추가적인 공격으로 이어질 수 있는 발판이 됩니다.

 

  1. WAF를 우회한 내부 접근

 

  • 잘못된 WAF(Web Application Firewall) 설정이 SSRF와 결합되어 내부 인프라를 노출시킬 수 있습니다.

 

  1. 추가적인 권한 상승 및 원격 코드 실행

 

  • SSRF 취약점은 다른 공격 기법과 결합해, 권한 상승(LPE, Local Privilege Escalation)이나 원격 코드 실행(RCE, Remote Code Execution)을 가능하게 합니다.

 


 

 

실제 사례

 

  1. Capital One 사례

 

  • 문제 발생 원인: WAF 설정 오류로 인해 내부 인프라가 공격자의 요청을 처리.
  • 결과: 공격자가 내부 자원을 악용해 데이터를 탈취하거나 추가적인 공격을 수행.

 

  1. Microsoft Exchange 사례

 

  • 공격 흐름: SSRF → LPE(권한 상승) → RCE(원격 코드 실행).
  • 결과: 공격자가 시스템에 페이로드를 주입해 악성 행위를 수행.

 

 


대응 전략 🛠️

 

 

  1. 사용자 입력 검증

     

    • URL 입력값에 대해 엄격한 검증 및 화이트리스트를 적용합니다.
    • 외부 요청을 제한하거나 필요한 요청만 허용합니다.

       

  2. 네트워크 분리

     

    • 내부 네트워크와 외부 네트워크를 철저히 분리해 외부로부터의 접근을 방지합니다\

      .

  3. WAF 설정 검증

     

    • WAF가 내부 자원으로의 요청을 중계하지 않도록 설정을 점검합니다.

       

  4. 로깅 및 모니터링

     

    • 비정상적인 요청을 감지할 수 있도록 로깅과 모니터링을 강화합니다.

 


 

 

🚨 9위: Security Logging and Monitoring Failures (보안 로깅 및 모니터링 실패)

 

Security Logging and Monitoring Failures2017년 OWASP Top 10에서 10위에서 9위로 상승한 항목으로, 보안 사고를 탐지하고 대응하는 데 실패하는 상황과 관련됩니다. 공격이 발생하거나 시스템에 문제가 생겨도 이를 즉시 인지하지 못하거나 알지 못하는 경우를 의미합니다.

 

 


 

 

주요 원인

 

  1. 로그 미수집

     

    • 로그를 전혀 생성하지 않거나 필수적인 이벤트(예: 로그인 실패, 권한 검증 실패 등)를 로깅하지 않는 경우.

       

  2. 비효율적인 로그 관리

     

    • 로그가 생성되지만, 유용한 정보가 포함되지 않거나,
    • 로그가 로컬에만 저장되어 접근 및 분석이 어려운 경우.

     

  3. 알림 체계의 부재

     

    • 로그가 제대로 기록되더라도, 적절한 관리자에게 알림이 전달되지 않아 문제가 실시간으로 파악되지 않는 경우.

       

  4. 비정상 행동 모니터링 실패

     

    • 로그인 실패율의 급격한 증가, 서버 에러 로그의 폭증 등 비정상적인 패턴을 탐지 및 대응하지 못하는 경우.

 

 


 

 

실제 사례

 

 

  1. Citrix 데이터 유출 사건

     

    • 문제 발생 원인: 공격자들이 Password Spraying 기법을 사용했으나 이를 탐지하지 못함.
    • 결과: 데이터 유출 탐지를 실패하여 6TB 이상의 데이터가 탈취될 때까지 침해 사실을 인지하지 못함.

 

 


 

대응 전략 🛠️

 

 

  1. 적절한 로깅

     

    • 로그인 실패, 권한 검증 실패, 비정상적인 요청 등의 이벤트를 꼼꼼히 로깅.
    • 로그 포맷을 표준화하여 읽기 쉽고 분석 가능한 형태로 관리.

       

  2. 중앙 집중형 로그 관리

     

    • 로그 데이터를 중앙화된 관리 시스템(예: SIEM)을 통해 수집 및 분석.
    • 로컬 로그 저장에 의존하지 않고, 원격 서버에 백업.

       

  3. 실시간 알림 시스템 구축

     

    • 비정상 행동(예: 로그인 실패율 급증, 에러 로그 폭증 등)에 대해 자동 알림이 발송되도록 설정.
    • 관리자가 즉각적으로 인지할 수 있는 체계를 마련.

       

  4. 비정상 패턴 탐지 및 모니터링

     

    • 머신 러닝 기반 솔루션 또는 규칙 기반 시스템을 사용해 의심스러운 활동을 탐지.
    • 예) 짧은 시간 동안 동일한 IP에서의 반복적인 로그인 실패 탐지.

       

  5. 정기적 모니터링 및 감사

     

    • 수집된 로그 데이터를 정기적으로 리뷰하여 잠재적인 위협을 사전에 식별.
    • 자동화된 도구와 수동 감사 프로세스를 병행.

       

 

 


 

Security Logging and Monitoring Failures는 발생한 침해 사실조차 몰랐던 상황을 방지하기 위한 핵심 영역입니다. 체계적인 로깅과 모니터링을 통해 사고를 신속히 탐지하고 대응할 수 있는 환경을 구축하는 것이 중요합니다.

 

 


 

 

💡 8위: Software and Data Integrity Failures (소프트웨어 및 데이터 무결성 실패)

 

 

Software and Data Integrity Failures는 소프트웨어 업데이트, 데이터 처리, 또는 CI/CD 자동화 과정에서 적절한 무결성 검사가 이루어지지 않아 발생하는 취약점입니다. 이로 인해 악성 코드가 포함된 업데이트가 배포되거나, 신뢰할 수 없는 디펜던시가 사용되며, 공급망 공격(Supply Chain Attack)에 취약해질 수 있습니다.

 

 


 

 

주요 원인

 

 

  1. 무결성 검사 부재

     

    • 소프트웨어 업데이트나 데이터 처리 과정에서 디지털 서명 또는 무결성 검증을 생략하는 경우.

       

  2. 신뢰할 수 없는 레포지토리 사용

     

    • npm, Maven 등 패키지 관리자에서 신뢰할 수 없는 소스를 사용하는 경우.

       

  3. CI/CD 파이프라인의 보안 결여

     

    • 빌드 및 배포 자동화 과정에서 검증이 부족하거나, 적절한 액세스 제어가 이루어지지 않는 경우.

       

  4. 취약한 디펜던시 사용

     

    • 의존성에 포함된 악성 또는 취약한 라이브러리를 사용하는 경우.

 

 


 

 

실제 사례

 

 

  1. SolarWinds 공격

     

    • 공격 흐름: SolarWinds 회사가 공격당함 → Orion 제품에 악성 코드 삽입 → 고객에게 배포 → 고객 감시 및 추가 악성 행위로 확산.
    • 결과: 광범위한 데이터 유출 및 악성 행위.

       

  2. CCleaner 공격

     

    • 공격 흐름: CCleaner 제작사의 데이터가 유출됨 → 악성 코드가 포함된 업데이트 배포 → 사용자 시스템에 악영향.
    • 결과: 대규모 사용자가 피해를 입음.

       

  3. NotPetya 랜섬웨어

     

    • 공격 흐름: MeDoc 소프트웨어 및 관련 인프라 공격 → 페이로드 배포 → 랜섬웨어 확산.
    • 결과: 글로벌 공급망에 심각한 피해 초래.

       


 

 

대응 전략 🛠️

 

 

  1. 신뢰할 수 있는 레포지토리 설정

     

    • npm, Maven 등 패키지 관리자에서 공식 레포지토리만 사용하도록 설정.
    • 타사 레포지토리 사용 시 철저한 검증 진행.

       

  2. 취약성 검사 도구 사용

     

    • OWASP Dependency Check 등을 사용하여 프로젝트에 사용되는 라이브러리 및 디펜던시를 점검.
    • 정기적으로 취약점 DB와 비교해 사용 중인 패키지의 최신 보안 상태를 확인.

       

  3. CI/CD 파이프라인 보안 강화

     

    • 빌드 및 배포 프로세스에 코드 서명 및 무결성 검증을 포함.
    • 액세스 제어 정책을 적용하여 불필요한 권한 제한.
    • 빌드 도구, 배포 환경의 보안 상태를 정기적으로 검토.

       

  4. 소프트웨어 업데이트 무결성 확인

     

    • 모든 소프트웨어 업데이트에 대해 디지털 서명 및 해시 체크를 통해 무결성을 검증.
    • 사용자에게 신뢰할 수 있는 업데이트만 배포.

       

  5. 서플라이 체인 모니터링

     

    • 공급망 전반에 대한 보안 점검 및 모니터링.
    • 의존성 및 서플라이 체인의 보안 상태를 정기적으로 감사.

 

 


 

 

Software and Data Integrity Failures는 단순한 취약점 이상의 심각한 영향을 미칠 수 있는 보안 문제입니다. 이를 예방하기 위해 무결성 검증, 공급망 점검, CI/CD 보안 등을 적극적으로 도입해야 합니다.

 

 


 

 

🔑 7위: Identification and Authentication Failures (인증 및 식별 실패)

 

 

Broken Authentication2017년 OWASP Top 10에서 2위에 오른 취약점으로, 인증 절차에서 발생하는 다양한 보안 문제를 의미합니다. 대표적으로는 약한 비밀번호 사용, 크리덴셜 스터핑 및 브루트포스 공격에 대한 방어 부족, 인증 세션 또는 토큰 관리의 부재 등이 해당됩니다. 이는 인증 시스템이 공격자에게 쉽게 뚫리게 하여 민감 데이터 유출, 계정 탈취 등 심각한 문제를 초래할 수 있습니다.

 

 


 

 

주요 원인

 

 

  1. 약한 비밀번호 및 비밀번호 관리 부실

     

    • 쉽게 예측 가능한 비밀번호 사용(예: 123qwe, admin/password).
    • 비밀번호를 평문으로 저장하거나, 약한 해싱 알고리즘(MD5 등)을 사용하는 경우.

       

  2. 자동화 공격 방어 부족

     

    • 크리덴셜 스터핑(공격자가 유출된 사용자 이름/비밀번호 조합을 이용하여 로그인 시도) 및 브루트포스 공격 방어 미흡.

       

  3. 세션 및 토큰 관리 부재

     

    • 인증 세션이 일정 시간 이후 만료되지 않음.
    • 유출된 토큰을 취소하거나 갱신(Refresh)하지 못하는 구조.

       

  4. 다중 인증(MFA) 미적용

     

    • 계정 탈취 방지를 위한 다중 인증(2FA, MFA) 미적용.

       

  5. 로그인 실패에 대한 비정상 처리

     

    • 로그인 실패 시 적절한 제한(예: IP 차단, CAPTCHA 적용)이 없는 경우.

 

 


 

 

실제 사례

 

 

  1. 중소기업 NAS 공격

     

    • 문제 발생 원인: 기본 관리자 계정 및 약한 비밀번호 사용.
    • 결과: 해커가 공격하여 민감 데이터가 유출되거나 시스템이 암호화되는 피해.

       

  2. 법원 해킹 사건

     

    • 문제 발생 원인: 비밀번호가 123qwe처럼 쉽게 추측 가능한 값.
    • 결과: 북한 해커의 공격을 받았으며, 피해가 반년간 은폐됨.

       

  3. 선관위 시스템 비밀번호 사건

     

    • 문제 발생 원인: 비밀번호가 12345로 설정된 관리자 계정.
    • 결과: 시스템이 해커에게 노출되었음에도 자체적으로 보안 점수를 "100점"이라고 평가.

 

 


 

 

대응 전략 🛠️

 

 

  1. 강력한 비밀번호 정책

    • 비밀번호 최소 길이, 복잡성(대문자, 숫자, 특수문자 포함) 요구사항 설정.
    • 비밀번호 관리 도구(Password Manager) 사용 권장.
    • 평문 비밀번호 저장 금지 및 BCrypt 등 강력한 해싱 알고리즘 사용.

     

  2. 자동화 공격 방어

     

    • 크리덴셜 스터핑 및 브루트포스 공격 방지를 위해 CAPTCHA 적용 및 IP 차단.
    • 로그인 시도 제한(예: 실패 5회 이후 계정 잠금).

       

  3. 세션 및 토큰 관리 강화

     

    • 세션 및 토큰에 만료 시간(Time-to-Live, TTL)을 설정.
    • *유출된 토큰을 취소(Invalidate)**할 수 있는 메커니즘 구현.
    • *토큰 리프레시(Refresh)**를 위한 안전한 절차 마련.

       

  4. 다중 인증(MFA) 적용

     

    • 로그인 시 SMS, 이메일, OTP 등 추가 인증 단계 도입.
    • 특히 관리자 계정에는 강제 적용.

       

  5. 비밀번호 재사용 방지

     

    • 사용자가 이전에 사용한 비밀번호를 다시 설정하지 못하도록 제한.
    • 유출된 크리덴셜 DB와 비교하여 비밀번호 설정을 차단.

       

  6. 로그인 실패 모니터링

     

    • 로그인 실패가 과도하게 발생하는 계정 및 IP를 실시간으로 감지.
    • 비정상적인 시도가 감지되면 관리자에게 알림 발송 및 계정 잠금.

       


 

 

Broken Authentication은 인증 시스템의 가장 기본적인 문제로 시작해 심각한 피해를 초래할 수 있습니다. 강력한 비밀번호 정책, 세션 관리, 다중 인증 등을 통해 기본 보안을 탄탄히 하고, 자동화된 공격에 대비한 체계를 마련하는 것이 필수적입니다.

 

 

🔍 6위: Vulnerable and Outdated Components (취약하고 오래된 구성요소)

 

 

Using Components with Known Vulnerabilities2017년 OWASP Top 10에서 9위에서 6위로 상승한 항목으로,

취약점이 이미 알려진 소프트웨어, 프레임워크, 라이브러리 또는 외부 서비스를 사용함으로써 발생하는 보안 문제를 다룹니다.

 

 

이는 단순히 소프트웨어 업데이트를 하지 않는 것뿐만 아니라, 사용 중인 구성요소에 대해 인지하지 못하거나 적시에 취약점을 대응하지 못하는 경우도 포함됩니다.

 

 


 

 

주요 원인

 

  1. 소프트웨어 구성요소 관리 부족

     

    • 프로젝트에 어떤 버전의 라이브러리와 디펜던시가 포함되어 있는지 파악하지 못하는 경우.
    • 오래된 버전의 소프트웨어 또는 프레임워크를 사용하면서도, 관련 취약점을 인지하지 못함.

       

  2. 취약점 대응 지연

     

    • 취약점이 보고된 이후에도 소프트웨어를 업데이트하지 않음.
    • 적절한 시간 내에 패치 적용 또는 보안 설정 강화가 이루어지지 않음.

       

  3. 외부 API 및 서비스의 보안 문제

     

    • 외부 API 또는 서비스를 사용하는 과정에서, 해당 구성요소에 존재하는 취약점에 대해 적절히 검증하지 않음.

       

  4. IoT 및 업데이트 부실 디바이스

     

    • IoT 장비 또는 소형 디바이스에서 업데이트 메커니즘 부재 또는 사용자들의 업데이트 실패.

 

 


 

 

실제 사례

 

  1. Log4Shell (Log4j 취약점)

     

    • 문제 발생 원인: Log4j 라이브러리의 취약점(Log4Shell)이 보고된 이후에도, 수많은 기업과 프로젝트에서 적시에 업데이트를 하지 않음.

       

    • 결과:
      • 전 세계적으로 무차별 공격이 발생하며, 데이터를 탈취하거나 시스템을 장악하는 공격이 지속적으로 보고됨.
      • 공격자들이 공개된 페이로드를 그대로 사용해 대규모 스캔을 수행.

         

  2. Heartbleed (OpenSSL 취약점)

     

    • 문제 발생 원인: OpenSSL 라이브러리의 취약점이 보고된 이후에도, 주요 웹 서버 및 클라이언트에서 패치를 적용하지 않음.

       

    • 결과:
      • 공격자가 OpenSSL의 Heartbeat 기능을 악용하여 서버 메모리 데이터를 탈취.
      • 암호화 키, 사용자 비밀번호 등의 민감한 정보가 대규모로 유출됨.

         

  3. Mirai 봇넷

     

    • 문제 발생 원인: IoT 디바이스 제조사가 취약점을 패치하지 않거나, 사용자들이 업데이트를 적용하지 못함.

       

    • 결과:
      • 취약한 IoT 장비들이 봇넷에 감염되어 대규모 DDoS 공격 수행.
      • 인터넷 주요 서비스가 일시적으로 마비.

 

 


 

 

대응 전략 🛠️

 

 

  1. 구성요소 목록 관리 (SBOM)

     

    • 프로젝트에 사용되는 모든 소프트웨어, 라이브러리, 프레임워크, 외부 API 등을 기록한 소프트웨어 구성요소 목록(SBOM, Software Bill of Materials) 작성.
    • 의존성과 버전을 체계적으로 관리하고, 변경 사항을 지속적으로 추적.

       

  2. 취약점 스캐닝 및 업데이트

     

    • OWASP Dependency Check와 같은 도구를 활용하여 프로젝트 내 사용되는 디펜던시를 스캔.
    • 최신 취약점 데이터베이스(CVE, NVD)와 비교해 취약한 구성요소를 식별하고 즉시 업데이트 적용.

       

  3. 외부 API 및 서비스 검증

     

    • 외부 서비스나 API 사용 시, 해당 서비스의 보안 상태 및 유지 관리 주기를 검토.
    • API와의 통신에서 HTTPS 및 기타 암호화 메커니즘을 활용.

       

  4. IoT 및 소프트웨어 업데이트 체계 강화

     

    • IoT 장비와 소프트웨어에 자동 업데이트 기능을 활성화.
    • 사용자들이 쉽게 업데이트를 적용할 수 있도록 프로세스를 간소화.

       

  5. 취약점 대응 시간 단축

     

    • 보안 취약점에 대한 알림을 실시간으로 받을 수 있는 체계를 마련.
    • 취약점 발견 후, 패치 적용 또는 대체 소프트웨어 도입까지의 시간을 최소화.

       

  6. 공급망 보안 모니터링

     

    • 공급망 내 구성요소 및 소프트웨어를 정기적으로 점검.
    • 외부 공급업체가 보안 규정을 준수하고 있는지 확인.

       


 

 

Using Components with Known Vulnerabilities는 공급망 보안과 직결되는 중요한 취약점입니다.

 

 

지속적인 관리, 모니터링, 신속한 패치 적용을 통해 취약점의 악용 가능성을 차단하는 것이 핵심입니다.

 

 

이번 글에서는 OWASP Top 10 중 10위부터 6위까지를 중점적으로 살펴봤습니다.

 

 

2편에서는 상위 항목들을 심층적으로 분석하고, 각 취약점 별 구체적인 대응 전략과 팁을 소개드릴 예정입니다.

 

 

추천컬럼

추천컬럼 이미지

프로그램개발, 합리적인 가격을 위해 잊으면 안되는 MVP

2024.09.20
추천컬럼 이미지

200건 이상 프로젝트 성공으로 실력이 검증된 개발 회사?

2024.09.20

상담만 받아보셔도 좋습니다 긱다이브의 상담으로 업체 비교를 시작해보세요

CONTACT US