Recent Posts
Recent Comments
Link
06-28 05:11
Today
Total
관리 메뉴

삶 가운데 남긴 기록 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:32

External 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

 

CWE - CWE-15: External Control of System or Configuration Setting (4.8)

div.collapseblock { display:inline} CWE-15: External Control of System or Configuration SettingWeakness ID: 15Abstraction: BaseStructure: Simple One or more system settings or configuration elements can be externally controlled by a user. Allowing external

cwe.mitre.org

 

 

 

 

 

 

 

728x90