본문 바로가기
04. 시큐어코딩

시큐어코딩(23) - Process Control

by 김덕환 2017. 11. 23.
반응형

1. 정의


프로세스 제어 (Process Control)


신뢰되지 않은 소스나 신뢰되지 않은 환경으로부터 라이브러리를 적재하거나 명령을 실행하면, 악의적인 코드가 실행될 수 있다. 



2. 해결방법


- 프로그램 내에서 라이브러리를 적재할 때 절대 경로를 사용한다. 



3. 예제


========================== 안전하지 않은 코드의 예 ==========================


public void loadLibrary() throws SecurityException, UnsatisfiedLinkError, NullPointerException

{

// 외부 라이브러리를 호출 시 절대 경로가 들어 있지 않다.

Runtime.getRuntime().loadLibrary("libraryName");

}


============================================================================


위의 예제는 라이브러리를 지정할 때 절대 경로를 사용하지 않고 있어서 공격자가 환경변수를 조작하면 다른 라이브러리가 적재될 수 있다. 



============================== 안전한 코드의 예 =============================


public void loadLibrary() throws SecurityException, UnsatisfiedLinkError, NullPointerException

{

// 외부 라이브러리 호출 시 절대 경로를 지정한다.

Runtime.getRuntime().loadLibrary("/usr/lib/libraryName");

}


============================================================================


위의 코드와 같이 절대 경로를 지정하면 환경 변수에 의하여 라이브러리가 변경되는 것을 방지할 수 있다. 



반응형