Spring ModelAndView를 통한 파일 노출
File Disclosure via Spring ModelAndView
설명
Spring Framework의 org.springframework.web.servlet.ModelAndView 클래스는 특정 뷰를 찾기 위해 뷰 이름을 .jsp 파일과 매핑하여 처리합니다.
이때, 뷰 이름이 사용자 입력으로부터 직접 전달되면, 공격자는 원래 접근할 수 없는 JSP 뷰를 로드하여 민감한 정보에 접근할 수 있습니다.
잠재적 영향
무단 코드 실행: 공격자가 서버에서 임의의 Java 코드 실행할 수 있습니다. 이를 통해 OS 명령 실행을 통한 서버 장악 가능성도 존재합니다.
정보 유출: 애플리케이션의 내부 경로 및 파일 구조 노출 위험이 있습니다.
서비스 거부(DoS): 악성 명령어를 통해 애플리케이션을 중단시키거나 다운시킬 수 있습니다.
해결 방법
ModelAndView 사용자 입력을 직접 전달하지 않도록 합니다.
가능할 경우 하드코딩된 안전한 경로만 사용하도록 합니다.
Lookup Table을 사용하여 허용된 경로만 접근 가능하도록 제한해야 합니다.
response.sendRedirect()를 이용한 HTTP 리디렉션 적용하도록 합니다.
취약한 코드 및 안전한 코드 예시
취약한 코드
안전한 코드
설명:
취약한 코드:
request.getParameter("file")을 직접RequestDispatcher에 전달하여 공격자가 내부 파일을 포함하거나 전달할 수 있습니다.안전한 코드: Lookup Table을 활용하여 사전에 허용된 페이지 경로만 접근할 수 있도록 제한하며,
response.sendRedirect()를 이용하여 안전하게 페이지 이동 처리하도록 합니다.
관련 CVE
참조
Last updated