서버 측 코드 인젝션 (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('잘못된 입력')
Details
ID | Aggregated | CWE | Type | Risk |
---|---|---|---|---|
94.3 | false | 94 | Active | high |