RequestDispatcher를 통한 파일 노출

File Disclosure via RequestDispatcher

설명

사용자 입력을 직접 getRequestDispatcher()에 전달하면 파일 노출(File Disclosure) 취약점이 발생할 수 있습니다.

HttpRequest.getRequestDispatcher()includeforward 메서드는 웹 애플리케이션 컨텍스트 내에서 해석 가능한 모든 파일을 반환할 수 있습니다. 이로 인해 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