- Published on
OWASP Top 10 (2017)
OWASP(국제 웹 보안 표준기구, The Open Web Application Security Project)에서는 3년에서 4년마다 웹 어플리케이션 취약점 중 가장 영향력있고 위협적인 취약점 10개를 선정하여 발표한다.
다음은 2017년에 발표한 10대 Web Application 취약점이다.
- Injection(인젝션)
- Broken Authentication and Session Management(인증 및 세션 관리 취약점)
- Cross-Site Scripting (XSS) (크로스 사이트 스크립팅)
- Broken Access Control (취약한 접근 제어)
- Security Misconfiguration (보안 설정 오류)
- Sensitive Data Exposure (민감 데이터 노출)
- Insufficient Attack Protection (불충분한 공격 보호)
- Cross-Site Request Forgery (CSRF) (크로스 사이트 요청 변조)
- Using Components with Known Vulnerabilities (알려진 취약점이 있는 컴포넌트 사용)
- Underprotected APIs (보호되지 않은 API)
Injection(인젝션)
- SQL, OS, XXE, LDAP 인젝션 등이 존재
- 데이터 명령이나 쿼리문의 일부분이 인터프리터로 보내질 때 발생
- 공격자가 악의적인 데이터 구문을 이용해 명령을 실행하거나 적절한 권한없이 비정상적으로 데이터에 접근하는 공격
- 이에 대응하기 위해 사용자 입력 창에 일부 특수문자 입력 차단, SQL 서버 에러 메시지 표시 금지, 일반사용자 권한으로 시스템저장 프로시저 접근 차단 하는 등의 방법이 필요
Broken Authentication and Session Management(인증 및 세션 관리 취약점)
- 인증이나 세션 관리 어플리케이션 기능이 잘못 구현되어 공격자에게 취약한 암호, 키 또는 세션 토큰을 제공
- 다른 사용자의 권한을 일시 또는 영구적으로 얻게 되는 취약점
Cross-Site Scripting (XSS) (크로스 사이트 스크립팅)
- 신뢰할 수 없는 데이터가 응용 프로그램의 새 웹 페이지에 포함되거나 사용자가 제공한 데이터로 JavaScript 작성 기능이 있는 브라우저 API를 사용하여 기존의 웹 페이지가 업데이트될 때 발생하는 취약점
- 침입자는 이 방법을 통해서 브라우저에 스크립트를 삽입하고 실행할 수 있다.
- 공격자가 희생자의 브라우저 사용자 세션을 도용하거나, 웹 사이트를 변조시키거나, 악성 사이트로 리다이렉션 시킴
- 이에 대응하기 위해 사용자가 문자열에 스크립트 입력을 막기 위해 <, >, &, ” 등을 문자변환함수나 메소드를 이용하여 <, >, &am p, " 로 치환해야 한다.
- 또한, HTML 태그를 허용하는 게시판의 경우에는 화이트리스트를 선정하여 해당 태그만 입력 가능하도록 설정해야 한다.
Broken Access Control (취약한 접근 제어)
- 인증된 사용자가 수행할 수 있는 작업에 대한 제한이 원활하게 적용되지 않음
- 공격자는 해당 결함을 악용하여 다른 사용자의 계정에 액세스하거나, 중요한 파일을 보고, 다른 사용자의 데이터를 수정 또는 삭제
- UI 에서 보여지는 특정기능을 수행하기 전에, 기능 접근 제한 권한을 검증해야 하지만 적절하게 미수행될 경우, 공격자는 비인가된 기능에 접근하기 위해 정상적 요청을 변조한다.
Security Misconfiguration (보안 설정 오류)
- 바람직한 보안은 어플리케이션, 프레임워크, WAS, 웹 서버, DB 서버 및 플랫폼에 대한 보안 설정
- 설정을 정의, 구현 및 유지하며, 소프트웨어를 최신 버전으로 관리하지 않아 발생하는 취약점
Sensitive Data Exposure (민감 데이터 노출)
- 공격자가 신용 카드, 신분 도용 또는 다른 범죄를 수행하는 취약한 데이터를 훔치거나 변경할 수 있는 취약점
- 브라우저내에서 중요 데이터를 저장 또는 전송할 때, 노출되어 발생하는 취약점
- 이를 보완하려면 데이터 저장 시 암호화 및 데이터 전송 시에도 SSL 등을 이용해야 한다.
Insufficient Attack Protection (불충분한 공격 보호)
- 대부분의 어플리케이션 및 API는 수동 공격과 자동 공격을 모두 탐지, 방지 및 대응할 수 있는 기능이 없음
- 기본 입력 유효성 검사를 훨씬 뛰어넘어 자동 탐지, 로깅, 응답 및 공격 시도 차단을 원활하게 하지 않아 발생되는 취약점
Cross-Site Request Forgery (CSRF) (크로스 사이트 요청 변조)
- 로그인된 피해자의 취약한 웹 어플리케이션에 피해자의 세션 쿠키와 기타 다른 인증 정보를 자동으로 포함해, 위조된 HTTP 요청
- 해당 악의적인 요청을 Client의 권한을 이용하여 정상적인 요청처럼 보내 서버를 공격
Using Components with Known Vulnerabilities (알려진 취약점이 있는 컴포넌트 사용)
- 컴포넌트, 라이브러리, 프레임워크 및 다른 소프트웨어 모듈은 어플리케이션과 같은 권한으로 실행
- 취약한 컴포넌트들을 악용하여 심각한 데이터 손실을 발생시키거나 서버를 장악함
- 알려진 취약점이 있는 컴포넌트를 사용하는 어플리케이션과 API는 어플리케이션을 악화시킬 뿐만 아니라, 다양한 공격에 영향을 줄 수 있다.
Underprotected APIs (보호되지 않은 API)
- 최근 애플리케이션은 API(SOAP/XML, REST/JSON, RPG, GWT)에 연결되는 브라우저 및 모바일 애플리케이션의 Javascript 와 같은 Rich Client Application과 API를 포함하는 경우가 많음.
- 이러한 API는 대부분 보호되지 않으며 수많은 취약점을 포함
- 이 문제를 완화하기 위해서는, 클라이언트와 API 사이의 통신이 보호되고 있는지 확인해야 하며, API에 강력한 인증방식이 모든 인증정보, 키 및 토큰을 보호하고 있는지 확인해야 한다.