OpenText 홈페이지.
기술 주제

OWASP Top 10이란 무엇인가요?

물음표에 초점을 맞춘 IT 항목의 일러스트레이션

개요

OWASP(오픈 웹 애플리케이션 보안 프로젝트)는 소프트웨어의 보안을 개선하기 위한 오픈 소스 애플리케이션 보안 커뮤니티입니다. OWASP Top 10은 개발자가 설계하고 배포하는 애플리케이션의 보안을 강화할 수 있도록 가장 중요한 애플리케이션 보안 위험을 나열하는 업계 표준 가이드라인입니다.

보안 위험은 끊임없이 진화하고 있으므로 이러한 변화를 반영하기 위해 OWASP 상위 10대 목록은 주기적으로 수정됩니다. 2021년에 발표된 최신 버전의 OWASP Top 10에서는 더 이상 심각한 위협이 되지 않는 일부 취약점 유형이 심각한 위험을 초래할 가능성이 가장 높은 취약점 유형으로 대체되었습니다.

가장 많이 인용된 취약점 중 일부는 2021년 OWASP Top 10에 포함되지 않았기 때문에 OWASP Top 10은 애플리케이션 보안을 시작하기에 좋은 곳이지만, 최종 목표로 간주해서는 안 됩니다. 소프트웨어 취약점을 방어하기 위해 방어자는 정보 기술 스택 전반을 보다 광범위하게 살펴봐야 합니다. 즉, IT 보안 전문가는 전체 소프트웨어 에코시스템에 집중하고 '전통적인' 취약성 원인을 넘어서야 합니다.

OWASP 상위 10위

OWASP 상위 10개(2021) 카테고리는 무엇인가요?

A1: 주입

신뢰할 수 없는 데이터 소스가 인터프리터로 전송될 때마다 인젝션 결함이 발생할 수 있습니다. 사용자가 제공한 입력이 있는 SQL, LDAP, XPath 또는 NoSQL 동적 데이터베이스 쿼리에서 흔히 볼 수 있는 예입니다. 공격자는 사용자 입력에 코드를 삽입하여 쿼리 인터프리터를 속여 악성 명령을 실행하도록 합니다.

애플리케이션이 인젝션 결함에 취약한 이유는 무엇인가요?

  • 사용자가 제공한 데이터의 유효성이 충분히 검증되지 않은 경우.
  • 동적 쿼리는 충분한 입력 위생 처리 없이 실행됩니다.
  • 시스템 내에서 악의적인 행동을 위해 사용되는 적대적인 데이터.

사출 결함이 미치는 영향은 무엇인가요?

  • 애플리케이션 또는 기본 호스트의 손상.
  • 민감한 데이터 노출.
  • 생산성, 평판 또는 수익 손실.

포티파이가 인젝션 결함에 어떻게 도움을 줄 수 있나요?

  • 개발자의 경우: Fortify는 인젝션 결함을 감지하고 유형별 해결 조언을 제공합니다.
  • QA 또는 운영 팀에 속한 경우: Fortify는 제어를 완화하기 위해 런타임에 코드의 유효성을 검사합니다.
  • 운영 중인 경우 Fortify는 Java 및 .NET 인젝션 시도에 대한 런타임 로깅 및 보호 기능을 제공합니다.

A2: 인증 실패

스테이트풀 애플리케이션에서 ID 또는 세션 데이터를 관리할 때 인증이 깨질 수 있습니다. 등록, 자격증명 복구 및 API 경로가 만료되지 않은 세션 토큰, 무차별 대입 또는 계정 열거에 취약한 경우가 종종 있습니다. 공격자는 합법적인 사용자의 신원을 사칭하여 계정을 장악하고 데이터, 프로세스 또는 시스템을 손상시킵니다.

애플리케이션이 깨진 인증에 취약한 이유는 무엇인가요?

  • 세션 ID를 노출하거나, 제대로 무효화하지 않거나, 회전하지 못합니다.
  • 비밀번호 정책을 NIST 800-63B와 같은 표준에 맞추지 않습니다.
  • 2단계 인증(2FA)이 없거나 자동화된 공격을 허용합니다.

