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");
}
============================================================================
위의 코드와 같이 절대 경로를 지정하면 환경 변수에 의하여 라이브러리가 변경되는 것을 방지할 수 있다.
'04. 시큐어코딩' 카테고리의 다른 글
시큐어코딩(25) - Download of Code Without Integrity Check (0) | 2017.11.23 |
---|---|
시큐어코딩(24) - Unsafe Reflection (0) | 2017.11.23 |
시큐어코딩(22) - Improper Neutralization of Script-Related HTML Tags in a Web Page , DOM (0) | 2017.11.22 |
시큐어코딩(21) - Eval Injection (0) | 2017.11.22 |
시큐어코딩(20) - External Control of System or Configuration Setting (0) | 2017.11.22 |