본문 바로가기

보안 이론/웹 보안

(2021) OWASP TOP 10에 대해서

반응형

OWASP Top 10에 대해 알아보고 선정된 취약점들에 대해 간략하게 이해해본다.


OWASP (Open Web Application Security Project)

오픈소스 웹 애플리케이션 보안 프로젝트로 소프트웨어 보안, 웹 취약점 등을 정기적으로 발표하는 비영리적 조직이다.

전 세계에서 교육과 컨퍼런스를 진행하여 보안 트랜드에 대해 알린다.

 

OWASP TOP 10

OWASP에서 3~4년에 한번씩 발표하는 가장 최신 웹 애플리케이션 보안 트렌드이다.

전 세계 보안 전문가들을 설문한 결과를 바탕으로 웹 취약점 순위를 매겨 가장 심각한 취약점 10개를 선정하여 발표한다.

상위 10개의 취약점이 전체의 약 95%에 해당되기 때문에 잘 숙지하는 것이 중요하다.

 

https://owasp.org/www-project-top-ten/assets/images/mapping.png

2021년 순위 변동 사항

이전 A01이었던 injection이 A03으로 떨어졌다. 이는 인젝션 공격이 줄어든 것이 아니라 보안 방법이 많이 알려져 상대적으로 위험도가 떨어졌다고 볼 수 있다. 또한 xss는 injection으로 통합되었다.

A05 Broken Access Contorl은 A01로 상승하였다. 과거에 비해 접근 통제가 안전하게 이루어지고 있지 않고 있다.

A04 Insecure Design이 순위권으로 올라왔다. 개발 시부터 보안을 생각하는 위협 모델링, 보안 설계 패턴 등의 중요성이 높아지고 있다.

이 밖에 트랜드에 따라 여러가지 변동사항이 있었음을 알 수 있다.

https://owasp.org/www-project-top-ten/

 

OWASP Top Ten | OWASP Foundation

The OWASP Top 10 is the reference standard for the most critical web application security risks. Adopting the OWASP Top 10 is perhaps the most effective first step towards changing your software development culture focused on producing secure code.

owasp.org

 

2021 OWASP TOP 10  내용

A01 - Broken Access Control

특정 기능, 역할, 사용자에게만 액세스 권한을 부여해야 사용할 수 있는 최소 권한 또는 기본 거부 원칙의 위반이다.

 

원인

  • URL, HTML, 애플리케이션 수정 및 변조를 이용한 인증된 페이지 및 API 요청으로 액세스 제어 우회/강제 탐색
  • 불필요한 HTTP 메소드(PUT, DELETE 등)에 대한 액세스 제어 누락
  • 웹 토큰 및 쿠키 변조 등과 같은 취약점을 이용한 권한 상승 ( Escalation )
  • 잘못된 CORS 구성으로 인한 신뢰할 수 없는 API 액세스 허용

 

대응 방법

  • 공용 리소스 제외 기본 거부 원칙 설정( Deny All Philosophy )과 CORS 최소화
  • 모델 액세스 기능 허용보다는 레코드 소유권을 적용
  • 웹 서버 디렉토리 리스팅 비활성화메타데이터 및 백업파일 등은 웹 루트 내에서 있지 않도록 조치
  • 로그아웃 시 세션 식별자 무효화stateless JWT 토큰 수명 가능한 짧게 설정

 

A02 - Cryptographic Failures

Crawler의 숫자, 성능의 증가로 민감한 데이터의 노출이 쉽게 일어남에 따라 암호화의 중요성이 증가하였다.

Crawling : 프로그램이나 봇을 사용하여 웹 상의 다양한 정보를 자동으로 검색하고 데이터를 추출해내는 행위이다. 네이버 구글 등의 검색 엔진에서도 이용된다.

 

원인

  • 서버 부하 등의 이유로 암호화를 사용하지 않음
  • 처음엔 안전한 암호 알고리즘이었으나 시간이 지남에 따라 취약해진 상태
  • 데이터 평문 전송이나 오래되거나 약한 암호화 알고리즘 사용으로 인한 취약함
취약한 암호화 알고리즘
대칭키 알고리즘 DES  3DES  RC4 등 ECB 방식
공개키 알고리즘 RSA 1024bit 이하
해시 알고리즘 MD5  SHA1 등

 