인증이 깨지면 어떤 영향이 있나요?

  • 사용자 신원 도용.
  • 사용자 신뢰 상실.
  • 민감한 데이터의 유출.

포티파이가 어떻게 도움을 줄 수 있나요?

  • 개발자인 경우 Fortify는 깨진 인증 문제를 감지하고 해결을 권장합니다.
  • QA 또는 운영팀에 속한 경우: Fortify는 인증 및 세션 관리 보안을 동적으로 검증합니다.
  • 운영 중인 경우 Java 및 .NET 애플리케이션 이벤트에 대한 계측기 런타임 모니터링을 Fortify하세요.

A3: 민감한 데이터 노출

애플리케이션이 암호화되지 않은 데이터, 특히 개인 식별 정보(PII) 및 기타 규제 대상 데이터 유형에 액세스할 때 민감한 데이터 노출 문제가 발생할 수 있습니다. 레거시 애플리케이션에서 취약한 암호화 사이퍼를 사용하거나, 보안 전송 프로토콜이 잘못 구현되었거나, 데이터 중심 보안을 사용하지 않는 경우가 종종 있습니다. 공격자는 민감한 사용자 데이터에 액세스하여 실생활에서 제어할 수 있는 권한을 얻습니다.

애플리케이션이 민감한 데이터 노출에 취약한 이유는 무엇인가요?

  • HTTP, SMTP, FTP와 같은 프로토콜을 통해 일반 텍스트로 데이터를 전송합니다.
  • 민감한 데이터가 불필요하게 일반 텍스트로 저장, 전송 또는 사용되는 경우.
  • 오래되었거나 취약하거나 비표준 기반 암호화 알고리즘 사용.

민감한 데이터 노출의 영향은 무엇인가요?

  • 규제 대상 데이터의 손상(예 HIPAA 또는 GDPR)로 인해 벌금이 부과될 수 있습니다.
  • 신원 도용으로 인해 데이터를 스크러빙하거나 모니터링하는 데 비용이 발생합니다.
  • 개인정보 보호법 및 규정을 준수하지 않는 상태입니다.

Fortify는 민감한 데이터 노출에 대해 어떤 도움을 줄 수 있나요?

  • 개발자의 경우: Fortify는 민감한 데이터 노출을 식별하고 이슈 감사를 자동화합니다.
  • QA 또는 운영 팀에 속한 경우: Fortify는 템플릿을 사용하여 애플리케이션 컨텍스트 외부에서 완화한 결과를 제거합니다.
  • 운영 중인 경우 Java 및 .NET 애플리케이션에 대한 계측 로깅 및 Fortify 기능을 강화하세요.

A4: XML 외부 엔티티

외부 엔티티에 대한 참조가 포함된 XML 입력이 잘못 구성된 구문 분석기에 의해 처리될 때 XML 외부 엔티티 문제가 발생할 수 있습니다. 신뢰할 수 없는 소스에서 XML 입력을 구문 분석하는 애플리케이션, 문서 유형 정의(DTD)가 활성화된 경우 또는 SOAP 1.0과 같은 패치되지 않은 프레임워크를 사용하는 애플리케이션에서 종종 이러한 예가 발견됩니다. XML은 SVG 및 이미지 파일부터 네트워킹 프로토콜, PDF 및 RSS와 같은 문서 형식에 이르기까지 모든 곳에 존재합니다. 공격자는 XML 입력에서 외부 엔티티를 참조하여 프로세서를 악용하여 데이터를 추출하거나 원격으로 코드를 실행하거나 네트워크 서비스에 영향을 미칩니다.

애플리케이션이 XML 외부 엔티티에 취약한 이유는 무엇인가요?

  • 애플리케이션이 XML 문서를 구문 분석하고 프로세서에 DTD가 활성화되어 있습니다.
  • SSO, v1.2 이전 SOAP 또는 v2.0 이전 .NET Framework에 SAML을 사용합니다.
  • 구문 분석기가 신뢰할 수 없는 소스를 허용하거나 신뢰할 수 없는 XML 데이터를 삽입합니다.

