본문 바로가기

프로그래밍/Web programming

OWASP Top 10


출처: https://blog.naver.com/ym6688/221381596236




OWASP Top 10 in 2017년 



OWASP(The Open Web Application Security Project)는 오픈소스 웹 애플리케이션 보안프로젝트이다.

주로 웹에 관한 정보노출, 악성 파일 및 스크립트, 보안 취약점 등을 연구한다.





OWASP TOP 10 - 2017년 발표 
A1. 인젝션 
A2. 취약한 인증
A3. 민감한 데이터 노출
A4. XML외부 개체 (XEE)[새로나온 공격]
A5. 취약한 접근 통제(취약한 접근 통제
안전하지 않은 직접객체 참조와 기능 수준의 접근통제 누락을 합한 것 
A6. 잘못된 보안 구성
A7. 크로스 사이트 스크립팅(XSS) 
A8. 안전하지 않은 역직렬화 [새로나온 공격커뮤니티]
A9. 알려진 취약점이 있는 구성요소 사용
A10. 불충분한 로깅 및 모니터링[새로나온 공격커뮤니티]








(1) A1 : 인젝션 

신뢰할 수 없는 데이터가 명령어나 쿼리문의 일부분으로써, 인터프리터로 보내질 때 발생


예방법: 

데이터를 지속적으로 명령어와 쿼리로 부터 분리시켜야 한다. 

인터프리터 사용을 피하거나, 매개 변수화 된 인터페이스를 제공하는 안전한 API를 사용하자.





(2) A2 : 취약한 인증

인증 및 세션 관리와 관련된 애플리케이션 기능이 종종 잘못 구현되어 

공격자들이 암호, 키, 세션 토큰을 위험에 노출시킬 수 있거나 일시적 또는 영구적으로 다른 사용자의 권한 획득을 위해 구현 상 결함을 악용하도록 허용



예방법:

다중인증을 구현하여 자동화 된 계정 정보 삽입, 무차별 공격, 탈취된 계정 정보 재사용 공격을 예방할 것.

약한 비밀번호 검사를 구현하자.

로그인 실패에 대한 제한이나 시간 연기.

로그인 이후에 예측 불허한 무작위 세션 ID를 생성하는 서버측의 안전한 내장 세션 관리자를 사용





(3) A3 : 민감한 데이터 노출

금융 정보, 건강 정보, 개인 식별 정보와 같은 중요한 정보



예방법:

불필요한 민감한 데이터는 저장하지 않는다.


모든 민감한 데이터들을 암호화하는지 확인하기.


최신의 강력한 표준 알고리즘, 프로토콜, 암호 키를 사용하는지 확인 ⇨ 적합한 키 관리를 사용


민감한 데이터를 포함하는 응답 캐시를 비활성화





(7) A7 : 크로스 사이트 스크립팅(XSS)

애플리케이션이 올바른 유효성 검사 또는 필터링 처리 없이 새 웹 페이지에 신뢰할 수 없는 데이터를 포함하거나, 

자바스크립트와 HTML을 생성하는 브라우저 API를 활용한 사용자 제공 데이터로 기존 웹 페이지를 업데이트할 때 발생



예방법:

신뢰할 수 없는 데이터를 사용 중인 브라우저 컨텐츠와 분리해야 한다. 

- React JS와 같이 XSS를 자동으로 필터링 처리하는 프레임워크를 사용하기


클라이언트 측에서 브라우저 문서를 수정할 때 상황에 맞는 인코딩을 적용하면 DOM XSS에 대해 대응할 수 있다.