
Доказательство концепции эксплуатации для CVE-2025-32434 — критической RCE в torch.load() из PyTorch, которая обходит weights_only=True через запись в файлы с отображением в память.
CVE-2025-32434 — это критическая уязвимость удаленного выполнения кода (RCE) в PyTorch, широко используемой библиотеке Python для глубокого обучения и нейронных сетей.
Уязвимость существует в функции torch.load(), даже при использовании якобы безопасного параметра weights_only=True. Опция weights_only=True была разработана для предотвращения выполнения кода путем ограничения загрузки только параметрами модели. Однако исследователи нашли способ обойти эту защиту.
| Статус | Версия |
|---|
| Уязвимы | PyTorch 2.5.1 и все более ранние версии |
| Исправлено | PyTorch 2.6.0 и новее |
Неаутентифицированный злоумышленник может создать вредоносный файл модели, который выполняет произвольный код при загрузке жертвой. Атака не требует взаимодействия с пользователем и может привести к полной компрометации системы. Уязвимость использует то, как PyTorch использует сериализацию pickle в Python, позволяя злоумышленникам встраивать вредоносный код в файлы моделей.
Эта уязвимость особенно опасна, поскольку многие разработчики полагаются на weights_only=True как на меру безопасности, но данная уязвимость доказывает, что даже «безопасная» опция недостаточна.
Предоставленный скрипт full.py демонстрирует, как создать вредоносную модель PyTorch, которая записывает данные в файловую систему при загрузке.
torch.from_file() для создания тензора с отображением на память, указывающего на целевой файл cron.# Memory-mapped file writing
t = torch.from_file("/etc/cron.d/rev",
shared=True,
size=len(asciis),
dtype=torch.uint8)
msg = torch.tensor(asciis, dtype=torch.uint8)
t.copy_(msg) # Writes to /etc/cron.d/rev
В этом руководстве приведены пошаговые инструкции по использованию PoC-скрипта для CVE-2025-32434.
Перед началом убедитесь, что у вас есть:
# Install PyTorch (vulnerable version for testing)
pip install torch==2.5.1
pip install torch