XML 외부 엔티티의 영향은 무엇인가요?

  • 민감한 데이터 도난.
  • 공격자가 제어하는 URL 로드.
  • 서비스 거부 공격(DoS).

Fortify가 XML 외부 엔티티를 어떻게 지원하나요?

  • 개발자인 경우: Fortify는 취약한 XML 파서를 탐지하고 완화 요인을 권장합니다.
  • QA 또는 운영에 종사하는 경우: Fortify는 취약한 XML 파서를 자동으로 스캔하고 익스플로잇 페이로드의 유효성을 검사합니다.
  • 운영 중인 경우 Fortify는 Java 및 .NET 애플리케이션의 문제에 대한 런타임 로깅 및 보호 기능을 제공합니다.

A5: 액세스 제어 고장

코드 및 환경 제한이 불완전하게 겹치거나 유사한 기능에 대해 여러 곳에 정의되어 있는 경우 액세스 제어 문제가 발생할 수 있습니다. 제한된 페이지에 대한 강제 탐색을 통해 보안이 취약해지거나 애플리케이션이 여러 방법과 위치에서 액세스 제어를 위한 복잡한 방법을 정의하는 경우의 예가 종종 있습니다. 공격자는 액세스 경계를 손상시켜 민감한 데이터를 훔치거나 운영을 방해할 수 있습니다.

애플리케이션이 취약한 액세스 제어에 취약한 이유는 무엇인가요?

  • 로그인하지 않고 사용자로 활동하거나 사용자로 로그인한 상태에서 관리자로 활동할 수 있습니다.
  • 무단으로 또는 권한 상승을 위해 메타데이터 또는 토큰을 조작하는 행위.
  • 비잔틴, 강제되지 않거나 흩어져 있는 액세스 제어 로직.

액세스 제어가 중단되면 어떤 영향이 있나요?

  • 무단 정보 공개 또는 민감한 데이터의 유출.
  • 데이터 수정 또는 파기.
  • 사이트 관리 또는 사용자 인수인계.

Fortify가 고장난 액세스 제어에 어떤 도움을 줄 수 있나요?

  • 개발자의 경우: Fortify는 감사를 자동화하고 템플릿을 사용하여 다른 곳에서 완화한 문제를 제거할 수 있습니다.
  • QA 및 운영에 종사하는 경우: Fortify 에이전트는 숨겨진 공격 표면과 손상된 액세스 제어 시스템을 탐지합니다.
  • 운영 중인 경우 Java 및 .NET 애플리케이션에 대한 계측기 런타임 액세스 제어 로깅을 Fortify하세요.

A6: 보안 구성 오류

애플리케이션 또는 기본 환경을 구성하는 동안 보안 구성 결함이 발생할 수 있습니다. 네트워크 서비스 및 애플리케이션 서버부터 컨테이너 및 스토리지에 이르기까지 애플리케이션 스택의 모든 수준에서 잘못된 구성이 발생할 수 있습니다. 기본 계정 및 구성, "누출된" 오류 메시지, 패치되지 않은 프레임워크 및 서비스에서 종종 발견됩니다. 공격자는 배포 정보를 얻고 권한 있는 데이터에 액세스하여 운영을 방해할 수 있습니다.

애플리케이션이 보안 구성 오류에 취약한 이유는 무엇인가요?

  • 불필요하게 활성화된 기본 포트 및 계정 또는 변경되지 않은 비밀번호.
  • 오류 및 예외 발생 시 스택 추적 또는 기타 메시지를 표시합니다.
  • 스택의 일부에서 발생하는 위험에 대한 보안을 적절하게 강화하지 않습니다.

보안 설정이 잘못되면 어떤 영향이 있나요?

영향은 정보 공개부터 시스템 전체 손상까지 다양합니다.

Fortify는 보안 구성 오류에 대해 어떻게 도움을 줄 수 있나요?

  • 개발자인 경우: Fortify는 스캔하는 동안 애플리케이션 종속성 및 구성 파일을 식별합니다.
  • QA 및 운영에 종사하는 경우: Fortify는 애플리케이션 및 서버 구성에 문제가 있는지 동적으로 평가합니다.
  • 운영팀에 있는 경우 Fortify는 환경 위험에 대한 보고를 위한 오픈 소스 분석을 제공합니다.

