2024. 5. 4. 00:22ㆍProject/Web Application-모의해킹
대응 방안 (feat.주요통신기반시설)
1) 점검 방법
크로스사이트 스크립팅(XSS) 취약점을 점검하는 방법은 다음과 같다.
- 사용자 입력 값을 전달받는 애플리케이션(회원정보 변경, 게시판, 댓글, 자료실 등)에 스크립트 입력 후 실행되는지 확인
- 사용자 입력 값을 전달받는 애플리케이션(검색, URL)에 스크립트 입력 후 실행되는지 확인
2) 보안설정방법
크로스사이트 스크립팅(XSS) 취약점에 대한 대응 방안은 다음과 같다.
- 웹 사이트에 사용자 입력 값이 저장되는 페이지는 공격자가 웹 브라우저를 통해 실행되는 스크립트 언어(HTML, Javascript, VBScript 등)를 사용하여 공격하므로 해당되는 태그 사용을 사전에 제한하고, 사용자 입력 값에 대한 필터링 작업이 필요함
- 게시물의 본문뿐만 아니라 제목, 댓글, 검색어 입력 창, 그 외 사용자 측에서 넘어오는 값을 신뢰하는 모든 form과 파라미터 값에 대해서 필터링을 수행함
- 입력 값에 대한 필터링 로직 구현 시 공백 문자를 제거하는 trim, replace 함수를 사용하여 반드시 서버 측에서 구현되어야 함
- URLDecoder 클래스에 존재하는 decode 메소드를 통해 URL 인코딩이 적용된 사용자 입력 값을 디코딩함으로써 우회 공격 차단
- 웹 방화벽에 모든 사용자 입력 폼(회원정보 변경, 게시판, 댓글, 자료실, 검색, URL 등)을 대상으로 특수문자, 특수 구문 필터링하도록 룰셋 적용
3) 대표적인 대응 방안
- 사용자 입력 값 검증 로직 구현
사용자 입력 값 검증 로직 구현
크로스사이트 스크립팅(XSS) 취약점은 공격자가 사용자 입력 값에 스크립트를 삽입하여 클라이언트 웹 브라우저에서 작동하게 만드는 취약점으로 사용자 입력 값 검증이 미흡하여 생긴다. 검증 로직을 블랙 리스트 기반 필터링 보다는 화이트 리스트 기반 필터링으로 구현하면 보안적으로 더 강력하나 XSS 같은 경우에는 화이트 리스트 기반 필터링을 사용하게 되면 본래 웹 애플리케이션 기능을 정상적으로 사용할 수 없을 가능성이 높다.
그렇기 때문에 XSS 사용자 입력 값 검증 로직은 블랙 리스트 기반 필터링으로 구현을 하게 된다. 그러나 블랙 리스트 기반 필터링으로 구현을 하더라도 리스트에 추가해야 하는 문자 및 단어들이 많기도 하고 그 많은 문자 및 단어들을 필터링 리스트에 추가를 하게 되는 것 또한 본래 웹 애플리케이션 기능을 정상적으로 사용할 수 없을 가능성이 높다. 그래서 XSS 취약점 사용자 입력 값 검증 로직은 특정 문자를 필터링하는 대신 HTML Entity로 치환하는 방법을 주로 사용하게 된다.
*HTML Entity란?
HTML에는 미리 예약된 특정 문자들이 존재하며, 이러한 문자들을 HTML 예약어라고 한다. HTML 예약어를 HTML 코드에서 사용하면, 웹 브라우저는 평소와는 다른 의미로 해석한다. 따라서 HTML 예약어를 기존에 사용하던 의미 그대로 사용하기 위해 별도로 만들어진 문자셋을 Entity라고 한다.
스크립트는 HTML 코드에서 <script>....</script>와 같이 script 태그 사이에 Javascript 함수를 입력하면 작동하는 방식이다. 그렇다는 것은 스크립트를 작동시키는 핵심 특정 문자는 HTML 태그를 구성하는 특정 문자인 '<', '>'와 몇몇 문자들이라는 것을 알 수 있다. 즉, XSS 취약점 사용자 입력 값 검증 로직은 HTML 태그를 구성하는 특정 문자들을 HTML Entity로 치환하는 방식으로 구현을 하는 것이 가장 효과적이라고 볼 수 있다. 치환 대상이 되는 특정 문자들은 다음과 같다.
'Project > Web Application-모의해킹' 카테고리의 다른 글
[Web Application-모의해킹] 크로스사이트 스크립팅(XSS) : 시큐어 코딩(사용자 입력 값 검증 로직 구현) #6-2 (0) | 2024.05.04 |
---|---|
[Web Application-모의해킹] 정보 누출 : 시큐어 코딩(에러 코드에 대한 별도의 에러처리 루틴 설정) #5-3 (0) | 2024.05.01 |
[Web Application-모의해킹] 정보 누출 : 시큐어 코딩(웹 서버 설정 파일 변경) #5-2 (0) | 2024.05.01 |
[Web Application-모의해킹] 정보 누출 : 대응 방안 #5-1 (0) | 2024.05.01 |
[Web Application-모의해킹] 디렉터리 인덱싱 : 시큐어 코딩(웹 서버 설정 파일 변경) #4-3 (0) | 2024.05.01 |