웹 애플리케이션의 일반적인 보안 취약성 종류
크게 일반적인 보안 취약성은 7가지로 나눌수 있다.
1. 인증 취약성
인증은 애플리케이션이 이를 사용하려는 사용자를 식별하는 프로세스이다. 보통 식별된 사용자 데이터를 이용하거나 특별 작업을 수행할 수 있다. 사용자의 고유값(id)를 확인하고나면 권한 부여 프로세스를 시작한다. 인증 취약성은 사용자가 악의를 가지고 다른 사람의 기능이나 데이터에 접근할 수 있다는 의미다.
2. 세션 고정 취약성
세션 고정 취약성이 존재하면 공격자는 이미 생성된 세션id를 재이용하여 유용한 사용자를 가장할 수 있다. 이 취약성은 웹 애플리케이션이 인증 프로세스중에 고유한 세션 id를 할당하지않고 기존 세션 id가 재사용될 가능성이 있을때 발생한다. 이 취약성을 악용하려면 먼저 유효한 세션 id를 획득한 후 의도한 피해자의 브라우저에서 이를 이용하게 해야된다. (세션id를 url에 넣을 수도 있고, 쿠키에 넣을 수도 있다.)
3. 주입 취약성
주입 취약성은 공격자는 시스템의 특정 데이터를 유입하는 취약성이다. 공격의 목표는 시스템에 피해를 주고, 원치 않는 방법으로 데이터를 변경하거나 원래는 접근할 수 없는 데이터를 검색하는 것이다. 주입 공격에는 SQL 주입, XPath 주입, OS 명령 주입, LDAP 주입 등 여러 가지가 있다.
4.XSS (교차 사이트 스크립트)
XSS (교차 사이트 스크립트)는 주압 취약성의 하나로 볼 수 있다. 이는 서버에 노출된 웹 서비스(사이트)로 특정 스크립트를 주입해 다른 사용자가 이를 실생하도록 하는 공격이다. XSS 취약성을 보안하기 위해 특정 데이터를 저장하기전에 요청을 적절하게 '소독'하는 과정이 필요하다. 이런 취약성이 악의되면 계정 가장이나 DDoS 와 같은 분산 공격 참여 등의 결과가 발생할 수 있다. 한 예로 게시글 작성 페이지에서 브라우저에서 실행되는 스크립트 게시를할 수 있게 구현한 것이다.
5. CSRF(사이트 간 요청 위조)
CSRF(Cross-Site Request Forgery, 사이트 간 요청 위조)는 웹 애플리케이션 취약성 중 하나로, 사용자가 의도하지 않은 요청을 실행하게 하여 공격자가 원하는 작업을 수행하도록 하는 공격 방식이다. 한 예로 설명하면 일단 사용자가 웹 애플리케이션에 로그인하여 세션을 유지한다. 그다음으로 사용자가 악의적인 웹사이트나 이메일을 방문하거나 열어보면 악성 사이트는 사용자가 이미 인증된 웹 애플리케이션에 대해 특정 요청을 자동으로 전송하게 하여 개인정보 확득 또는 특정 작업을 수행한다. 이 요청은 사용자가 모르는 사이에 수행된다. 일반적으로 공격자는 CSRF를 이용해 시스템의 데이터를 변경하는 동작을 수행한다.