A7: 사이트 간 스크립팅

신뢰할 수 없고 위생 처리되지 않은 사용자 입력이 HTML의 일부로 실행되거나 사용자가 악성 링크와 상호 작용하도록 영향을 받을 수 있는 경우 크로스 사이트 스크립팅(XSS) 결함이 발생할 수 있습니다. 자바스크립트나 플래시와 같은 언어의 익숙한 코드 구성이 신뢰할 수 없는 소스에서 허용되거나 나중에 다른 사용자 에이전트가 표시할 수 있도록 저장되는 경우가 종종 있습니다. 공격자는 사용자 컴퓨터에서 원격 코드 실행을 수행하거나 자격 증명을 훔치거나 리디렉션 사이트에서 멀웨어를 전달할 수 있습니다.

애플리케이션이 크로스 사이트 스크립팅(XSS)에 취약한 이유는 무엇인가요?

일반적으로 브라우저와 같은 사용자 에이전트를 대상으로 하는 세 가지 형태의 XSS가 있습니다:

  • 반영된 XSS: 애플리케이션 또는 API가 HTML 출력에 신뢰할 수 없는 입력을 포함합니다.
  • 저장된 XSS: 디스크에 저장된 소독되지 않은 코드는 나중에 사용자 작업에 의해 트리거됩니다.
  • DOM XSS: 신뢰할 수 없는 입력을 소비하는 애플리케이션, 프레임워크 및 API.

크로스 사이트 스크립팅(XSS)의 영향은 무엇인가요?

  • 애플리케이션에서 피해자의 계정을 탈취합니다.
  • 대상 웹 애플리케이션에서 데이터 검색.
  • 페이지의 콘텐츠 수정.

Fortify는 크로스 사이트 스크립팅(XSS)에 어떤 도움을 줄 수 있나요?

  • 개발자의 경우: Fortify는 코드에서 XSS 취약점을 탐지하고 익스플로잇 가능성을 예측합니다.
  • QA 및 운영에 종사하는 경우: Fortify는 XSS에 취약한 검사되지 않은 입력에 대해 동적으로 코드의 유효성을 검사합니다.
  • 운영 중인 경우 Fortify는 무단 리디렉션을 포함한 Java 및 .NET 이벤트에 대한 로깅을 제공합니다.

A8: 안전하지 않은 역직렬화

안전하지 않은 역직렬화 결함은 언어와 프레임워크가 신뢰할 수 없는 직렬화된 데이터를 객체로 확장할 수 있도록 허용하는 경우, 주로 웹 애플리케이션이 사용자와 통신하거나 애플리케이션 상태를 저장할 때 발생할 수 있습니다. 개발자가 역직렬화 프로세스 중에 자체 실행할 수 있는 메서드에 제한을 두지 않는 경우를 종종 볼 수 있습니다. 공격자는 애플리케이션 로직 외부에서 호출되는 "가젯 체인(" )을 활용하여 원격으로 코드를 실행하거나 서비스를 거부하거나 무단 액세스를 얻습니다.

애플리케이션이 안전하지 않은 역직렬화에 취약한 이유는 무엇인가요?

  • 애플리케이션은 신뢰할 수 없는 소스의 데이터를 역직렬화합니다.
  • 애플리케이션은 역직렬화하기 전에 소스나 콘텐츠를 확인하지 않습니다.
  • 불필요한 가젯 노출을 방지하기 위해 허용되는 클래스는 화이트리스트에 포함되지 않습니다.

안전하지 않은 역직렬화의 영향은 무엇인가요?

  • 이러한 결함은 가장 심각한 공격 중 하나인 원격 코드 실행 공격으로 이어질 수 있습니다.

Fortify가 안전하지 않은 역직렬화에 어떻게 도움을 줄 수 있나요?

  • 개발자인 경우: Fortify는 소스 코드의 취약점을 탐지하고 구성 요소 분석을 제공합니다.
  • QA 및 운영에 종사하는 경우: 동적으로 실행되는 애플리케이션을 Fortify하여 공격 벡터를 검증하세요.
  • 운영 중인 경우 역직렬화를 포함하여 Java 및 .NET 이벤트에 대한 계측 로깅을 Fortify하세요.

