분류: 입력데이터 검증 및 표현 / HTTP 응답분할, 신뢰되지 않는 URL 주소로 자동접속 연결
가. 항목명
HTTP 프로토콜 유효성 검증
나. 취약점 설명
HTTP 요청에 삽입한 인자 값이 HTTP 응답헤더에 포함되어 전달될 때 개행문자를 이용하여 첫 번째 응답을 종료시키고 두 번째 응답에 악의적인 코드가 주입되어 XS공격이 가능해지는 취약점
다. 보안대책
① 외부입력값을 쿠기 및 HTTP 헤더정보로 사용하는 경우 HTTP 응답분할 취약점을 가지지 않도록 필터링
② 외부입력 값이 페이지 이동(리다이렉트 및 포워드)을 위한 URL 으로 사용되는 경우 허용된 URL 목록의 선택자료 사용
라. 설계시 고려사항
① 외부입력 값을 쿠키 및 HTTP 헤더정보로 사용하는경우 HTTP 응답분할 취약점 공격이 가능함
- HTTP 응답 헤더에 삽입되는 외부입력 값은 반드시 \r\n 문자를 제거하여 사용
② 외부입력 값이 페이지 이동(리다이렉트 및 포워드)을 위한 URL 로 사용되는 경우
- URL 목록을 소스코드에 하드코딩 하거나 설정파일(XML, properties) 에 저장하여 허용된 URL로만 이동하도록 설계
마. 진단기준 및 세부사항
① HTTP 응답분할 취약점 대응
- 응답헤더에 값을 쓰는 기능이 식별되고 입력값에 포함된 개행문자를 필터링
- 응답헤더에 값을 쓰는 함수 ( setHeader, addCookie, sen-dRedirect..)
- 개행문자 CR(\r), LF(\n)
- 개행문자에 대한 필터링 적용
- 응답 분할이 발생되는지 점검할 수 있는 테스트 계획
- 테스트 입력 값: CR(\r), LF(\n) 이 포함된 입력 값
- 응답 분할이 발생되는지 점검할 수 있는 테스트 계획
② 외부입력 값이 페이지 이동(리다이렉트 및 포워드)을 URL로 사용하는 경우 대응
- 시스템에서 이동이 허용된 도메인 또는 주소 목록을 정의
- 미리 정의한 허용 목록을 이용한 입력 값을 검증하는 방법과 모듈 설계
바. 안전한 보안설계의 예
No | 요구사항명 | 해결방안 | 검수기준 | 비고 |
1 | DB사용자 계정에 최소권한 부여 | 애플리케이션에서 사용하는 DB 사용자 계정은 애플리케이션에서 사용하는 테이블, 뷰, 프로시저에 대해서만 사용권한을 부여한다 | 애플리케이션에서 사용하는 DB사용자 계정은 테이블, 뷰, 프로시저에 대한 권한만 적용된다. | 지속적인 DB사용자 계정 관리가 필요 |
'보안 > SW보안약점 진단원' 카테고리의 다른 글
[설계보안] 보안기능-입력값 검증 (0) | 2022.06.24 |
---|---|
[설계보안] 허용된 범위내 메모리 접근 (0) | 2022.06.24 |
[설계보안] 웹 기반 중요 기능 수행 요청 유효성 검증 (0) | 2022.06.23 |
[설계보안] 웹 서비스 요청 및 결과 검증 (0) | 2022.06.22 |
[설계보안] 시스템 자원 접근 및 명령어 수행 입력값 검증 (0) | 2022.06.22 |