OWASP Top 10 2017, 어떤사항을 준비해야 할까?

 안녕하세요, 보안클라우드입니다.
오늘의 쉽게쓰는 보안이슈 주제는 바로 2013년 이후 4년만에 새로 나온 "OWASP top 10 2017"입니다.

 어떤내용이 변경되었고, 어떤 점이 새롭고 핫한 취약점인지를 보기 전에 먼저 OWASP에 대해 간략히 알아보려합니다.

 OWASP는 2004년 4월부터 안전한 웹 및 응용 애플리케이션을 개발할 수 있도록 지원하기 위해 미국에서 만들어진 비영리단체로, 중립적이고 공정하며 실질적인 보안 가이드라인을 무료로 제공해주고 있습니다. 외국의 가이드라인이지만 국내에서도 지난 10여년동안 OWASP top 10을 많이 참고하고 있고, 취약점 점검 도구들을 보더라도 OWASP top 10 취약점을 포함하지 않는 도구는 찾아보기 힘듭니다.
이처럼 웹 및 응용 애플리케이션 보안분야에서 실제적인 표준으로 사용하고 있는 OWASP top 10이라서 취약점도 굉장히 신중하고, 다양한 관점에서 고려하여 선택했을 것입니다.

 이전에 관련된 글을 한번 작성하긴 했지만, 이번 OWASP Top 10 2017은 RC1, RC2를 거쳐 수개월간의 검토끝에 확정된 내용입니다. 4월 10일 RC1 버전 공개 이후, 최종본이 나온 11월 20일까지 약 7개월간 기나긴 고민 끝에 선정된 취약점이라고 생각됩니다.
 

그럼, OWASP Top 10 2017에 선정된 취약점들을 살펴보겠습니다.
 

OWASP Top 10 2017의 보안 위협

A1. 인젝션
 SQL, LDAP, OS 등 다양한 종류의 인젝션 취약점은, 공격자가 악의적인 데이터를 명령어나 쿼리문의 일부분으로써 인터프리터로 보내질 때 발생하는 취약점입니다. SQL 쿼리의 일부분으로써 사용되는 파라미터 등에 공격자가 악의적인 쿼리문을 입력하여 전체 쿼리문을 변조시키는 SQL 인젝션은 가장 대중적이고 일반화된 인젝션의 한 종류입니다.

A2. 취약한 인증
 인증 및 세션관리와 관련된 기능이 잘못구현되거나 안전하지 않게 구현되어있을 경우, 공격자가 암호, 키, 세션 토큰등을 탈취하거나 또는 일시적 또는 영구적으로 다른 사용자의 권한 획득을 위해 구현 상 결함을 악용하는 취약점입니다. 내 방에 아무도 들어오지 못하도록 나만 가지고있는 열쇠로 잠궈놨는데 아무나 쉽게 그 열쇠를 찾아낼 수 있어 방에 함부로 들어올 수 있다면, 취약한 인증 취약점을 가지고 있다고 할 수 있을 것입니다.

A3. 민감한 데이터 노출
 민감한 데이터를 암호화하지 않고 평문으로 저장 및 전송을 할 경우, 공격자가 탈취하여 데이터의 내용을 확인할 수 있게 되는 취약점입니다. 암호화를 사용하지만 취약한 키를 생성, 관리하거나 약한 알고리즘, 프로토콜 및 암호를 사용하는 경우도 많아서 암호화된 데이터를 쉽게 복호화할 수 있기도 합니다. 인터넷 사이트에 로그인하기위해 아이디와 비밀번호를 입력하였는데, 그 중요한 데이터를 다른 누군가 볼 수 있다면 그 사이트는 믿을 수 없을 것입니다.

A4. XML 외부 개체(XXE)
 오래된 XML 프로세서들은 XML 처리 중에 참조되고 평가되는 URI에 대해 외부 개체의 지정을 허용하게되는데, XML 문서에서 동적으로 외부 URI의 리소스를 포함시킬 수 있는 external entity를 사용하여 서버의 로컬파일 열람, DOS등을 유발시킬 수 있는 취약점입니다. XML 문서의 DTD(Document Type Definition)의 <ENTITY>요소에서 사용되며, 외부 개체를 이용해 서버 로컬 파일에 접근하거나, 특정 URL에 접속하도록 요청할 수 있습니다. 공격자가 서버의 XML 문서를 변조해서 악성 페이지를 요청하는 ENTITY를 삽입하였다면, 사용자들이 해당 XML을 요청할 때 마다 악성페이지로 접근하게 될 것입니다.

A5. 취약한 접근 통제
 인증된 사용자만이 수행할 수 있는 작업에 대한 접근 제어가 제대로 적용되어 있지 않을 경우 발생하는 취약점입니다. 공격자는 이를 악용하여 다른 사용자의 계정에 접근하거나, 중요한 파일을 보거나, 다른 사용자의 데이터를 수정하는 등 권한 없는 기능과 데이터에 접근할 수 있습니다. 인터넷 사이트의 마이페이지 같은 경우, 로그인된 사용자만이 본인의 정보를 열람하고, 수정할 수 있어야하는데 이에 대한 접근 통제가 취약하다면 타인이 접근하여 정보를 열람 및 수정할 수 있게 됩니다.

A6. 잘못된 보안 구성
 가장 흔하게 보이는 이슈로, 취약한 기본설정, 잘못 구성된 HTTP 헤더 및 민감한 정보가 포함된 에러 메세지로 인한 결과입니다. 운영체제, 프레임워크, 라이브러리, 애플리케이션 등을 사용할 때 안전한 설정과 함께 적절한 패치 및 업데이트를 하지 않을경우 발생할 수 있는 공격등에 대한 취약점입니다.

