서버 측 코드 주입 (PHP)

설명

대상 애플리케이션은 코드 주입에 취약한 것으로 발견되었습니다. 악의적인 행위자는 서버에서 실행될 임의의 PHP 코드를 주입할 수 있습니다. 이는 저장된 비밀에 접근하거나, 계정을 인수인계하기 위한 코드를 주입하거나, OS 명령을 실행하여 전체 시스템을 손상시킬 수 있습니다.

수정 방법

사용자 입력을 eval과 같이 문자열 데이터를 코드로 평가하는 함수에 직접 전달하지 마세요.

eval에 문자열 값을 전달하는 것에는 거의 이점이 없으므로, 사용자 입력으로 동적으로 평가하는 로직의

현재 로직을 더 안전한 구현으로 대체하는 것이 가장 좋은 권장 사항입니다. 하나의 대안은 array()를 사용하여 예상되는 사용자 입력을 배열 키에 저장하고, 해당 키를 사용하여 함수를 실행하는 것입니다:

$func_to_run = function()
{
    print('hello world');
};

$function_map = array();
$function_map["fn"] = $func_to_run; // 여기에서 추가적인 입력을 함수 매핑으로 저장합니다

$input = "fn";

// "fn"을 키로 조회합니다
if (array_key_exists($input, $function_map)) {
    // "fn" 배열 해시 값에 저장된 $func_to_run을 실행합니다.
    $func = $function_map[$input];
    $func();
} else {
    print('잘못된 입력');
}

세부 정보

ID 집계 CWE 유형 위험
94.1 false 94 Active high

링크