OWASP(Open Web Application Security Project)
오픈소스 웹 애플리케이션 보안 프로젝트의 약자로서 주로 웹에 관한 정보노출, 악성 파일 및 스크립트, 보안 취약점 등을 연구한다. 현재까지 발표된 정보는 2004, 2007년, 2010년, 2013년의 자료들이 공개되었으며, 가장 최근에 올라와 있는 것은 2017년에 발표된 문서 자료이다.
2017년 발표된 OWASP Top 10
1. Injection (인젝션)
SQL, OS, XEE, LDAP의 인젝션 취약점은 신뢰할 수 없는 데이터가 명령어 쿼리문의 일부분으로써, 인터프리터로 보내질 때 발생한다. 공격자의 악의적인 데이터는 예기치 않은 명령을 실행하거나 올바른 권한 없이 데이터에 접근하면서 인터프리터를 속일 수 있다.
2. Broken Authentication and Session Management (인증 및 세션 관리 취약점)
인증과 세션 관리와 관련된 애플리케이션 기능이 정확하게 구현되어 있지 않아서, 공격자가 패스워드, 키 또는 세션 토큰을 해킹하거나 다른 구현 취약점을 공격하여 다른 사용자 계졍을 일시적 또는 영구적으로 탈취하는 것을 허용한다.
3. Cross-Site Scripting(XSS) (크로스 사이트 스크립팅)
애플리케이션이 신뢰할 수 없는 데이터를 가져와 적절한 검증이나 제한 없이 웹브라우저로 보낼때 발생한다. 즉 클라이언트쪽에서 발생하는 문제이다. XSS는 공격자가 피해자의 브라우저에 스크립트를 실행하여 사용자 세션 탈취, 웹사이트 변조, 악의적인 사이트로 이동 등을 할 수 있다.
4. Broken Access Control (취약한 접근 제어)
인증된 사용자가 수행할 수 있는 작업에 대한 제한이 제대로 적용되어 있지 않을 때 발생한다. 공격자는 이러한 결함을 악용하여 다른 사용자의 계정에 접근하거나, 중요한 파일을 보내거나, 다른 사용자의 데이터를 수정하거나 접근 권한을 변경하는 등 권한 없는 기능과 데이터에 접근할 수 있다.
5. Security Misconfiguration (보안 설정 오류)
취약한 기본설정, 개방된 클라우드 스토리지, 잘못 구성된 HTTP 헤더 및 민감한 정보가 포함된 에러 메시지 등이 만든 결이다. 모든 운영체제, 프레임 워크, 라이브러리와 애플리케이션을 안전하게 설정해야 할 뿐만 아니라 시기 적절하게 패치 및 업그레이드를 진행해야 한다.
6. Sensitive Data Exposure (민감 데이터 노출)
다수의 웹 애플리케이션들이 신용카드, 개인 식별 정보 및 인증 정보와 같은 중요한 데이터를 제대로 보호하지 않는 이유로 인해 발생한다. 공격자는 신용카드 사기, 신분 도용 또는 다른 범죄를 수행하는 등 약하게 보호된 데이터를 훔치거나 변결할 수 있다. 중요 데이터가 저장 또는 전송 중이거나 브라우저와 교환하는 경우 특별히 주의해야 하며, 암호화와 같은 보호조치를 취해야 한다.
7. Insufficient Attack Protection (공격 방어 취약점)
대부분의 애플리케이션과 API는 수동 및 자동화된 공격을 모두 탐지, 방지, 대응할 수 있는 기본 기능이 부족하다. 공격 방어는 기본적인 입력 유효성 검사를 뛰어 넘어 자동으로 탐지, 로깅, 응답 및 공격 시도 차단을 포함한다. 애플리케이션 소유자는 공격으로부터 보호하기 위해 패치를 신속하게 배포할 수 있어야 한다.
8. Cross-Site Request Forgery(CSRF) (크로스 사이트 요청 변조)
로그인 후 피해자의 취약한 웹 애플리케이션에 피해자의 세션, 쿠키와 기타 다른 인증정보를 자동으로 포함하여 위조된 HTTP 요청을 강제로 보내도록 하는 것이다. 서버에서 발생하는 보안 문제로 공격자는 취약한 애플리케이션이 피해자로부터 정당한 요청이라고 오해할 수 있는 요청들을 강제로 만들 수 있다.
9. Using Components with Known Vulnerabilities (알려진 취약점이 있는 컴포넌트 사용)
라이브러리, 프레임워크 및 다른 소트웨어 모듈과도 같은 컴포넌트는 애플리케이션과 같은 권한으로 실행된다. 만약 취약한 컴포넌트가 악용되는 경우, 이는 심각한 데이터 손실을 일으키거나 서버를 장악할 수 있는 빌미를 만들어 주게 된다.
10. Underprotected APIs (취약한 API)
최신 애플리케이션 및 API에 연결하는 브라우저 및 모바일 애플리케이션의 API(SOAP, XML, REST, JSON, RPC, GWT 등)들은 대부분 자바스크립트로 짜여지고 사용된다. 이러한 API는 대부분 보호되지 않으며 수많은 취약점을 포함한다.