본문 바로가기
공부/KISA

HTTP 프로토콜 유효성 검증 - KISA 소프트웨어 개발 보안 가이드

by Skogkatt의 개인 블로그 2020. 7. 10.
반응형

https://www.kisa.or.kr/public/laws/laws3.jsp

 

기술안내서 가이드 < 관련법령·기술안내서 < 자료실 : 한국인터넷진흥원

기술안내서 가이드 한국인터넷진흥원 기술안내서 가이드 입니다. 게시판 목록 보기 기술안내서 가이드 표 대분류 소분류 기술안내서 가이드 대상 수준 인터넷 진흥 및 이용 활성화 인터넷 진흥

www.kisa.or.kr


분석∙설계단계 SW 보안강화 - 설계보안항목 정의 및 설계 시 고려 사항 - HTTP 프로토콜 유효성 검증

설명

  • 비정상적인 HTTP 헤더, 자동연결 URL 링크 등 사용자가 원하지 않은 결과를 생성할 수 있는 HTTP 헤더 및 응답 결과에 대한 유효성 검증방법과 유효하지 않은 값에 대한 처리방법을 설계한다.

설계항목내용

  • 외부 입력값을 쿠키 및 HTTP 헤더 정보로 사용하는 경우, HTTP 응답 분할 취약점을 가지지 않도록 필터링해서 사용해야 한다. 
  • 외부 입력값이 페이지 이동(리다이렉트 또는 포워드)을 위한 URL로 사용되어야 하는 경우, 해당 값은 시스템에서 허용된 URL목록의 선택자로 사용되도록 해야 한다

가. 취약점 개요

사례 1: HTTP 응답 분할
  • 공격자가 HTTP 요청에 삽입한 인자 값이 HTTP 응답 헤더에 포함되어 사용자에게 다시 전달될 때 개행 문자를 이용하여 첫 번째 응답을 종료시키고 두 번째 응답에 악의적인 코드가 주입되어 XSS 공격 등이 가능해진다.
사례 2: 신뢰되지 않은 URL로 자동 접속 연결
  • 사용자의 입력값을 외부 사이트의 주소로 사용하여 자동으로 연결하는 서버 프로그램에서는 공격자가 사용자를 피싱(Phishing) 사이트 등 위험한 URL로 접속하도록 유도할 수 있게 된다.

 

나. 설계 시 고려사항

1. 외부 입력값을 쿠키 및 HTTP 헤더 정보로 사용하는 경우, HTTP 응답 분할 취약점을 가지지 않도록 필터링해서 사용해야 한다.

  • ₩r₩n 문자는 HTTP 응답에서 헤더와 바디를 구분하는 구분자로 사용되기 때문에 HTTP 응답 헤더에 삽입되는 외부 입력값은 반드시 ₩r₩n 문자를 제거하여 사용할 수 있도록 시큐어코딩 규칙을 정의한다.
  • 프로그램에서 Cookie값을 설정하거나, 응답 헤더 값을 설정하거나, 페이지 리다이렉트를 하기 위한 Location정보를 삽입하는 등 응답 헤더에 외부 입력값이 삽입되는 경우, HTTP 응답 분할을 일으킬 수 있는 문자(₩r₩n)를 필터링하도록 검증절차를 적용한다.

2. 외부 입력값이 페이지 이동(리다이렉트 또는 포워드)을 위한 URL로 사용되어야 하는 경우, 해당 값은 시스템에서 허용된 URL목록의 선택자로 사용되도록 해야 한다.

  • 페이지 이동을 허용하는 URL목록을 소스코드에 하드코딩하거나, 설정 파일(XML, properties)에 저장하여 허용된 URL로만 이동할 수 있도록 설계한다.

참고자료

 

 

반응형

댓글