다양한 기록

OWASP top 10 (2021) 본문

보안개론

OWASP top 10 (2021)

라구넹 2024. 6. 7. 22:39

A01~09만 다룸

A01: Broken Access Control

사용자가 자신한테 주어진 권한보다 더 많은 걸 사용하게 됨

 

1. URL, 내부 응용 프로그램 상태, HTML 페이지, API 리퀘스트 등 변조

HTTP 요청은 GET, POST 두 방식을 이용함

 

참고 자료)

https://lagooneng.tistory.com/93

 

HTTP 프로토콜 구조

HTTP Request Message HTTP Response Message 요청 라인 상태 라인 제네럴 헤더 제네럴 헤더 리퀘스트 헤더 리스폰스 헤더 엔티티 헤더 엔티티 헤더 CRLF CRLF Body Body HTTP 요청 메시지 리퀘스트 라인 [method] [sp] [

lagooneng.tistory.com

GET 방식은 URL에 값을 붙여서 전송하게 되는데, 이 경우 위험함

 

또한, 웹 프록시에서 값을 조작하는 것도 가능함

 

2. 권한 상승

로그인하지 않고 사용자처럼 행동하는 것도 가능, 혹은 관리자로 행동 가능

루트의 패스워드가 노출되면 su 명령으로 루트로 행동 가능

 

A02: Cryptographic Failues

네트워크로 전송되거나, DB에 저장되는 등의 데이터는 안전한 암호화 알고리즘으로 보호될 필요가 있음

DES말고 AES 쓰기, MD-5말고 SHA-256 쓰기 등 ..

 

A03: Injection

SQL injection같이 처음엔 DB와 관련이 많았는데,

최근에 OS 커맨드 인젝션 공격도 많아짐

XXS도 Injection에 포함됨

소스코드 검토를 해야 함(포티파이, 스패로우) -> 파라미터, 헤더, url, 쿠키, json 등을 체크

 

기관은 static(SAST), dynamic(DAST), interactive(IAST) application security testing tools를 

CI/CD 파이프라인에서 사용해서 injection 결함이 있는지 체크할 수 있음

웹쪽은 Spike, Wfuzz, Spotbugs 같은 도구를 사용

** CI/CD = continuous Integration / Continuous Deployment .. 지속적 통합, 지속적 배포

 

Seeker(테스트 도구)는 Log4Shell의 취약성을 감지하고, Log4j가 어떻게 구성되었는지 확인 및 테스트 가능

 

A04: Insecure Design

보통 설계, 구현단계에서 약점이 발생

예시) 영화관 체인점 예약 시스템 .. 한 사람이 엄청 많이 예약해두고 펑크내는 걸 허용하면 설계 오류임

 

그래서 설계를 잘 하려면 어떻게 해야 하는가

SDLC를 안전하게 만들고, 안전한 디자인 패턴 적용

안전한 라이브러리, Threat Modeling (마이크로소프트 .. 어떤 컴포넌트가 필요하고 할 수 있는 건 무엇인가 분석)

 

그리고 SDLC 기준 플랜 단계에서부터 신경쓰는게 좋음

Shift Left: SDLC의 왼쪽 단계에서부터 보안에 신경써라

 

A05: Security Misconfiguration

구성 요소, 세팅을 잘못할 때 생기는 보안 문제

SDLC에서 오른쪽 단계에서 불필요한 기능은 삭제하는게 좋음

ex) 만약 ftp 포트를 안쓴다 -> 해당 포트는 닫는게 좋음

ex) icmp 프로토콜 포트 열어놓으면 디도스 가능

ex) XXS 때문에 게시판에 스크립트 올리는 기능은 제거해야 보안적으로 안전함

ex) 불필요한 페이지(광고)도 가능한 없애는 게 좋음

ex) http 80포트 말고 다른 걸 쓰는게 좋음

ex) 디폴트 어카운트 (루트, dbms, ip카메라, ap 등).. 바로 패스워드를 바꿔야 함

 

A06: Vulnerable and outdated components

취약한, 낡은 컴포넌트 사용

업데이트 안되면 문제가 됨

 

A07: Identification and Authentication Failures

브루트 포스를 허용하면 안됨

잘 알려진 패스워드를 쓰는 것도 위험(Password1, admin)

 

A08: Software and Data Integrity Failures

끊임없이 빌드, 배포되는 상황에서 업데이트 시 무결성 검증을 안하면 문제가 됨

CI 시 검증이 된 컴포넌트인지 확인 필요

동기화하지 않으면 무결성이 보장되지 않음

 

A09: Security Logging and Monitoring Failures

로깅 실수

모든 OS, DB는 로깅을 충분히 해야 함

로그가 로컬에만 저장되어도 문제- 백업을 최소 두세곳에 해야 함

공격을 받을 수도 있고 자연재해 때문

 

 

'보안개론' 카테고리의 다른 글

PT, BBP  (0) 2024.06.08
Security Testing  (0) 2024.06.08
취약한 언어 / SDLC / 범위를 벗어난 쓰기 / 완화 방법 등  (0) 2024.06.07
Byte Ordering, Simple Buffer Overflow  (0) 2024.06.04
Array Operations  (0) 2024.06.04