정보보안/정보보호기초

OWASP TOP10 정의, 공격 예시 및 대응방안

록스타★ 2024. 6. 28. 17:26
반응형

OWASP (The Open Web Application Security Project)
- 비영리 보안 프로젝트 재단을 통칭하는 약자로 애플리케이션에서 발생할 수 있는 취약점을 분석하고 연구
- 2001년 12월 1일에 OWASP 재단으로 발족한 이후 2004년 4월21일에 비영리 단체로 등록
- 주로 웹에 관한 정보노출, 악성파일, 보안 취약점 등을 연구하며 일정 주기로 10대 웹 애플리케이션 취약점을 발표
 
OWASP TOP 10 2021 
- A-01:2021-Broken Access Control
- A-02:2021-Cryptographic Failures
- A-03:2021-Injection
- A-04:2021-Insecure Design
- A-05:2021-Security Misconfiguartion
- A-06:2021-Vulnerable and Outdated Components
- A-07:2021-Identification and Authentication Failures
- A-08:2021-Software and Data Intefgrity Failures
- A-09:2021-Security Logging and Monitoring Failures
- A-10:2021-Server-Side Request Forgery (SSRF)
 
A-01:2021-Broken Access Control
- 접근 제어(Access Control)는 사용자가 권한을 벗어난 행위를 할 수 없도록 정책을 만들고 제어하는 것을 말함
- 접근제어가 취약하게 설정될 경우 사용자는 주어진 권한을 벗어나 인가되지 않은 데이터에 무단 접근을 통해 데이터를 열람하거나 데이터 변조, 삭제등이 가능
- 2017년 대비 4단계 상승하여 2021년 첫 번째 항목으로 선정되었으며 다양한 방식으로 수많은 취약점이 발생하고 있어, 적절한 예방을 위해 설계 단계에서부터 올바른 접근 제어 정책을 수립하고 애플레키엿ㄴ의 모든 범위에 누락되는 부분 없이 적용해야함
 
A-01:2021-Broken Access Control  예방 방법
- 공용 리소스를 제외하고 기본적으로 접근을 제한하는 정책을 수립
- 웹 서버 디렉토리 목록을 비활성화하고파일 메타데이터 및 백업 파일이 웹 루트에 없는지 확인
- 접근 제어 실패를 기록하고 이상징후가 발견되면 관리자에게 알림
- 속도 제한 API 및 컨트롤러를 활용하여 자동화된 공격으로 인한 피해 최소화
 
A-01:2021-Broken Access Control 공격 예시 #1

<Sample Source>

pstmt.setString(1, request.getParameter("Acct"));
ResultSet results = pstmt.executeQuery();

<정상 접근>
https://example.com/app/accountInfo?acct=security

<조작된 접근>
https://example.com/app/accountInfo?acct=admin

 
A-01:2021-Broken Access Control 공격 예시 #2
- 애플리케이션의 관리자 페이지에 접근제어가 이루어지지 않고 있으며, 정상적인 방법으로 접근이 불가능한 관리자 ㅔ이지 URL을 추측 또는 무작위 공격이나 기타 다른 방법으로 획득하여 URL에 직접 접근

<정상 접근>
https://example.com/app/user_manage

<조작된 접근>
https://example.com/appadmin_user_manage

 
 
 
A-02:2021-Cryptographic Failures
- 기존에는 Sensitive Data Exposure로 정의되어 있었으나 2021년도에 Cryptographic Failures로 명칭이 변경
- 암호화에 오류가 있거나 미흡한 부분이 있는 경우 민감한 데이터 노출로 이어짐
- 개인정보와 금융데이터와 같이 법과 규정에 영향을 많이 받는 경우라면 더욱 안전하게 보호하기 위한 추가 요구사항을 치켜야함
- 2017년 대비 1단계 상승하여 2021년 두 번째 항목으로 선정되었고, 암호화와 관련된 전반적인 내용을 광범위하게 포함
 
 
A-02:2021-Cryptographic Failures 예방방법
- 민감한 데이터를 전송할 때 FTP나 SMTP와 같은 프로토콜을 사용하지 않는다.
- TLS(Transport Layer Security)와 같은 보안 프로토콜을 이용하여 전송중인 모든 데이터를 암호화
- HSTS(HTTP Strict Transport Security)를 설정하여 HTTPS 통신을 강제
- 최신 버전의 표준 암호 알고리즘/프로토콜 사용
 