대응 방법

  • 저장된 모든 민감한 데이터를 암호화하며 항상 인증된 암호화 알고리즘을 사용
  • 민감한 데이터를 오래 보관하지말고 가능한 빨리 폐기
  • 보안 프로토콜을 이용해 데이터 전송시 암호화 기능 적용 혹은 HSTS 지시문 사용
  • 적합한 초기화 백터를 이용하고 모든 경우에서 같은 IV가 이용되지 않도록 설정

 

A03 - Injection 

취약점으로 인해 올바르지 않은 입력이 주입될 경우를 말한다.

 

원인

  • 사용자 제공 데이터가 적절한 검증, 필터링되지 않음
  • SQL, NoSQL, OS command, ORM, LDAP, XSS 등의 주입 취약점이 존재

대응 방법 

  • 데이터를 명령 및 쿼리와 별도로 유지
  • 이스케이프 구문을 사용하여 함수, 특수문자를 필터링하는 등 인젝션 공격을 방지

 

A04 - Insecure Design

개발 단계에서 보안 설계를 통해 안전하게 개발되지 않아 발생한다. 

 

대응 방법

  • 안전한 디자인 패턴을 구축하고 사용
  • 설계상 모든 계층의 테넌트를 강력하게 분리
  • 보안 개발 수명 주기를 설정하고 사용하여 보안 및 개인 정보 관련 제어를 평가하고 설계
  • 중요한 인증, 액세스 제어, 비즈니스 로직 및 주요 흐름에 위협 모델링 사용
위협 모델링 : 잠재적인 위협을 모델링하고 이를 방지 또는 완화할 수 있도록 적절한 통제를 조기 이행하는 프로세스 

 

A05 - Security Misconfiguration

불필요한 기능이 활성화되어 있거나 지나치게 친절한 오류 메세지를 보여주는 경우를 말한다.

 

원인

  • 불필요한 포트, 서비스, 페이지, 계정, 권한 등이 활성화되어 있거나 부적절하게 구성
  • 지나치게 유익한 오류메세지로 정보를 유출
  • 최신 보안 기능이 있음에도 비활성화되거나 안전하게 구성되지 않음
  • 소프트웨어가 너무 오래되거나 취약함(=A6)

대응 방법

  • 불필요한 기능, 구성 요소가 없는 최소 플랫폼을 구성하고 사용하지 않는 프레임워크는 제거하거나 설치하지 않음
  • 에러 시 에러 페이지를 통일하고 디렉토리 리스팅 기능 비활성화로 정보 유출을 최소화
  • 자동화 프로세스를 이용해 모든 환경에서 구성 및 설정의 효율성을 확인
  • ACL을 통해 구성요소 간에 효과적이고 안전한 분리 제공

 

A06 - Vulnerable and Outdated Components

취약점에 노출되었거나 오래되어 이를 모를 경우를 말한다.

 

원인

  • 사용하는 구성 요소의 버전을 모르는 경우
  • 소프트웨어가 취약하거나 지원되지 않거나 오래된 경우
  • 취약점을 정기적으로 스캔하지 않고 구성 요소 관련 보안 문제를 확인하지 않는 경우
  • 위험 기반의 적시에 플랫폼, 프레임워크 및 종속성을 수정하거나 업그레이드하지 않는 경우
Zero-day attack : 취약점이 알려지지 않았거나 알려지고 공식적인 보안 패치가 나오기 전 해당 취약점을 이용하여 공격
One-day attack : 취약점이 알려지고 공식 보안 패치도 나왔으나 적용되지 않은 틈에 취약점을 이용해 공격

대응 방법

  • 사용하지 않는 종속성, 불필요한 기능, 구성 요소, 파일 및 문서 제거
  • 보안 링크를 통해 공식 출처에서만 구성 요소를 얻고 서명된 패키지를 선호
  • CVE와 같은 소스지속적으로 모니터링하고 사용하는 구성요소와 관련된 보안 취약성에 대한 이메일 경고 구독
CWE : 보안 약점 번호 체계, 소프트웨어 취약점으로 이어질 수 있는 오류를 말한다.
CVE : 취약점 번호 체계(연도를 포함), 공격자가 직접 exploit 할 수 있는 소프트웨어 결함을 말한다.

 

A07 - Identification and Authentication Failures

식별 및 인증 오류로 취약한 암호나 자동화된 공격을 허용하여 발생한다.

 

