PyTorch:Remote Code Execution über Distributed RPC Framework möglich
Eine schwerwiegende Sicherheitslücke im PyTorch Distributed RPC Framework ermöglicht es Angreifern, beliebigen Code auf Master-Nodes auszuführen. Diese Schwachstelle CVE-2024-5480 betrifft insbesondere Szenarien des verteilten Trainings, bei denen das RPC-Framework verwendet wird.
Das torch.distributed.rpc Framework von PyTorch wird häufig in Anwendungen wie Reinforcement Learning, Modellparallelismus und Parameter-Server-Trainingsframeworks eingesetzt. Das Framework ermöglicht Remote Procedure Calls (RPC) zwischen verschiedenen Knoten in einem verteilten System.
Forscher von huntr.com haben herausgefunden, dass das Framework während der RPC-Aufrufe nicht überprüft, ob die aufgerufene Funktion tatsächlich die erwartete ist. Dies erlaubt es Angreifern, über das Netzwerk RPCs zu initiieren, die Python-Bibliotheksfunktionen wie eval ausführen. Dadurch können Angreifer beliebige Python-Befehle auf dem Master-Knoten ausführen.
Ein Proof-of-Concept zeigt, wie ein Worker-Knoten über rpc.rpc_sync eine unsichere Funktion an den Master-Knoten sendet, die dann deserialisiert und ausgeführt wird. Der folgende Code auf einem Worker demonstriert, wie durch die Schwachstelle das Kommando os.system("id;ifconfig") auf dem Master ausgeführt wird:
import torch.distributed.rpc as rpc
rpc.init_rpc("worker", rank=1, world_size=2)
ret = rpc.rpc_sync("master", eval, args=('__import__("os").system("id;ifconfig")',))
print(ret)
rpc.shutdown()
Durch die Ausnutzung dieser Schwachstelle können Angreifer Kontrolle über den Master-Knoten erlangen, was zu erheblichen Sicherheitsrisiken führt, darunter die unautorisierte Ausführung von Code, der Diebstahl sensibler Daten und die Beeinträchtigung der Integrität und Verfügbarkeit des Systems.