A-02:2021-Cryptographic Failures 공격 예시
- 공격자가 스니핑하고 있는 네트워크에서 중요 정보 (로그인 계정 정보 등)가 포함된 데이터를 암호화 채널을 이용하지 않고 평문으로 전송하는 경우 공격자는 해당 계정 정보를 획득
- 공용 환경에서 Wifi를 사용할 때 연결하고자 하는 공유기가 추약한 암호 채널을 제공하는 경우 공격자는 해당 암호를 크랙하여 공유기를 사용하는 사용자들의 통신 패킷 확인을 통해 중요 정보나 민감 정보를 획득
 
 
A-03:2021-Injection
- 기존 XSS(Cross-Site Scripting) 항목이 2021년도에 Injection 항목에 편입
- Injection은 클라이언트가 전달하는 데이터(파라미터, URL, XML 등) 를 조작하여 서버측에서 명령어나 쿼리문의 일부로 인식하게 만드는등 개발자가 의도하지 않은 행위가 가능한 취약점
- 2017년 대비 2단계 하락하여 2021년 세 번째 항목으로 선정되었으며 클라이언트 데이터 조작을 통한 공격은 모두 Injection 항목으로 분류
 
A-03:2021-Injection 예방 방법
- 클라이언트에서 전달된 데이터에 대해 서버측에서 검증을 시행
- PreparedStatement 객체 등을 이용하여 사용자의 입력 값이 SQL 문법으로 인식되지 않게 설정
 
A-03:2021-Injection 공격 예시
- SQL 쿼리 사용 시 검증을 하지 않은 신뢰할 수 없는 데이터 사용

<Sample Source>
String query ="SELECT\*FROM accounts WHERE custID='"+request.getParameter("id")+"'";

<조작된 접근>
http://example.com/app/accountView?id='UNION SELECT SLEEP(10);--

 
 
 
A-04:2021-Insecure Design
- Insecure Design은 코드 구현 단계에 앞서 기획과 설계 단계에서 발생하는 보안 결함 의미
- 안전하지 않게 설계된 애플리케이션은 개발을 완료한 이후에 코드를 수정해도 보안 결함을 완벽하게 방어하는데 한계가 있을 수 밖에 없으므로 설계 단계에서부터 보안을 고려하여 설계
- 2021년 새롭게 추가된 네 번째 항목으로 요구사항 및 리소스 관리, 보안 설계, 보안 개발 생명 주기를 포함
 
A-04:2021-Insecure Design 예방 방법
- 애플리케이션의 각 계층에서 타당성 검사 진행
- 사용자 또는 서비스별 리소스 소비 제한
- 라이브러리 연동 시 보안 설계가 컴포넌트를 사용
- 모든 단계에서 보안 위협에 대한 단위 및 통합 테스트를 진행
 
A-04:2021-Insecure Design 공격 예시
- 기획 및 설계 단계에서 보안 위협을 고려하지 않고 개발한 애플리케이션은 각종 보안위협에 노출되며, 실제 운영 시 다양한 공격에 노출되어 피해를 초래할 수 있다.

<Insecure Design 상황 예시>

온라인 티켓 예매 사이트 A는 1인당 최대 2매씩만 예매가 가능하지만 기획과 설계 단계에서 보안 위협에 대한
고려를 하지 않아 공격자는 이를 이용하여 한 번에 수십 장에 달하는 티켓을 예매하고, 이를 자동화하여 사이트 운영 피해

 
 
 
A-05:2021-Security Misconfiguration
- 기존 XML, External Entities (XXE) 항목이 2021년도에 Security Misconfiguration 항목에 편입
- Security Misconfiguration은 애플리케이션을 최초 설치하거나 수정 또는 업데이트할 때 보안성을 고려하지 않아 취약점 발생
- 2017년 대비 1단계 상승하여 2021년 다섯 번째 항목으로 선정
 
