RequestDispatcher를 통한 파일 노출
File Disclosure via RequestDispatcher
설명
사용자 입력을 직접 getRequestDispatcher()에 전달하면 파일 노출(File Disclosure) 취약점이 발생할 수 있습니다.
HttpRequest.getRequestDispatcher()의 include 및 forward 메서드는 웹 애플리케이션 컨텍스트 내에서 해석 가능한 모든 파일을 반환할 수 있습니다.
이로 인해 web.xml, 컴파일된 클래스, .jsp 파일 및 기타 JAR/WAR 라이브러리 또한 접근이 가능할 수 있습니다.
잠재적 영향
무단 코드 실행: 공격자가 서버에서 임의의 Java 코드 실행할 수 있습니다. 이를 통해 OS 명령 실행을 통한 서버 장악 가능성도 존재합니다.
정보 유출: 애플리케이션의 내부 경로 및 파일 구조 노출 위험이 있습니다.
서비스 거부(DoS): 악성 명령어를 통해 애플리케이션을 중단시키거나 다운시킬 수 있습니다.
해결 방법
RequestDispatcher에 사용자 입력을 직접 전달하지 않도록 합니다.
가능할 경우 하드코딩된 안전한 경로만 사용하도록 합니다.
Lookup Table을 사용하여 허용된 경로만 접근 가능하도록 제한해야 합니다.
response.sendRedirect()를 이용한 HTTP 리디렉션 적용하도록 합니다.
취약한 코드 및 안전한 코드 예시
취약한 코드
안전한 코드
설명:
취약한 코드:
request.getParameter("file")을 직접RequestDispatcher에 전달하여 공격자가 내부 파일을 포함하거나 전달할 수 있습니다.안전한 코드: Lookup Table을 활용하여 사전에 허용된 페이지 경로만 접근할 수 있도록 제한하며,
response.sendRedirect()를 이용하여 안전하게 페이지 이동 처리하도록 합니다.
관련 CVE
참조
Last updated