애플리케이션 보안 - 2017년 OWASP Top 10
본문 바로가기

애플리케이션 보안 - 2017년 OWASP Top 10

액트 2019. 8. 29.

애플리케이션 보안 - OWASP Top 10


OWASP Top 10 이란

3년 주기로 발표되는 웹 애플리케이션 보안 위협 동향

 

웹 공격은 날이 갈수록 더욱 다양해지고 복잡해집니다. 그렇기 때문에 최신 공격 경향을 파악하는 것이 중요합니다. 새롭게 발견된 공격이 무엇인지 그 트렌드를 안다면 해커의 공격으로부터 전략적으로 대응할 수 있기 때문이죠.

그래서 OWASP(국제 웹 보안 표준기구, The Open Web Application Security Project)에서는 3년 주기로  웹에 관한 정보노출, 악성 파일 및 스크립트, 보안 취약점 등을 연구하며, 웹 보안에서 빈도가 많이 발생하고 보안상 크게 위협이 되는 10가지 이슈를 발표합니다. OWASP Top 10은 2004년, 2007년, 2010년, 2013년을 기준으로 발표되었습니다. 


그리고 최근 OWASP에서 새로운 보안 취약점 3가지를 발표했습니다. 

OWASP Top 10


우선 크게 변경된 것을 살펴보겠습니다. 2017년에 단일 취약점인 A4 취약한 접근 제어(Broken Access Control) 은 본래 2013 목록에서의 취약점인 A4와 A7이 병합된 것입니다. 기존 목록의 취약점 A10은 이제 제외되었지만 A7-Insufficient Attack Protection (불충분한 공격 방어) 및 A10- Underprotected APIs (보호되지 않은 API) 가 2017년 목록에 새롭게 포함되었습니다. 


A1: Injection (인젝션)
SQL, OS, XXE, LDAP 인젝션 취약점은 인터프리터에게 신뢰할 수 없는 데이터가 명령어나 쿼리문의 일부분이 전달될 때 나타납니다. 인터프리터는 공격자의 악의적인 데이터로 인해 예상하지 못하는 명령을 실행하거나 알맞은 권한 없이 데이터에 접근하여 피해를 입을 수 있습니다. 이로 인해서, IP, PW, 개인 정보 등의 유출 가능성이 높아집니다. 이에 대응하기 위해서 사용자 입력 창에 일부 특수문자 입력 차단, SQL 서버 에러 메시지 표시 금지, 일반사용자 권한으로 시스템저장 프로시저 접근 차단 하는 등의 방안이 있습니다. 


A2: Broken Authentication and session management (취약한 인증과 세션 관리)
인증 및 세션 관리가 잘못 실행되면 공격자는 다른 사용자의 신원을 도용하거나 키와 암호를 손상시킬 수 있습니다.

A3: Cross-Site Scripting (크로스 사이트 스크립팅)
신뢰할 수 없는 데이터가 응용 프로그램의 새 웹 페이지에 포함되거나 사용자가 제공한 데이터로 JavaScript 작성 기능이 있는 브라우저 API를 사용하여 기존의 웹 페이지가 업데이트될 때 발생하는 취약점입니다. 침입자는 이 방법을 통해서 브라우저에 스크립트를 삽입하고 실행할 수 있습니다. 이러한 스크립트는 웹 사이트를 손상시키거나 사용자들을 악의적인 사이트로 리디렉션할 수 있습니다. 이에 대응하기 위해서 사용자가 문자열에 스크립트 입력을 막기 위해 <, >, &,” 등을 문자변환함수나 메소드를 이용하여 &lt,  &gt, &am p, &quot 로 치환해야 합니다. 또한, HTML 태그를 허용하는 게시판의 경우에는 화이트리스트를 선정하여 해당 태그만 입력 가능하도록 설정해야 합니다. 