A-05:2021-Security Misconfiguration 예방 방법
- 모든 환경에서 애플리케이션 보안 설정을 검증하고 자동화된 프로세스를 구현
- 애플리케이션 설치 및 업데이트 시 불필요한 기능이나 구성요소 샘플 및 테스트파일 등 상용 서비스 운영에 불필요한 요소 제거
- 보안 헤더를 설정
 
A-05:2021-Security Misconfiguration 공격 예시
- 애플리케이션 설치 시 기본으로 제공하는 관리자 페이지 및 관리자 계정을 별도 보안 설정을 하지 않고 그대로 사용하는 경우 공격자가 매우 쉽게 접근하여 애플리케이션의 관리자 권한을 획득하고 데이터를 유출하거나 서비스 운영 시 장애를 유발 할 수 있다.

<Security Misconfiguration 상황 예시>
공유기 최초 설정 후 관리 페이지에 대한 별도 보안설정을 하지 않아 공격자가 기본 설정 페이지에 접근

http://192.168.0.1/admin 접근 후 기본 계정 (admin/admin)으로 로그인

 
 
 
A-06:2021-Vulnerable and Outdataed Components
- 취약점이 존재하는 버전의 소프트웨어를 사용하거나 EOS(End of Sale) / EOL (End of Life) / EOD (End of Development) 상태인 소프트웨어를 계속해서 사용하여 이로 인해 발생할 수 있는 모든 보안 위협을 말함
- 서비스를 구성하는 모든 요소 (OS, WEB/WAS, DBMS, Application, Framework 등)가 이에 해당
- 2017년 대비 3단계 상승하여 2021년 여섯 번째 항목으로 선정
 
 
A-06:2021-Vulnerable and Outdataed Components 예방 방법
- 불필요한 파일, 컴포넌트, 문서, 라이브러리 등을 제거
- 보안 패치를 진행하지 않는 라이브러리 및 컴포넌트 모니터링
- 라이브러리나 컴포넌트는 공식 출처를 통해서만 설치/업데이트를 진행
 
A-06:2021-Vulnerable and Outdataed Components 공격 예시

의학기기와 같은 IoT 장비는 사용 환경에 따라 보안 패치가 어렵거나 불가능한 경우가 있는데 
이러한 장비에서 취약점이 발생할 경우 공격자는 해당 취약점을 이용하여 공격 가능

 
 
A-07:2021-Identification and Authentication Failures
- 기존 Broken Authentication 항목에 Identification Failures 를 포함한 항목
- 사용자 신원 확인과 인증 및 세션 관리를 포함하는 항목
- 2017년 대비 5단계 하락하여 2021년 일곱 번째 항목으로 선정
 
A-07:2021-Identification and Authentication Failures 예방 방법
- 짧거나 단순한 패스워드를 사용하지 않고 안전한 패스워드 정책을 수립하여 적용
- Multi-factor 인증이나 2차 인증 구현
- 안전한 세션 관리 정책을 수립하고 적용
- 로그인 실패에 대한 횟수를 기록하고 일정 횟수 이상 실패하면 계정 잠금이나 2차 인증 등의 보호조치를 취함
 
 
A-08:2021-Software and Data Integrity Failures
- 기존 Insecure Deseriailzation과 병합한 항목
- 애플리케이션이 신뢰할 수 없는 소스나 저장소 및 플러그인, 라이브러리 등에 의존하는 경우 발생
- 안전하지 않은 CI (Continuous Integration) / CD(Continuous Delivery) 파이프라인은 개발 및 배포 과정에서 애플리케이션이 변조되면 무결성이 훼손될 수 있으므로 애플리케이션이 사용하는 코드에 대한 무결성 검증 절차 추가
- 2021년 새롭게 추가되었고 여덟 번째 항목이다
 
A-08:2021-Software and Data Integrity Failures 예방 방법
- 디지털 서명을 이용하거나 유사한 메커니즘을 이용하여 소프트웨어 또는 데이터가 신뢰할 수 있는 곳에서 제공되었으며 변조되지 않았는지 확인
- CI/CD 파이프라인에 대한 정기적인 보안 검토 수행 
- 직렬화/역직렬화 라이브러리를 이용하여 클라이언트로 데이터를 전송하는 경우 해당 데이터에 대한 무결성 검사를 진행하거나 디지털 서명 등을 이용
 