A9: 알려진 취약점이 있는 구성 요소 사용

이러한 결함은 오픈 소스 또는 타사 프레임워크 및 라이브러리가 애플리케이션에 도입되어 동일한 권한으로 실행될 때 발생할 수 있습니다. 컴포넌트 기반 개발로 인해 종속성과 관련된 위험에 대한 이해가 부족하여 컴포넌트나 시스템을 패치하기 어렵거나 불가능한 경우가 종종 있습니다. 공격자들은 취약한 구성 요소를 활용하여 역사상 가장 큰 규모의 침해 사고를 일으켰으며, 취약성은 애플리케이션 손상에서 원격 코드 실행에 이르기까지 다양합니다.

애플리케이션이 오픈 소스 또는 타사 프레임워크 및 라이브러리에 취약한 이유는 무엇인가요?

  • 이는 우발적일 수 있습니다(예 코딩 오류) 또는 의도적(예 백도어 컴포넌트).
  • 애플리케이션 또는 환경이 패치되지 않았거나 오래된 구성 요소를 사용합니다( 애플리케이션 현대화가 필수적인 이유 중 하나).
  • 타사 코드 또는 중첩된 종속성에서 취약점을 검사하지 않습니다.
  • 사용할 수 없는 구성 요소 인벤토리 또는 무시된 보안 게시판.

알려진 취약점이 있는 컴포넌트를 사용하면 어떤 영향이 있나요?

알려진 취약점 중 일부는 경미한 영향을 미치지만, 하트블리드 및 셸쇼크와 같이 알려진 대규모 침해 사고는 공유 구성 요소의 알려진 취약점을 악용하는 데 의존했습니다. 알려진 코드 취약점이 있는 구성 요소를 사용하면 영향을 받는 서버에서 원격 코드가 실행되어 공격자가 컴퓨터를 완전히 제어할 수 있습니다.

포티파이는 오픈 소스 보안에 어떤 도움을 줄 수 있나요?

  • 개발자라면 Fortify는 Sonatype 통합을 통해 소프트웨어 구성 요소 분석을 제공합니다.
  • QA 및 운영에 종사하는 경우: Fortify는 런타임에 알려진 취약성에 대한 동적 유효성 검사를 자동화합니다.
  • 운영 중인 경우 Java 및 .NET 애플리케이션 구성 요소에 대한 계측 로깅 및 Fortify를 강화하세요.

A10: 불충분한 로깅 및 모니터링

공격 벡터나 애플리케이션의 잘못된 동작을 잘 이해하지 못하거나 침해 지표에 대한 모니터링 모범 사례를 따르지 않으면 불충분한 로깅 및 모니터링 결함이 발생할 수 있습니다. 로깅 기능이 없는 레거시 시스템에서 애플리케이션 침투 테스트 로그를 검사하지 않거나 공격자가 수행한 작업을 이해하기에 로그가 충분한 세부 정보를 제공하지 않는 경우가 종종 있습니다. 공격자는 일반적으로 외부에서 발견되는 탐지에 평균 약 200일이 소요되며, 이를 통해 지속성을 확보하고 취약한 시스템을 추가로 공격합니다.

애플리케이션이 불충분한 로깅 및 모니터링에 취약한 이유는 무엇인가요?

  • 경고 및 오류는 로그 메시지가 없거나 부적절하거나 불명확한 메시지를 생성합니다.
  • 로그는 변조 제어 없이 로컬에 저장되거나 모니터링되지 않습니다.
  • 알림 임계값 및 대응 프로세스가 불충분하거나 아무런 조치도 취하지 않습니다.

불충분한 로깅 및 모니터링이 미치는 영향은 무엇인가요?

