삶 가운데 남긴 기록 AACII.TISTORY.COM
JAVA 보안 External Control of System or Configuration Setting 본문
DEV&OPS/Java
JAVA 보안 External Control of System or Configuration Setting
ALEPH.GEM 2022. 8. 17. 16:32External Control of System or Configuration Setting 시스템 또는 구성 설정의 외부 제어
정의
시스템 설정이나 구성 설정을 외부에서 제어 가능하게 하면 예상치 못하게 악용 가능성이 있습니다.
방어 방법
외부 입력을 화이트 리스트 방식으로 검사한 후 사용합니다.
안전하지 않은 코드의 예
private final String COMMAND_PARAM = "command";
private final String CHANGE_FTP_PORT = "change_service_port";
priavte final String PORT_PARAM = "port";
//생략
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
String command = request.getParameter(COMMAND_PARAM);
//생략
if(command.equals(CHANGE_FTP_PORT)){
//생략
String servicePort = request.getParameter(PORT_PARM);
//생략
servicemanage.changeServicePort(FTP_SERVICE, servicePort);
//생략
}
}
FTP서비스 포트번호를 외부 입력값을 받아서 설정하고 있기 때문에 위험합니다.
안전한 코드의 예
private final String COMMAND_PARAM = "command";
private final String CHANGE_FTP_PORT = "change_service_port";
priavte final String PORT_INDEX_PARAM = "port_index";
private final int DEFAULT_FTP_PORT = 21;
private final int ALTERNATIVE_FTP_PORT = 2121;
//생략
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
String command = request.getParameter(COMMAND_PARAM);
//생략
if(command.equals(CHANGE_FTP_PORT)){
//생략
String servicePortIndex = request.getParameter(PORT_INDEX_PARM);
//생략
if(servicePortIndex == DEFAULT){
servicemanage.changeSerivcePort(FTP_SERVICE, DEFAULT_FTP_PORT);
}else if(servicePortIndex == ALTERNATIVE){
servicemanage.changeSerivcePort(FTP_SERVICE, ALTERNATIVE_FTP_PORT);
}
//생략
}
}
외부 입력 값을 참조하여 미리 설정된 값(상수)만을 사용하여 서비스 포트 번호가 엉뚱한 값으로 바뀌는 것을 막을 수 있습니다.
참고
http://cwe.mitre.org/data/definitions/15.html
728x90
'DEV&OPS > Java' 카테고리의 다른 글
JAVA (javascript)보안 Eval Injection (0) | 2022.08.18 |
---|---|
JAVA 보안 Improper Neutralization of Script-Related HTML Tags in a Web Page (0) | 2022.08.17 |
JAVA 보안 SQL Injection: mybatis Data Map (0) | 2022.08.17 |
JAVA 보안 Reliance on Untrusted Inputs in a SecurityDecision (0) | 2022.08.17 |
JAVA 보안 정수 오버플로우(Integer Overflow) (0) | 2022.08.16 |