A7. 크로스사이트 스크립팅 (XSS)
 애플리케이션이 올바른 유효성 검사 또는 필터링 처리 없이 신뢰할 수 없는 데이터를 포함하거나, 외부 입력 값을 출력할 경우에 발생할 수 있는 취약점입니다. 공격자는 Reflected XSS, Stored XSS, DOM Based XSS의 세가지 유형으로 공격을 시도하며 세션 및 쿠키 탈취, 다중 요소 인증 우회, 악성코드 배포등을 수행할 수 있는 치명적인 취약점입니다. 크로스 사이트 스크립팅은 OWASP TOP 10에서 두 번째로 많이 발생하는 문제이며, 모든 응용 프로그램의 약 2/3에서 발견된다고 합니다.

A8. 안전하지 않은 역직렬화
 직렬화는 객체를 저장매체에 저장하거나, 바이너리 형태로 네트워크를 통해 전달하기 위해 저장하는 과정입니다. 이 객체를 직렬화한 연속된 바이트 또는 포맷은 다시 원래 객체가 가지고 있던 상태로 재 생성하는데 사용할 수 있습니다. 반대로, 연속된 바이트로부터 어떤 데이터 구조를 추출해내는 과정을 역직렬화라고 하는데, 이 역직렬화를 안전하게 사용하지 않을 경우에 대한 취약점입니다. 특정 API에서 사용자의 ID, 권한, 암호 등을 직렬화하여 전달하는 기능이 있을 경우, 공격자가 직렬화 된 객체를 변경하여 관리자 권한을 부여하는 등의 공격을 시도할 수 있습니다. 이 취약점은 수치화된 정보가 아닌 업계의 설문조사를 기반으로 OWASP TOP 10 항목에 포함되었다고 합니다.

A9. 알려진 취약점이 있는 구성 요소 사용
 애플리케이션에서 사용하고 있는 라이브러리나, 프레임워크, 모듈 등에 대한 취약점이 알려진다면 적은 노력으로 취약점에 대한 정보 및 POC(Proof of Concept) 코드 등을 구할 수 있습니다. 알려진 취약점이 있는 구성요소를 계속 사용하고 있다면, 심각한 데이터 손실을 일으키거나 서버가 장악될 수 있기 때문에 사용하고 있는 구성요소에 대한 취약점을 항상 체크 및 제거, 또는 취약점이 있는 구성요소를 사용하지 않아야합니다.

A10. 불충분한 로깅 및 모니터링
 로깅과 모니터링은 침해 사고 시 빠른 대처 및 분석을 위해 필수적입니다. 로깅과 모니터링이 불충분하다면 공격자들이 시스템을 더 공격하고, 오랜기간의 지속성을 유지하며, 더 많은 시스템을 중심으로 공격할 수 있게 만들어줍니다. 경고 및 오류, 중요한 트랜잭션에 대한 로그를 항상 수집하고, 의심스러운 활동이 적시에 탐지되고 대응될 수 있도록 효과적인 모니터링을 유지해야합니다.

 이렇게 OWASP Top 10 2017의 10가지 취약점을 살펴봤습니다. 새로 생긴 항목들도 보이고, 익숙했던 항목이 안보이기도 하는데, 2013년도에 발표한 OWASP Top 10과 비교해서 어떤 부분이 달라졌고, 이를 통해 보안을 위해 어떤 내용을 더 준비해야하는지 알아보겠습니다.
 

 

변경된 내용
 1. 2013의 A8. 크로스 사이트 요청 변조(CSRF)와 A10. 검증되지 않은 리다이렉트 및 포워드 삭제
 2. A4. XML 외부 개체(XXE), A8. 안전하지 않은 역직렬화, A10. 불충분한 로깅 및 모니터링 추가
 3. 2013의 A4. 안전하지 않은 직접 객체 참조, A7.기능 수준의 접근 통제 누락이 2017의 A5. 취약한
     접근 통제 항목으로 병합

 OWASP Top 10 2017에서는, 크로스 사이트 요청 변조(CSRF)에 대해서는 CSRF에 대한 방어를 포함시킨 많은 프레임워크가 있기 때문에 5%의 애플리케이션에서만 발견되었고, 검증되지 않은 리다이렉트 및 포워드는 약 8%의 애플리케이션에서 발견되었지만, XXE에 밀려서 삭제되었다고 말하였고, 삭제되었지만 잊지 말아야 하는 사항으로 표시하였습니다.

고려해야 할 사항
1.새로 업데이트된 OWASP Top 10에 따라, 기존에 운영중인 애플리케이션에 대한 취약점 점검 및
   진단이 충분한지 확인이 필요합니다. 소스코드 검증(WhiteBox Test) 및 취약점 스캐닝(BlackBox
   Test)을 보안소프트웨어 개발 생명주기(SSDL)에 맞춰 적절히 활용해야하며, 웹 보안 진단 전문가에
   의한 검토, 우선 순위의 선택과 대응이 필요합니다.

 2. A10. 불충분한 로깅 및 모니터링 추가 항목에 따라 웹 트랜젝션에 관련된 다양한 로그들이 SIEM과
     같은 솔루션 내에서 통합 수집 및 분석되고 보안 사고 대응 체계안에 포함시켜야 합니다.

지금까지 OWASP Top 10 2017에 대한 내용을 살펴봤습니다.
안전한 애플리케이션을 위해서 모두 고려해야하며 확인해야 하는 내용들이라고 생각하고, Top 10 이외에도 애플리케이션에 영향을 끼치는 문제들까지 고려하여 사고 없는 애플리케이션을 개발, 운영해야 할 것 같습니다.

그럼 다음 포스팅에서 만나 뵙겠습니다!

  • 이전 악성코드 분석과 리버스 엔지니어링 (리버싱)
  • 다음 모바일 서비스 보안 취약점과 이슈