본문 바로가기

프로그래밍

OWASP Top 10 2020

OWASP(The Open Web Application Security Project)

 - 오픈 소스 웹 애플리케이션 보안 프로젝트

 - 웹 애플리케이션 취약점 중에서 빈도가 높고 보안상 영향을 크게 줄 수 있는 것들 10가지를 선정하여 3년 주기로 발표


A1. Injection (인젝션)

 - SQL, OS, XXE(Xml eXternal Entity), LDAP 인젝션 취약점은 신뢰할 수 없는 데이터가 명령어나 쿼리문의 일부분으로써, 인터프리터로 보내질 때 발생

 - 공격자의 악의적인 데이터는 예상하지 못하는 명령을 실행하거나 적절한 권한 없이 데이터에 접근하도록 인터프리터를 속일 수 있음

대응방안

 - 서버 측 입력 검증, 특수 문자 필터링 및 유효성 검사

 - 화이트 리스트 조합 사용 


A2. Broken Authentication (취약한 인증)

 - 인증과 세션 관리와 관련된 애플리케이션 기능이 정확하게 구현되어 있지 않으면 공격자가 다른 사용자 계정을 탈취할 수 있음

대응방안

 - 멀티 팩터(multi-factor) 인증을 구현

 - 기본 자격 증명 사용 금지

 - 높은 수준의 암호 정책 구현

 - 지연 로그인, 무작위 세션 ID, 세션 시간 초과 등으로 제어

 - 실패한 로그인 시도 기록


A3. Sensitive Data Exposure (민감한 데이터 노출)

 - 개인 식별 정보를 보호해야 함

 - 중요 데이터 저장 시 암호화, 전송 시 SSL등을 이용해 보호조치를 취해야 함

대응방안

 - 암호화를 적용 하고 적절한 키 관리 및 표준 알고리즘 사용

 - 불필요한 데이터에 민감한 데이터를 포함하는 응답을 피함

 - 캐싱 비활성화


A4. XML External Entities (XXE) (XML 외부 개체)

 - XML처리의 취약점이 꾸준히 증가하여 웹 애플리케이션에 심각한 위험이 되고 있음

 - 공격자가 XML 파일에 악의적인 소스를 사용하면 디도스(DDos) 공격이나 SSRF 공격을 일으킬 수 있음

대응방안

 - XML 문서 내의 적대적 데이터를 방지하기 위해 서버측 입력 유효성 검사, 삭제 검사 등을 구현

 - XML 외부 엔티티 및 DTD 처리를 사용하지 않도록 설정

 - Timeout을 설정

 - JSON과 같은 형식을 사용하고, 중요한 데이터의 연속화를 방지하고, 모든 XML 프로세스 및 라이브러리를 패치함


A5. Broken Access Control (취약한 접근 통제)

 - 취약한 접근 제어는 인증된 사용자가 수행할 수 있는 것에 대한 제한이 제대로 적용되지 않는 것을 의미

 - 공격자는 이러한 취약점을 악용하여 사용자의 계정 액세스, 중요한 파일 보기, 사용자의 데이터 수정, 권한없는 기능 또는 데이터에 액세스할 수 있음

대응방안

 - 공공 자원이 예외인 경우 기본적으로 다른 모든 자원을 거부하고 액세스 제어 실패 및 알림 관리자에 대한 로그를 유지

 - 애플리케이션 전체에 걸쳐 교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS) 사용을 최소화하는 등 액세스 제어 검사를 구현


A6. Security Misconfiguration (잘못된 보안 구성)

 - 응용 프로그램 데이터를 안전하게 유지하는 광범위한 제어장치의 부적절한 구현

 - 보안 헤더를 잘못 구성하거나 민감한 정보를 누출하는 오류 메시지를 무시하면 안됨

 - 기본으로 제공되는 값은 종종 안전하지 않기 때문에 보안 설정은 정의, 구현 및 유지 되어야 함

 - 소프트웨어는 패치를 통해 최신의 상태로 유지해야 함

대응방안

 - 시스템 강화 프로세스를 포함하여 안전한 설치 프로세스 구현, 불필요하고 사용되지 않는 기능 또는 프레임워크 제거

 - 제로 트러스트 모델을 구현하고 나머지는 차단 하면서 원하는 동작만 허용하는 세그먼트 애플리케이션 아키텍처를 활용

 - 사용 권한 검토 및 업데이트


A7. Cross-Site Scripting (XSS) (크로스 사이트 스크립팅)

 - 애플리케이션이 신뢰할 수 없는 데이터를 가져와 적절한 검증이나 제한 없이 웹 브라우저로 보낼 때 발생

 - 공격자가 피해자의 브라우저에 스크립트를 실행하여 사용자 세션 탈취, 웹 사이트 변조, 악의적인 사이트로 이동할 수 있음

대응방안

 - 상황에 맞는 인코딩을 적용

 - 콘텐츠 보안정책(CSP, Content Security Policy)을 통해 경감 대책 활성화


A8. Insecure Deserialization (안전하지 않은 역직렬화)

 - 안전하지 않은 역직렬화는 종종 원격 코드 실행으로 이어짐

 - 권한 상승 공격, 주입 공격, 재생 공격을 포함한 다양한 공격 수행에 사용될 수 있음

대응방안

 - 신뢰할 수 없는 출처에서 직렬화 된 객체 허용 금지

 - 무결성 검사 구현, 제약 조건 적용

 - 모니터링을 통해 예외와 오류를 기록


A9. Using Components with Known Vulnerabilities (알려진 취약점이 있는 구성요소 사용)

 - 컴포넌트, 라이브러리, 프레임워크 및 다른 소프트웨어 모듈은 대부분 항상 전체 권한으로 실행 됨

 - 취약한 컴포넌트를 악용하여 공격하는 경우 심각한 데이터 손실이 발생하거나 서버가 장악 됨

 - 취약점이 있는 컴포넌트를 사용하는 애플리케이션은 애플리케이션 방어 체계를 손상하거나, 공격 가능한 범위를 활성화하는 등의 영향을 미침

대응방안

 - 클라이언트 및 서버 측 구성 요소의 종속성과 함께 버전 업데이트 및 패치, 모니터링


A10. Insufficient Logging & Monitoring (불충분한 로깅 및 모니터링)

 - 로깅 : 데이터 침해를 감지하기 위해 웹 애플리케이션에서 관심 있는 이벤트를 기록해야 함

 - 모니터링 : 로그를 지속적으로 주시하여 적절한 조치를 위해 사고 대응팀으로 이관

 - 대부분의 침해 사례에서 침해를 탐지하는 시간이 오래 걸림

대응방안

 - 의심스러운 활동을 기록하여 중앙 집중식 로그 관리 솔루션에 입력될 수 있는 형식을 사용

 - 변조 또는 삭제를 방지하기 위해 중요한 거래에 대한 세부 감사 추적 유지, 사고 대응 및 복구 계획 수립



[참조]

https://coconuts.tistory.com/96

https://pr0vervbi0rum.tistory.com/30


'프로그래밍' 카테고리의 다른 글

MSA 테스트 자동화  (0) 2021.09.07
FQDN - Fully Qualified Domain Name  (0) 2020.07.06
디미터 법칙  (0) 2020.04.24
GRASP 패턴  (0) 2020.04.22
TDD, BDD, DDD, RDD  (0) 2020.04.21