최신 OWASP TOP10
2021년도 OWASP TOP10
자기소개
추가된 3가지 항목
- 1) A04: 2021-Insecure Design
- 2) A08: 2021-Software and Data Integrity
- 3) A10: 2021-Server-Side Request Forgery(SSRF)
-
A01: 2021-Broken Access Control(손상된 접근 통제)
-
취약한 접근 제어로 악의적인 공격자가 주어진 권한을 벗어나 모든
데이터를 무단으로 열람, 수정 혹은 삭제 등의 행위
예방법
- 1. 공용 리소스를 제외하고 기본적으로 접근을 제한한다.
-
웹 서버 디렉토리 목록을 비활성화하고 파일 메타데이터(예: git) 및 백업
파일이 웹 루트내에 존재하지 않도록 확인한다.
- 액세스 제어 실패를 기록하고 반복되는 경우 관리자에게 알린다.
-
A02: 2021-Cryptographic Failures(암호화 오류)
- 적절한 암호화가 이뤄지지 않은 환경에서 민감 데이터 노출 발생
예방법
-
1. 애플리케이션에서 처리, 저장 또는 전송하는 데이터를 분류하고
개인정보보호법, 규제 요구 사항 또는 비즈니스 요구 사항에 따라 민감
데이터를 식별한다.
-
2. 민감한 데이터는 불필요하게 저장하지 않고 저장된 모든 민감 데이터는
안전하게 암호화해야한다.
-
3. 최신의 강력한 표준 알고리즘, 프로토콜 및 암호화 키가 제대로
설정되어 있는지 확인한다.
- A03: 2021-Injection(주입)
-
SQL, NoSQL, OS명령, LDAP 인젝션 취약점은 신뢰할 수 없는 명령이나
쿼리문이 인터프리터로 보내질 때 발생
예방법
- 1. 사용자 입력창에 일부 특수문자 입력을 차단한다.
- 2. SQL 서버 에러 메시지 표시를 금지한다.
- 3. 일반 사용자 권한으로 시스템 저장 프로시저 접근을 차단한다.
- A04: 2021-Insecure Design(설계 결함)
- 안전하지 않거나 비효율적인 설계로 발생하는 다양한 취약점
예방법
-
1. 보안 개발 수명 주기, 보안 설계 패턴 또는 위협 모델링 등이 필요하다.
-
2. 소프트웨어 프로젝트를 시작할 때 보안 전문가를 통해 전체 프로젝트와
소프트웨어 유지 관리에 도움을 받는 것이 좋다.
-
A05: 2021-Security Misconfiguration(보안 구성 오류)
-
불필요한 기능 활성화, 적절한 보안 강화 누락, 기본 계정 사용, 상세한
오류 메시지, 최신 보안 기능 비활성화, 클라우드 서비스에 대한 부적절한
권한 설정 등 안전하지 않는 보안설정으로 발생하는 취약점을 나타냄
예방법
-
1. 애플리케이션, 프레임워크, 애플리케이션 서버, 데이터베이스 서버
플랫폼 등에 보안을 적절하게 설정하고 최적화된 값을 유지한다.
- 2. 소프트웨어는 최신 없데이트 상태로 유지한다.
- 3. 불필요한 기능, 구성 요소를 최소화한다.
-
4. 사용하지 않는 기능 및 프레임워크를 제거하거나 불필요하게 설치하지
않는다.
-
A06: 2021-Vulnerable and Outdated Components(취약점 및 오래된 구성
요소)
-
애플리케이션 뿐만 아니라, DBMS, API 등 지원이 종료되거나 오래된 버전을
사용할 경우 취약점 노출 가능성 높음
예방법
-
1. 보안 취약점에 대한 식별 목록(CVE, NVD 등)을 지속적으로
모니터링한다.
-
2. 사용하는 구성 요소와 관련된 보안 취약점에 대한 이메일 경고를
구독한다.
-
3. 유지 관리되지 않거나 이전 버전에 대한 보안 패치를 생성하지 않는
라이브러리 및 구성 요소를 모니터링한다.
-
4. 보안패치를 적용할 수 없는 경우 가상 패치를 배포하여 발견된 문제를
모니터링하고 보호한다.
-
A07: 2021-Identification and Authentication Failures(식별 및 인증
오류)
-
Broken Authentication(취약한 인증)으로 알려졌던 해당 취약점은
Identification failures(식별 실패)까지 포함하여 더 넓은 범위를 포함할
수 있도록 변경
-
사용자의 신원확인, 인증 및 세션관리가 적절히 되지 않을 때 취약점
발생할 가능성 높음
예방법
- 1.관리자 계정의 경우 기본 자격 증명을 사용하여 배포 금지
- 2. 무차별 대입 공격 방지를 위한 로그인 실패 횟수 제한 설정
-
3. URL에 세션 정보가 노출되지 않게 하며 로그아웃, 유휴 시간 초과 시
세션 무효화 필수
-
A08: 2021-Software and Data Integrity Failures(소프트웨어 및 데이터
무결성 오류)
-
2021년 새로 등장한 카테고리로 무결성을 확인하지 않은 소프트웨어
업데이트, 중요 데이터 및 CI/CD 파이프 라인을 말함
예방법
- 1. 디지털 서명을 이용하여 소프트웨어 및 데이터의 무결성을 검사
-
2. apt, yum, npm과 같은 라이브러리 및 종속성이 신뢰할 수 있는 저장소를
사용
-
3. 빌드 및 배포 프로세스를 통해 코드의 무결성을 보장하기 위해 CI/CD
파이프라인에 적절한 분리, 구성 및 액세스 제어가 적용되었는지 확인
-
A09: 2021-Security Logging and Monitoring Failures(보안 로깅 및
모니터링 실패)
-
로깅 및 모니터링 없이는 공격활동을 인지할 수 없습니다. 이 카테고리는
진행중인 공격을 감지 및 대응하는데 도움이 됩니다.
예방법
-
1. 로깅 또는 모니터링 시스템에 대한 공격을 방지하기 위해 로그 데이터가
올바르게 인코딩되었는지 확인한다.
-
2. 의심스러운 활동을 감지하고 신속하게 대응할 수 있도록 효과적인
모니터링 및 경고 시스템을 설정한다.
-
A10: 2021-Server-Side Request Forgery(SSRF, 서버 측 요청 위조)
-
SSRF 결함은 웹 애플리케이션이 사용자가 제공한 URL의 유효성을 검사하지
않고 원격 리소스를 가져올 때마다 발생합니다. 이를 통해 공격자는
방화벽, VPN 또는 다른 유형의 네트워크 ACL(액세스 제어 목록)에 의해
보호되는 경우에도 응용 프로그램이 조작된 요청을 예기치 않은 대상으로
보내도록 강제할 수 있습니다.
예방법
-
1. 네트워크 계층에서 필수 인트라넷 트래픽을 제외한 모든 트래픽을
차단하기 위해 기본적으로 거부하는 방화벽 정책을 적용하거나 네트워크
액세스 제어 규칙을 적용한다.
-
2. 애플리케이션 계층 측면에서는 HTTP 리디렉션을 비활성화하고
클라이언트가 제공한 모든 입력 데이터를 삭제하고 검증한다.