삶 가운데 남긴 기록 AACII.TISTORY.COM
JAVA 보안 Process Control 본문
Process Control 프로세스 제어
정의
신뢰되지 않는 소스나 환경에서 라이브러리를 적재하거나 명령을 실행하면 악의적인 코드가 실행될 수 있습니다.
방어 방법
라이브러리를 적재할 때 절대 경로를 사용합니다.
안전하지 않은 코드의 예
public void loadLibrary() throws Exception{
//외부 라이브러리 호출 시 절대 경로를 사용하지 않고 있습니다.
Runtime.getRuntime().loadLibrary("libraryName");
}
안전한 코드의 예
public void loadLibrary() throws Exception{
//외부 라이브러리 호출 시 절대 경로를 지정합니다.
Runtime.getRuntime().loadLibrary("/usr/lib/libraryName");
}
안전하지 않은 코드의 예
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String command = request.getParameter("command");
if (command.equals(UPLOAD_library_COMMAND)){
String libraryName = request.getParameter(library_NAME_PARAM);
String additionalOperation = request.getParameter(CONVERT_OPERATION_PARAM);
if(additionalOperation != null){
String [] arguments = new String [1];
arguments[0] = libraryName;
Runtime.getRuntime().exec(additionalOperation, arguments, null);
}
}
}
사용자 입력값을 라이브러리 실행시 인자값으로 사용하고 있습니다.
안전한 코드의 예
public DocService(){
additionalOperations = new Hashtable<String, String>();
additionalOperations.put("Doc", "/LIBRARY/DOC.LIB");
additionalOperations.put("UTF", "/LIBRARY/UTF.LIB");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String command = request.getParameter("command");
if (command.equals(UPLOAD_library_COMMAND)){
String libraryName = request.getParameter(library_NAME_PARAM);
String additionalOperation = request.getParameter(CONVERT_OPERATION_PARAM);
if(additionalOperation != null){
String [] arguments = new String [1];
arguments[0] = libraryName;
Runtime.getRuntime().exec(additionalOperations.get(additionalOperation), arguments, null);
}
}
}
해시테이블을 이용해 정해진 이름의 라이브러리만 절대 경로를 통해 로딩되도록 해야 합니다.
참고
http://cwe.mitre.org/data/definitions/114.html
728x90
'DEV&OPS > Java' 카테고리의 다른 글
JAVA 보안 Download of Code Without Integrity Check (0) | 2022.08.19 |
---|---|
JAVA 보안 Unsafe Reflection (0) | 2022.08.19 |
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 보안 External Control of System or Configuration Setting (0) | 2022.08.17 |