서버 측 코드 주입 (Python)

설명

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

해결 방법

사용자의 입력을 eval 또는 exec와 같이 문자열 데이터를 코드로 평가하는 함수에 직접 전달하지 마세요. 이러한 메서드에 문자열 값을 전달하는 것에는 거의 이점이 없으므로, 현재 로직을 사용자 입력으로 동적으로 평가하는 보다 안전한 구현으로 교체하는 것이 가장 좋습니다. 하나의 대안은 함수나 메서드를 해시맵에 저장하고, 키를 사용하여 조회할 수 있도록 하는 것입니다. 키가 존재하는 경우, 해당 함수를 실행할 수 있습니다.

def func_to_run():
    print('hello world')

function_map = {'fn': func_to_run}

input = 'fn'

if input in function_map:
    function_map[input]()
else:
    print('invalid input')

세부 정보

ID 집계 CWE 유형 위험
94.3 false 94 Active 높음

링크