본문 바로가기
IT/정보보안

OWASP TOP 10 2017 웹 어플리케이션 보안 프로젝트 정리

by 미니송 2019. 2. 27.



OWASP(The Open Web Application Security Project)


3년마다 한 번씩 발표되며 오픈소스 웹 어플리케이션 보안 프로젝트입니다. 2004년, 2007년, 2010년, 2013년, 2017년에 발행되었으며 문서로 공개됩니다. 취약점이니 알아두고 위협을 제거하는데 사용하면 될 것 같습니다.


10가지 보안 위협을 정해서 10대 웹 어플리케이션 취약점을 발표하는데 정보보안을 공부하거나 웹쪽에 관심이 많다면 자세히 봐야 할 내용들이 있습니다. 이미 알고있는 내용도 있고 처음보는 내용이 있을 수 있습니다. 2004년에 나온 취약점 중에서는 최신 2017년 버전에서 TOP 10 안에 못들어가는 취약점들도 있습니다.



2017 OWASP Top 10



A1: Injection ( 인젝션 )

Injection은 삽입이라는 뜻으로 인젝션으로 발음합니다. SQL injection이 대표적이며 OS, XXE(Xml external Entity), LDAP Injection등이 있습니다. 신뢰할 수 없는 데이터가 명령어나 쿼리문으로 보내지며 공격자가 원하는 값을 얻을 수 있습니다. 특히나 SQL인젝션은 DB의 정보를 얻을 수 있으니 더욱 주의를 기울여야 합니다.



A2: Broken Authentication ( 취약한 인증 )

인증과 세션 관리와 관련된 어플리케이션 기능은 정확하게 구현되어 있지 않아서 공격자가 패스워드, 키, 또는 세션 토큰을 해킹하거나 다른 구현 취약점을 공격하여 다른 사용자 계정을 일시적 또는 영구적으로 탈취하는 것을 허용한다.



A3: Sensitive Data Exposure ( 민감한 데이터 노출 )

많은 웹 어플리케이션들이 신용카드, 개인 식별정보, 인증 정보와 같은 중요한 데이터를 제대로 보호하지 않기 때문에 발생합니다. 공격자는 신용카드 사기, 신분 도용 또는 다른 범죄에 이용할 수 있습니다. 중요한 데이터가 저장 또는 전송중이거나 브러우저와 교환하는 경우에 특별히 주의해야 합니다. 특히나 암호화를 통해서 해커가 데이터를 얻더라도 사용할 수 없도록 만드는 것도 중요합니다.



A4: XML External Entities ( XML 외부개체 XXE )

오래되고 설정이 엉망인 많은 XML 프로세서들은 XML 문서 내에서 외부 개체 참조를 평가합니다. 외부 개체는 파일 URI 처리기, 내부 파일 공유, 내부 포트스캔, 원격코드실행과 서비스 거부공격(DDos) 등을 사용하여 내부 파일을 공개하는데 사용할 수 있습니다.



A5: Broken Access Control ( 취약한 접근 통제 )

취약한 접근제어는 인증된 사용자가 수행할 수 있는 것에 대한 제한이 제대로 적용되지 않는 것을 의미합니다. 공격자는 이러한 취약점을 악용하여 사용자의 계정 액세스, 중요한 파일 보기, 사용자의 데이터 수정, 액세스 권한 변경 등을 할 수 있습니다. 권한이 없는데 데이터에 액세스하거나 기능 등을 이용할 수 있습니다.



A6: Security Misconfiguration ( 잘못된 보안 구성 )

훌륭한 보안은 애플리케이션, 프레임워크, 애플리케이션 서버, 웹 서버, 데이터베이스 서버 및 플랫폼에 대해 보안 설정이 정의되고 적용되어 있습니다. 기본으로 제공되는 값은 안전하지 않을 수 있습니다. 따라서 보안 설정은 정의, 구현하고 유지해야 합니다. 또한 소프트웨어를 최신상태를 유지하는 것도 중요합니다. 업데이트를 통해 최신상태를 유지해야 합니다.



A7: Cross-Site Scripting ( XSS, 크로스사이트 스크립팅 )

XSS 취약점은 애플리케이션이 신뢰할 수 없는 데이터를 가져와 적절한 검증이나 제한없이 웹 브라우저로 보낼 때 발생합니다. XSS는 공격자가 피해자의 브라우저에서 스크립트를 실행하게 됩니다. 따라서 사용자 세션 탈취, 웹사이트 변조, 악의적인 사이트로의 이동 등을 수행할 수 있습니다.



A8: Insecure Deserialization ( 안전하지 않은 역직렬화 )

안전하지 않은 역직렬화는 원격 코드 실행을 할 수 있도록 합니다. 역직렬화 취약점이 원격코드 실행이 되지 않더라도 권한 상승 공격, 주입 공격과 재생 공격을 포함한 다양한 공격에 사용될 수 있습니다.



A9: Using Components with Known Vulnerabilities ( 알려진 취약점이 있는 구성요소 사용 )

컴포넌트, 라이브러리, 프레임워크 및 다른 소프트웨어 모듈은 대부분 항상 전체 권한으로 실행됩니다. 이러한 취약한 컴포넌트(구성요소)를 악용하여 공격하는 경우 심각한 데이터 손실이 발생하거나 서버가 탈취당할 수 있습니다. 알려진 취약점이 있는 컴포넌트(구성요소)를 사용하는 애플리케이션은 애플리케이션 방어체계를 손상하거나 공격 가능한 범위를 활성화하는 등의 영향을 미칩니다.



A10: Insufficient Logging & Monitoring ( 불충분한 로깅 및 모니터링 )

불충분한 로깅과 불충분한 모니터링은 취약점이 될 수 있습니다. 공격자들이 시스템을 더 공격하고 지속성을 유지하며 더 많은 시스템을 중심으로 공격할 수 있도록 만들고 데이터를 변조, 추출, 파괴할 수 있습니다. 대부분의 침해 사례에서 침해를 탐지하는 시간이 200일이 넘게 걸리는 것을 볼 수 있습니다. 또한 이러한 탐지는 내부 프로세스와 모니터링이 아닌 외부기관이 탐지합니다. 따라서 로깅과 모니터링은 중요한 요소가 됩니다.


댓글