A-08:2021-Software and Data Integrity Failures 공격 예시
- 직렬화/역직렬화 라이브러리 이용 시 데이터에 대한 무결성 검즈잉 없는 경우 공격자가 해당 데이터 조작을 통해 공격을 진행 할 수 있다.
- 가정용 공유기나 셋톱 박스 업데이트 시 펌웨어에 대한 검증을 수행하지 않고 직접 업데이트 하는 경우 공격자는 업데이트 할 펌웨어에 악성 기능을 포함시켜 업데이트를 진행할 수 있다.
 
 
A-09:2021-Security Logging and Monitoring Failures
- 기존 Insufficient Logging & Monitoring 항목이었으나 2021년 Security Logging and Monitoring Failures으로 변경
- 적절한 로깅과 모니터링이 없다면 공격을 감지하고 대응할 수 없기 때문에 애플리케이션에 대한 공격 예방을 비롯하여 공격 발생 감지 및 대응까지 포함
- 2017년 대비 1단계 상승하여 아홉 번째 항목으로 선정
 
A-09:2021-Security Logging and Monitoring Failures 예방 방법
- 로그 관리 솔루션을 활용하고 해당 솔루션이 사용 가능한 형태로 로그가 생성되는지 확인
- 모든 로그인, 접근 인증 실패 등에 대한 로깅을 진행하고 정기적인 백업을 통해 보관
 
A-09:2021-Security Logging and Monitoring Failures 공격 예시
- 적절한 로깅과 모니터링을 진행하지 않으면 공격 탐지 및 이후 침해 사고 대응이나 복구 계획 수립에 문제가 있음

<Security Logging and Monitoring Failures 상황 예시>

A사는 웹 애플리케이션을 이용하여 쇼핑몰을 운영하지만 적절한 로깅과 모니터링 대챌을 수립하지 않아 
공격자가 A사가 운영중인 쇼핑몰에 대한 다수의 공격을 통해 고객 정보를 유출하였지만 공격 탐지하지 못하고
정확한 피해 범위 산정 할 수 없음

 
 
 
A-10:2021-Server-Side Request Forgery (SSRF)
- 애플리케이션이 클라이언트가 제공한 데이터를 적절한 검증 없이 로컬 및 원격 리소스를 가져와 취약점을 발생시키는 경우
- SSRF 취약점이 존재하는 애플리케이션은 서버 권한과 신뢰 관계를 이용하여 서버가 조작된 요청을 수행하도록 함
- 2021년 새롭게 추가된 열 번째 항목
 
A-10:2021-Server-Side Request Forgery (SSRF) 예방 방법
- 클라이언트에서 제공되는 모든 데이터에 대해 유효성 검사 진행
- HTTP 리다이렉션을 비활성화
- 내부 네트워크에서 서버간 통신에도 방화벽을 활용하여 접근 제어 규칙 적용
 
A-10:2021-Server-Side Request Forgery (SSRF) 공격 예시
- 클라이언트가 제공한 데이터를 검증하지 않고 해당 값을 이용하여 로컬 및 원격 리소스를 사용하는 경우 공격자는 서버가 조작된 요청을 수행하도록 조작할 수 있다.

<Server-Side Request Forgery (SSRF) 상황 예시>

<정상접근 (HTTP Request)>
POST /api/userInfo-HTTP/1.0
Content-Type: application/x-www-from-urlencoded

api=http://localhost/users/security


<조작된 접근 (HTTP Reqeust)>
POST /api/userInfo HTTP/1.0
Content-Type: application/x-www-from-urlencoded

api=http://localhost/users/admin

 
 
 
결론
OWASP는 보안 업계에서 일을 하거나 보안 업계에서 일을 할 생각 있다면 무조건 들을 수 밖에 없고, 잘 알지 못하더라도 어느정도 숙지해야한다. 모의해킹 및 버그헌팅이나 주요정보통신기반시설과도 아주 밀접한 관계이며, 위험한 것들만 골라서 리스트를 만든 거기 때문에 알고 있으면 좋을 것 같다.

반응형