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 |