티스토리 뷰
가. 취약점 개요
- 개행문자를 포함한 외부입력값이 HTTP 응답헤더에 포함되어 두 번째 응답에 악의적인 코드를 주입하여 XSS 공격을 하는 취약점
→ HTTP 응답분할
- 입력값을 외부 사이트 주소로 이용 시 공격자가 사용자를 피싱 사이트 등의 위험한 URL로 접속 유도하는 취약점
→ 신뢰되지 않은 URL주소로 자동접속 연결
나. 요구사항
1. 외부입력값을 쿠키 및 HTTP 헤더정보로 사용 시 응답분할을 방지하기 위해 필터링 후 사용
2. 외부입력값을 페이지 이동 URL로 사용 시 허용된 URL목록의 선택자로 사용되도록 구현
다. 요구사항 별 고려사항
1. 외부입력값을 쿠키 및 HTTP 헤더정보로 사용 시 응답분할을 방지하기 위해 필터링 후 사용
- HTTP 응답헤더에 삽입되는 외부입력값을 반드시 개행문자(\r\n)를 필터링
- 쿠키값 설정 / 응답헤더 값 설정 / Location 정보 삽입 시 개행문자를 필터링
2. 외부입력값을 페이지 이동 URL로 사용 시 허용된 URL목록의 선택자로 사용되도록 구현
- 허용되는 URL 목록을 소스코드에 하드코딩
- 허용되는 URL목록을 설정파일(XML, Properties)에 저장
라. 요구사항 별 진단기준 및 방법
0. 공통내용
- 요구사항 정의서에 보안요구항목에 대한 대책이 수립
- 아키텍쳐 설계서에 보안요구항목 적용계획이 수립
- 요구사항 추적표를 통해 요구사항 추적가능 여부
1. 외부입력값을 쿠키 및 HTTP 헤더정보로 사용 시 응답분할을 방지하기 위해 필터링 후 사용
- 응답헤더에 값을 쓰는 기능을 식별 (setHeader, addCookie, sendRedirect 등 ) 후 개행문자 필터링 여부 확인
- 입력값이 헤더에 포함되는 모든 기능에 안전하게 적용되었는지 확인
2. 외부입력값을 페이지 이동 URL로 사용 시 허용된 URL목록의 선택자로 사용되도록 구현
- 시스템에서 이동이 허용된 도메인 주소 또는 주소 목록을 정의하는지 확인
- 미리 정의한 허용목록을 이용한 입력값을 검증여부 확인
마. 진단기준
1. 외부입력값을 쿠키 및 HTTP 헤더정보로 사용 시 응답분할을 방지하기 위해 필터링 후 사용
- HTTP 응답분할이 발생하지 않도록 입력값에 대한 검증을 수행하는지 확인
- HTTP 응답분할 취약점을 점검할 수 있는 테스트 계획 확인
2. 외부입력값을 페이지 이동 URL로 사용 시 허용된 URL목록의 선택자로 사용되도록 구현
- 외부입력값을 페이지 이동 URL로 직접 사용 시 오픈 리다이렉트 취약점이 발생하지 않도록 보안설계 되었는지 확인
- 오픈 리다이렉트 취약점을 점검할 수 있는 테스트 계획 확인
바. 안전한 보안설계 예
No | 요구사항 명 | 해결방안 | 검수기준 | |
1 | HTTP 응답분할 취약점 대응 | 응답헤더 구성에 사용되는 외부입력값에 개행 문자열 포함여부를 확인하고 필터링 후 사용 | HTTP 응답분할이 발생하지 않는다. | |
2 | 오픈 리다이렉트 취약점 대응 | 리다이렉트 가능한 도메인과 주소를 미리 정의하고, 정의된 범위내에서만 리다이렉트 되도록 한다. | 허용 목록 밖의 주소로 리다이렉트 되지 않는다. |
'Web Analytics > SW 보안약점 진단원' 카테고리의 다른 글
[설계보안] 입력데이터 검증 및 표현 09 - 보안기능 동작에 사용되는 입력값 검증 (0) | 2019.09.23 |
---|---|
[설계보안] 입력데이터 검증 및 표현 08 - 허용된 범위내 메모리 접근 (0) | 2019.09.22 |
[설계보안] 입력데이터 검증 및 표현 06 - 웹 기반 중요기능 수행요청 유효성 검증 (0) | 2019.09.22 |
[설계보안] 입력데이터 검증 및 표현 05 - 웹 서비스 요청 및 결과 검증 (0) | 2019.09.22 |
[설계보안] 입력데이터 검증 및 표현 04 - 시스템 자원 접근 및 명령어 수행 입력값 검증 (0) | 2019.09.19 |
- Total
- Today
- Yesterday