대부분의 성공적인 공격은 취약점 조사에서 시작됩니다. 이러한 프로브를 계속 허용하면 익스플로잇 성공 가능성이 높아질 수 있습니다. 공격자는 지속성을 확보하여 애플리케이션과 운영 체제를 백도어하고 데이터를 훔치거나 다른 방식으로 눈에 띄지 않게 시스템을 무단으로 제어할 수 있습니다. 보안 중요 정보를 적절하게 기록하거나 저장하지 않으면 포렌식 분석을 통해 공격의 원인을 파악할 수 있는 흔적이 남지 않습니다. 공격자가 로깅 기능을 계속 제어할 경우 문제가 있다는 사실을 파악하는 것이 더 어려워지거나 불가능해질 수 있습니다.

불충분한 로깅 및 모니터링에 대해 Fortify가 어떻게 도움을 줄 수 있나요?

  • 개발자의 경우 Fortify는 애플리케이션 및 API의 로깅 기능에 취약점이 있는지 검사합니다.
  • QA 및 운영 팀에 속한 경우: Fortify 동적 스캔은 펜 테스트와 같은 충분성 검토를 위한 애플리케이션 로그를 생성합니다.
  • 운영 중인 경우 Java 및 .NET 애플리케이션에 대한 계측 로깅 및 보호 기능을 Fortify하세요.

OWASP(2021)의 새로운 기능은 무엇인가요?

2017년 마지막 톱 10이 발표된 이후 4년이 지났지만 사이버 보안 업계에는 많은 변화가 있었기 때문에 최우선 관심사나 추가해야 할 새로운 관심사에 대해 다시 생각하게 되었습니다.

세 가지 새로운 카테고리가 도입되었습니다:

A04:2021

안전하지 않은 디자인: 이 카테고리는 디자인 결함에 중점을 둡니다. 개발에서 좌측으로 이동하려면 위협 모델링에서도 좌측으로 이동해야 하기 때문에 이 작업이 필요합니다.

A08:2021

소프트웨어 및 데이터 무결성 실패: 소프트웨어 업데이트, 중요 데이터 및 CI/CD 파이프라인에 영향을 미칠 수 있는 무결성을 검증하지 않고 가정에 초점을 맞춥니다. 여기에는 A08:2017 - 안전하지 않은 역직렬화도 포함됩니다.

A10:2021

서버 측 요청 위조(SSRF): 이 카테고리는 커뮤니티 설문조사에서 대부분 상위 10위 안에 들었습니다. 평균 이상의 악용 가능성과 영향력 때문에 이 취약점을 강조한 것입니다.

기타 변경 사항

다른 카테고리는 이름이 변경되었거나 순위가 이동되었거나 다른 카테고리로 통합되었습니다:

  • A01:2017 - 주입이 A:03으로 하향 조정되었습니다.
  • A02:2017 - 인증 실패가 신원 확인 및 인증 실패로 이름이 변경되어 A07로 이동했습니다.
  • A03:2017 - 민감한 데이터 노출이 증상뿐 아니라 근본 원인을 보다 완벽하게 해결하기 위해 암호화 실패로 이름이 변경된 A02로 상향 조정되었습니다.
  • A05:2017 - 테스트한 애플리케이션 중 94%(% )가 어떤 형태로든 취약한 액세스 제어에 노출된 것으로 나타났기 때문에 취약한 액세스 제어가 A01로 이동했습니다.
  • A06:2017 - 보안 구성 오류가 A05로 한 단계 상향 조정되었습니다.
  • A07:2017 - 크로스 사이트 스크립팅(XSS)이 A03 인젝션으로 통합되었습니다.
  • A09:2017 - 알려진 취약점이 있는 구성 요소 사용은 A06으로 상향 조정되었으며 취약하고 오래된 구성 요소로 이름이 변경되었습니다. 이러한 변화는 커뮤니티에서 2위를 차지한 것이 큰 영향을 미쳤습니다.
  • A10:2017 - 불충분한 로깅 & 모니터링이 A09로 올라갔으며 이제 보안 로깅 및 모니터링 실패라고 불립니다.

Fortify가 조직에 어떤 도움을 줄 수 있는지 알고 싶으신가요? 지금 OpenText™의 Fortify 온디맨드 15일 무료 체험판시작하기

어떻게 도와드릴까요?

각주