서버 측 코드 인젝션 (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 활성 높음

링크