Programming

[Security] OWASP Top 10

JMob 2017. 4. 19. 11:28
728x90
반응형

book : 인터넷 해킹과 보안, (한빛아카데미, 김경곤)

OWASP Top 10


'OWASP'는 'Open Web Application Security Project'의 약자로 2001년에 Mark Curphey와 Dennis Groves 등에 의해 처음 만들어졌다. 이후 2004년에 'OWASP Top 10'이라는 웹 애플리케이션상의 10대 주요 취약전을 발표함으로써 많은 보안 전문가들에게 알려지게 되었다.


다음으론 2010년에 발표된 'OWASP top 10'를 통해 각각을 정리한다.


A1. 인젝션 취약점.


인젝션 취약점은 웹 애플리케이션에서 내부 데이터베이스와 연동하여 결과를 웹 애플리케이션에 노내주는 부분에 주로 발생한다. 예를 들어 로그인 부분이나 우편번호 검색과 같이 사용자가 웹을 통해 입력한 값을 데이터베이스에 있는 값과 비교해서 결과를 웹 애플리케이션에 보낼 때, 공격자는 공격용 데이터를 입력하여 공격자가 의도한 질의문을 만들 수 있다. 이와 같은 인젝션 취약점은 주로 SQL 쿼리문을 대상을 하지만, 이외에 OS, LDAP도 인젝션 취약점에 약용될 수 있다.


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


크로스 사이트 스크립팅은 웹 애플리케이션과 내부 시스템을 직접 공격하는 것이 아닌, 해당 웹 사이트에 방문하는 다른 사용자를 공격하는 기법이다. 공걱자가 크로스 사이트 스크립팅을 이용하면 해당 웹 사이트 방문자의 쿠키나 세션을 추출할 수 있고, 웹 사이트에 방문하는 사용자를 악성 코드가 포함되어 있는 사이트로 리다이렉션 시킬 수도 있다.


A3. 취약한 인증 및 세션 관리.


취약한 인증 및 세션 관리 취약점은 웹 애플리케이션이 보안에 대한 설정을 잘못했을 때 발생한다. 대표적인 설계 결함의 예로는 주로 사용자 아이디와 패스워드를 인증하는 부분이나 관리자 페이지와 같은 특정 사용자만 접근할 수 있는 페이지에 인증 기능을 누락한 경우를 들 수 있다. 또한 인증된 사용자에 대해 쿠키를 발행할 때 쿠키 갑에 사용자 이이디와 같은 부분을 포함한 후 해당 쿠키 내 포함된 아이디만 가지고 인증하는 경우도 매우 취약한 설계다.


A4. 안전하지 않은 직접 객체 참조.


취약한 인증과 유사하지만, 주로 특정 객체를 직접 참조할 때 발생한다. 예를 들어 사용자 계정 정보를 열람하는 URL에 취약점이 존재할 때 공격자는 다음과 같이 해당 URL 뒤에 다른 사용자의 아이디를 입력함으로써 그 사용자의 계정 정보를 볼 수 있다.


ex) http://example.com/app/accountInfo?acct=notmyacct


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


요청 변조(Request Forgery)는 공격자가 입력한 스크립트를 웹 사이트 방문자가 실행함으로써 해당 방문자의 권한으로 스크립트가 실행되도록 만드는 방식이다. 요청 변조 공격은 크게 On-Site 요청 변조와 Cross-Site 요청 변조로 나누어 진다. On-Site 요청 변조는 한 사이트 내에서 요청 변조가 발생하는 취약점이며, CSRF 라고도 불리는 Cross-Site 요청 변조는 웹 사이트에 악성 스크립르틑 입력 한 후 해당 사이트에 방문하는 사용자가 악성 스크립트에 의해 특정 행동을 하도록 만드는 것이다. 에를 들어 개인정보 수정, 회원 탈퇴 등 임의의 행동을 실행하도록 만들 수 있다.


A6. 보안상 잘못된 구성


애플리케이션, 웹 서버, 데이터베이스 서버의 각 플랫폼 보안 구성이 적절하게 정의되어 있고, 필요한 보안 통제들이 잘 설게되고 구현된 경우 보안이 잘 구성되어 잇다고 할 수 있다. 보안상 잘못된 구성은 주로 애플리케이션을 설치하면서 생기는 디폴트 페이들을 삭제하지 않고 방치한 경우나, 디렉터리 리스팅과 같이 애플리케이션 설졍의 오류 또는 최신 보안 패치를 업데이트하지 않은 경우에만 발생한다.


A7. 안전하지 않은 암호 저장.


웹 애플리케이션이 사용자의 패스워드나 주민등록번호, 신용카드 번호 등의 민감함 개인 정보에 쉽게 풀 수 없는 강력한 암호화를 적용하지 않는 경우가 많다. 이런 불상사를 막기 위해서는 모든 암호화 키와 패스워드를 사용자가 쉽게 추측하거나 접근하지 못하도록 보호해야 한다.


A8. URL 접근 제한 실패


대부분의 웹 애플리케이션은 보호된 페이지에 접근하려고 하면 URL 접근 권한을 확인한다. 그런데 웹 애플리케이션은 페이지에 접근이 시도될 때마다 매전 유사한 접근 통제 확인을 해야한다. 공격자가 페이지에 접근하기 위해 URL을 변소 할 수 있기 때문이다.


A9. 불충분한 전송 계층 보호.


웹 애플리케이션은 종종 민감함 데이터가 네트워크로 전송되는 과정에서 비밀성과 무결성을 지키기 위해 다양한 보호 대책을 수립한다. 하지만 이러한 보호 대책을 적용하기 이해 사용하는 알고리즘이 약하거나, 만료된 또는 유효하지 않은 인증서를 사용할 경우 전송 계층을 안전하게 보호하지 못한다. 따라서 사용자 비밀번호 또는 민삼한 개인 정보를 입력받는 경우에는 해당 페이지를 SSL로 암호화하여 전송하도록 해야한다. 


A10. 검증되지 않은 리다이렉트와 포워드


웹 애플리케이션은 종종 방문한 사용자들을 다른 페이지로 리다이렉트하거나 포워드한다. 그러나 목적 페이지를 결정할 때 신뢰되지 않는 데이터를 사용하거나 해당 사이트에 대한 적절한 검증이 없다면, 공격자는 피해자를 피싱 사이트나 악성 코드가 포함된 사이트로 리다이렉트할 수 있고, 포워드를 권한 없는 페이지로의 접근을 위해 사용할 수 있다.



728x90
반응형