본문으로 바로가기

OWASP Top 10 - 2017

category Study/web 2017. 7. 6. 12:47






OWASP에서 발표한 2017년 TOP 10 취약점에 대해 간략하게 알아보면 우선 이번 발표는 API에 중점이 맞추어져있다. 그만큼 API에 해킹 트렌드가 맞추어져 있다는 뜻이다.


API란?


실제 응용프로그램에서 사용할 수 있돌고 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있도록 만든 인터페이스를 말한다. 예를들면 메일을 보내는 방법은 다양각색이다. 다른 API를 사용한다고 볼 수 있다.



이번에 발표된 10대 취약점 목록은 아래와 같다.


1. 인젝션

2. 인증 및 세션관리 취약점

3. 크로스 사이트 스크립팅

4. 취약한 접근제어

5. 보안 설정 오류

6. 민감 데이터 노출

7. 공격 방어 취약점

8. 크로스 사이트 요청 변조

9. 알려진 취약점이 있는 컴포넌트 사용

10. 취약한 API




1. 인젝션


매번 상위권에서 내려가지 않는 취약점이다. 데이터를 쿼리와 분리하지 못함으로써 생기며 이는 해커가 원하는 내용을 찾아보거나 변경할 수 있는 명령을 쉽게 내릴 수 있다. 공격자체가 난이도가 높은편이 아니면서 피해자에게 입히는 영향이 크기 때문에 매번 상위권을 차지하고 있는듯 싶다. 신뢰할 수 없는 데이터는 명령과 쿼리를 구분하여 방지할 수 있다.




2. 인증 및 세션관리 취약점


제대로 관리되지 않은 정보들을 이용하여  타 사용자로 위장이 가능한 취약점. 보통 개발자는 사용자 정의 형태의 인증 및 세션관리방식을 개발하지만 이것이 까다롭다보니 정확하게 만드는것이 어렵다. 이러한 이유로 취약한 부분이 존재하기 마련이다. 대부분 하이재킹 기법이 여기에 해당하는데 이 부분에 대해서 한번 해킹에 성공하게 되면 그러한 인증 및 세션을 이용하는 대상의 권한을 얻을 수 있는 위험한 취약점이다.




3. 크로스 사이트 스크립팅(XSS)


인젝션과 함께 유명한 취약점중 하나이다. 이역시 순위권에서 지키고 있으며 자동탐지가 어려워 수동으로 검토해야하는 이유로 탐지가 쉽지 않음에도 많이 발생하는 취약점이다. 이는 이스케이핑이 적절히 적용되어있지 않은 사이트에서 발생하며, 사용자의 세션을 도용하거나 웹사이트를 변조하여 악성사이트로 리다이렉션 시키는것도 가능하다.




4. 취약한 접근 제어


취약한 접근제어는 권한설정이 제대로 설정되어있지 않기 때문에 발생하는 취약점이다. 회원의 정보관리의 권한이 비회원도 가능하게 된다면 문제가 되는건 당연하다. 이처럼 엄격한 권한관리가 잘 이루어지지 않는다면 다른 사용자 계정에 액세스하거나 중요파일 열람 및 변경 등을 행사할 수 있다.




5. 보안 설정 오류


꾸준한 어플리케이션 업데이트는 중요하다. 이것이 관리자의 측면에서 이루어지지 않는다면 패치되지 않은 취약점으로 공격당할 수 있다. 업데이트 뿐만 아니라 사용하지 않는 페이지, 보호되지 않는 파일이나 디렉토리등도 점검해야한다. 홈페이지 링크가 많아지면 많아질수록 관리하기 힘들어지는데, 이의 경우 자동탐지로 쉽게 잡을 수 있기 때문에 오히려 해커입장에서는 공격이 쉬울 수 있다. 관리자도 이 점을 이용해 빠르게 패치해야한다. 위험수준도 취약점마다 다르지만 종종 시스템을 장악할정도로 위험한 취약점이될 수도 있다.




6. 민감 데이터 노출


이는 대부분 암호화문제인데 민감한 정보를 암호화 하지 않거나 취약한 알고리즘으로 암호화했을 때 발생하는 취약점이다. 이용자 단에서는 해커와 같은 네트워크를 사용한다면 해커에게 세션 쿠키를 탈취당할 수 있다. 여기서 암호화가 안되어있거나 해커가 레인보우테이블을 가지고 있을 때 해커가 민감정보를 열람할 수 있기 때문에 위험하다. 




7. 공격 방어 취약점


알려진 취약점에 대해서 신속한 패치가 이루어지지 않아 발생하는 취약점이다. 취약점에 대해서 탐지하고 대처할 수 있도록 업데이트를 해주어야한다.




8. 크로스 사이트 요청 변조(CSRF)


이는 브라우저에서 세션이 유효한 상태에서 해커의 악의적인 사이트에 접속했을 때 사용자가 공격자가 의도한 행동을 하면 해커가 원하는 동작이 이루어지도록 하는 공격이다. 공격 난이도가 높지 않아서 널리 사용되는 방법중 하나이다. 패턴을 분석해서 해당 행위를 하도록 유도하는 것인데 HTTP 헤더에 있는 Referer를 체크하거나 난수로 이루어진 위조 방지 토큰을 이용해서 방어할 수 있다.




9. 알려진 취약점이 있는 컴포넌트 사용


이또한 최신버전으로 업데이트 하지 않아 발생한다. 개발자가 자신이 개발한 컴포넌트를 최신버전으로 업데이트를 잘 하지 않는 경우가 많다고 한다. 어떤 취약점이 존재하냐에 따라서 그에대한 영향이 크게 달라지기 때문에, CVE와 같은 다양한 취약점들을 보완하도록 업데이트해야한다.



10. 취약한 API


최신 어플리케이션에는 다양한 기능을 제공하다보니 여러 클라이언트 어플리케이션 및 API가 포함된다. 이러한 API가 취약하다면 공격이 발생할 수 있다. 이때 이러한 공격은 작은것부터 큰 영향을 끼치는것 까지 다양하게 일어날 수 있다. 이를 보호하기 위해서는 API에 대한 강력한 인증체계를 갖추어야 하고 승인되지 않은 함수 및 데이터 참조를 포함하여 API가 부적절하게 호출되지 않도록 보호하는 접근 제어 체계를 구현해야한다.




'Study > web' 카테고리의 다른 글

HTTP request Brute Force Attack  (0) 2017.07.27
SQLinjection공격  (0) 2017.07.27
OWASP란?  (0) 2017.07.06
MySQL 주요 명령어 정리  (0) 2017.06.29
APM 구동원리  (0) 2017.06.27