원인

  • 기본 암호 또는 취약하거나 잘 알려진 암호를 사용
  • 약한 암호화나 해시된 암호 데이터 저장소를 사용
  • 세션 식별자가 노출
  • 세션 ID가 올바르게 무효화되지 않아 남아있음
Credential Stuffing : 사용자가 여러 사이트에서 같은 ID/PW를 사용하여 취약한 사이트에서 얻은 데이터를 다른 사이트들에 무차별적으로 대입하는 공격, 어느 보안 솔루션보다 사용자가 각 사이트마다 다르게 패스워드를 설정하는 것이 중요하다.

대응 방법

  • 패스워드를 예측하기 힘들고 대소문자, 특수문자 14자 이상 등으로 복잡하게 설정
  • 실패한 로그인 시도를 제한하고 지연시켜 credential stuffing, 무차별 대입 등을 방지하고 이를 관리자에게 알림
  • 세션 ID는 서버 측의 안전한 내장 세션 관리자를 사용하고 노출되지 않게 하며 로그아웃 및 시간 초과 후 확실히 무효화

 

A08 - Software and Data Integrity Failures

무결성을 위반으로부터 보호되지 않아 신뢰할 수 없는 경우를 말한다.

무결성 ( Integrity ) : 신뢰할 수 있는 서비스 제공을 위해서 의도하지 않은 요인에 의해 데이터, 소프트웨어, 시스템 등이 변경되거나 손상되지 않고 완전성, 정확성, 일관성을 유지함을 보장하는 특성

원인

  • 공유기, 셋톱박스 등 자동 업데이트가 없어 펌웨어 업데이트를 자주 하지 않아 취약점이 노출
  • 안전하지 않은 업데이트가 적용되어 취약점이 생성됨  [ 보안 업데이트 제공자가 해킹된 경우 ]
  • 데이터가 인코딩 혹은 직렬화되어 쉽게 수정할 수 있을 정도로 안전하지 않은 역직렬화를 사용한 경우

대응 방안

  • 디지털 서명 또는 유사 메커니즘을 사용해 데이터가 예상 소스에서 제공되고 변경되지 않았는 지 확인
  • 라이브러리 및 종속성이 신뢰할 수 있는 저장소를 사용하는지 확인
  • 서명되지 않거나 직렬화된 데이터의 변조를 감지하기 위한 무결성 검사 또는 서명 없이 신뢰할 수 없는 클라이언트로 전송 방지

 

A09 - Security Logging and Monitoring Failures

로그를 기록하지 않거나 모니터링을 제대로 수행하지 않을 때 발생한다.

 

원인

  • 불명확한 로그 메시지 생성
  • 앱 및 api 로그의 의심스러운 활동을 모니터링 하지 않음
  • 적절한 경고 임계값 설정 및 응답 프로세스가 효과적이지 않음

대응방안

  • 로그 관리 솔루션 사용으로 쉽게 사용할 수 있는 로그 생성
  • 중요도를 통해 경고 알림 설정 및 응답 프로세스 구성
  • 의심스러운 활동을 감지하고 신속하게 대응할 수 있도록 모니터링 진행
Compliance : 법과 규제, 컴플라이언스를 지키는 비용(컨설팅, 아웃소싱, 인증심사 등)이 지키지 않았을 때 나가는 비용(벌금, 과태료, 집단민사소송, 기업 이미지 손상)보다 적기 때문에 금전적으로나 서비스 신뢰도 면으로도 지키는 것이 옳다.

 

A10 - Server Side Request Forgery(SSRF)

웹 애플리케이션에서 URL의 유효성을 제대로 검사하지 않고 원격 리소스를 가져올 때 발생한다.


피해

  • 내부 서버 포트 스캔으로 인한 내부 네트워크 노출
  • 개인 정보와 같은 민감한 데이터의 노출
  • 악의적인 행위로 인한 내부 서비스 손상

대응방법

  • 기본적으로 거부하는 액세스 제어 규칙을 적용해 필수 인트라넷 트래픽을 제외한 모든 트래픽 차단
  • 원격 리소스 액세스 기능은 별도의 네트워크에 구성
  • 모든 입력 데이터 검증 및 블랙리스트나 정규식을 이용한 필터링이 아닌 화이트 리스트 사용
반응형


Calendar
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Visits
Today
Yesterday