Secure Coding Guide | 경로 조작 및 자원 삽입
정의
검증되지 않은 외부 입력값이 시스템 자원 접근 경로 또는 자원 제어에 사용되는 경우 공격자가 입력값을 조작해 공격할 수 있는 보안약점이다.
영향
공격용 툴을 외부로부터 업로드하거나, 업로드된 툴에 대해 실행 권한 부여 및 관리자 권한을 획득하여 서버 제어 가능해 진다.
원인 및 조치 방법
파라미터로 파일 경로를 입력 받아 파일 시스템에서 검증없이 사용할 경우에 발생한다.
안전하지 않은 코드 일부
public void download(HttpServletRequest request, HttpServletResponse response) throws Exception {
String filepath = request.getParameter("filepath");
if (filepath == null)
return;
filepath= PathUtil.getHome() + "/web/board_attach/" + filepath;
DownloadUtil.download(response, filepath);
}
안전한 코드 일부
public void download(HttpServletRequest request, HttpServletResponse response) throws Exception {
String filepath =request.getParameter("filepath");
if (filepath == null)
return;
filepath = filepath.replaceAll("/","");
filepath = filepath.replaceAll ("\\\\","");
filepath = filepath.replaceAll ("\\.","");
filepath = filepath.replaceAll ("&","");
filepath = PathUtil.getHome() + "/web/board_attach/" + filepath;
DownloadUtil.download(response, filepath);
}
최종 수정 : 2018-05-27