오픈소스 웹 애플리케이션 보안 프로젝트로서 웹에 대한 위험성을 10대 웹 애플리케이션의 취약점 (OWASP TOP 10)으로 하여 3~4년마다 국제적으로 발표
2021
A01 : Broken Access Control (접근 권한 취약점) - 접근 권한 미설정
- 루트킷이나 백도어, 관리자 권한이나 자동 실행과 같은 취약점이 노출되면서 이를 공격자가 이용, 악의적인 행위를 함
- 대책 : 사용자가 권한을 벗어나 행동할 수 없도록 정책을 시행 (추가되는 관리자 권한 확인 ,권한 제한 )
A02 : Cryptographic Failures (암호화 오류) - 평문 데이터 노출
- Sensitive Data Exposure(민감 데이터 노출)의 명칭이 2021년 Cryptographic Failures(암호화 오류)로 변경
적절한 암호화가 이루어지지 않으면 민감 데이터가 노출
- 대책 : 암호화 , 문서 보안
A03: Injection (인젝션)
- sql injection → sql 쿼리문이 url 이나 인자 값에 전달이 되면서 정보를 획득
- 대책 : sql 문의 UNION, JOIN , SELECT 등 악의적인 행위를 할수 있는 코드를 replace해서 공백으로 바꾸는 등 시큐어 코딩 진행 , 시그니처 필터
A04: Insecure Design (안전하지 않은 설계)
- 웹 방화벽 부재 , 가용성 부족, 자원 집중, https가 아닌 http 운영 등 누락되거나 비효율적인 제어 설계로 표현되는 다양한 취약점
- 대안 : 웹 방화벽 설치 , 라운드 로빈과 같은 부하 분산 이중화 , 자원의 분산화 , https 암호화 통신
A05: Security Misconfiguration (보안 설정 오류)
- 불필요한 기능이 활성화 혹은 설치, 기본 계정 및 암호화가 변경되지 않았을 때, 지나치게 상세한 오류 메세지를 노출할 때, 최신 보안 기능이 비활성화 혹은 안전하지 않게 구성되었을 때 발생
- 대안 : directoryindex 보안 설정 , 서버 시그니처 제한 , 웹페이지 출력 제한 , (DNAT) 포트 변환
A06: Vulnerable and Outdated Components (취약하고 오래된 요소)
- 취약하고 오래된 요소는 지원이 종료되었거나 오래된 버전을 사용할 때 발생 → 애플리케이션 뿐만 아니라, DBMS, API 및 모든 구성요소들 포함
- 대안: 프로그램 최신화 , 업데이트
A07: Identification and Authentication Failures (식별 및 인증 오류)
- Broken Authentication(취약한 인증)으로 알려졌던 해당 취약점은 identification failures(식별 실패)까지 포함하여 더 넓은 범위를 포함할 수 있도록 변경
사용자의 신원 확인, 인증 및 세션관리가 적절히 되지 않을 때 취약점 발생
- 대안 : 세션 파기 , 재사용 금지 , 자동 세션 종료 , 비밀번호 확인 절차 추가 (비밀번호 확인 , OTP , recaptcha 등등)
A08: Software and Data Integrity Failures(소프트웨어 및 데이터 무결성 오류)
- 2021년 새로 등장한 카테고리 - 무결성을 확인하지 않고 소프트웨어 업데이트, 중요 데이터 및 CI/CD 파이프 라인과 관련된 가정을 하는데 중점
- 대안 : 무결성 점검 프로세스 구현 , 직원 보안 교육 (체크섬 확인) , 검증되지 않은 프로그램 다운로드X
A09: Security Logging and Monitoring Failures (보안 로깅 및 모니터링 실패)
- Insufficient Logging & Monitoring(불충분한 로깅 및 모니터링) ⇒ Security Logging and Monitoring Failures (보안 로깅 및 모니터링 실패) 변경
로깅 및 모니터링 없이는 공격 활동을 인지할 수 없음 → 이 카테고리는 진행 중인 공격을 감지 및 대응하는데 도움이 됨
- 대안 : IDS , IPS ,UTM 등 보안 장비 구현 및 실시간 감시
A10: Server-Side Request Forgery (서버 측 요청 위조)
- 2021년 새로 등장한 카테고리 - SSRF 결함은 웹 애플리케이션이 사용자가 제공한 URL의 유효성을 검사하지 않고 원격 리소스를 가져올 때마다 발생
공격자는 방화벽, VPN 또는 다른 유형의 네트워크 ACL(액세스 제어 목록)에 의해 보호되는 경우에도 응용 프로그램이 조작된 요청을 예기치 않은 대상으로 보내도록 강제할 수 있음
Server-side Request Forgery 서버쪽에서 위조된 호출을 유도하는 공격
xss , csrf 공격과 유사하게 외부 호스트를 호출하는 대신 로컬호스트를 호출하여 내부적인 공격을 함
사용자의 입력값으로 URL을 받아서 처리하는 서비스의 경우 이를 이용해서 출력시킴
- file://etc/passwd, http://127.0.0.1/file 등과 같이 로컬에 있는 서버 자원을 사용해서 의도된 공격 행위를 함
- 대안 : 127.0.0.1 이나 localhost같은 로컬호스트 요청 부분 필터링, 인증된 url 및 호스트만 사용 가능 (제한) , DNAT을 통한 망분리