A4: Broken Access Control (취약한 접근 제어)
사용자 접근 제어가 제대로 인증되지 않을 경우에 발생하는 취약점입니다. 이 문제가 발생한다면, 사이버 공격자가 다른 사용자의 계정 및 데이터에 접근하고 중요한 파일을 볼 수 있습니다. 또한, 접근 권한을 수정하는 등의 작업도 실행할 수 있습니다. UI(User Interface) 에서 보여지는 특정기능을 수행하기 전에, 기능 접근 제한 권한을 검증해야 하지만 적절하게 미수행될 경우, 공격자는 비인가된 기능에 접근하기 위해 정상적 요청을 변조합니다.

A5: Security Misconfiguration (보안설정오류)
안정적인 보안은 응용 프로그램, 프레임 워크, 서버, 플랫폼 등의 구성과 함께 구성됩니다. 어플리케이션, 프레임워크, 어플리케이션서버, 데이터베이스 서버 플랫폼 등에 보안을 적절하게 설정하고, 최적화된 값을 유지하고, 소프트웨어는 최신의 업데이트 상태로 유지해야 합니다.

A6: Sensitive Data Exposure (민감 데이터 노출)
재무 기록 또는 건강 기록과 같은 중요한 데이터는 완전히 보호해야 합니다. 웹 애플리케이션은 카드번호 등과 같은 개인정보를 적절하게 보호하고 있지 않기 때문에 공격자에게 쉽게 노출됩니다. 이렇게 노출된 데이터는 각종 범죄에 이용될 수 있습니다. 이를 보완하려면 데이터 저장 시 암호화 및 데이터 전송 시에도 SSL 등을 이용해야 합니다.

A7: Insufficient Attack Protection (불충분한 공격 보호)  - 신규
대부분의 응용 프로그램과 API는 자동이나 수동 공격을 감지, 회피 및 대응할 수 있는 능력이 없습니다. 이를 보완하고 완벽한 공격 방어를 위해서는 자동 탐지, 로깅 및 시도에 대한 응답이 필요합니다. 또한, 애플리케이션 소유자는 공격으로부터 보호할 수 있도록 신속한 패치 배포가 요구 됩니다.

A8:  Cross-Site Request Forgery (크로스 사이트 요청 변조) (CSRF)
로그인된 피해자의 웹 브라우저를 통해, 세션 쿠키 및 기타 다른 인증정보가 포함된 변조된 HTTP 요청을 전송시켜 정상적인 요청처럼 보이게 하는 기법으로 물품구매, 사이트 글 변조 등의 악의적인 행동을 하는 취약점을 의미합니다. CSRF 공격에서 피해자의 브라우저는 가짜 HTTP 요청을 취약한 웹 응용 프로그램에 보냅니다. 취약한 응용 프로그램은 이러한 요청을 합법적인 것으로 여기고 적절하게 응답합니다. 


A9: Using Components with Known vulnerabilities (알려진 취약점이 있는 컴포넌트 사용)
취약한 컴포넌트를 악용하는 공격으로, 심각한 데이터 손실이 생기고 서버가 장악됩니다. 알려진 취약점이 있는 컴포넌트를 사용하는 어플리케이션과 API는 어플리케이션을 악화시킬 뿐만 아니라, 다양한 공격에 영향을 줄 수 있습니다.

A10: Unprotected APIs (보호되지 않은 API) - 신규
불충분한 로깅 및 모니터링과 사고 대응과의 통합이 누락되거나 비효율적인 경우 공격자에 의해 시스템 공격으로 이어지거나 데이터 변조와 추출, 심지어 파괴될 수 있는 취약점입니다. 최근 애플리케이션은 API(SOAP/XML, REST/JSON, RPG, GWT)에 연결되는 브라우저 및 모바일 애플리케이션의 Javascript 와 같은 Rich Client Application과 API를 포함하는 경우가 많습니다. 이러한 API는 보호되지 않은 경우가 흔하며 다양한 취약점을 갖고 있습니다. 이 문제를 완화하기 위해서는, 클라이언트와 API 사이의 통신이 보호되고 있는지 확인해야 하며, API에 강력한 인증방식이 모든 인증정보, 키 및 토큰을 보호하고 있는지 살펴봐야 합니다.


 

 

 

 

 

출처: 펜타시큐리티시스템 블로그

댓글