--- tags: - security - vulnerability - poc license: mit --- # ONNX Arbitrary File Read PoC **⚠️ WARNING: Malicious Model - For Security Research Only** This model demonstrates a critical vulnerability: **Arbitrary File Read via External Data Path Traversal**. ## Vulnerability Description The ONNX runtime does not validate the `location` field in `TensorProto.external_data`, allowing malicious models to read arbitrary files from the server's filesystem. ## How It Works 1. The model's tensor has `external_data.location` set to `/etc/passwd` (absolute path) 2. When loaded via `onnxruntime.InferenceSession()`, the runtime reads this file 3. File content is loaded into the tensor data 4. Inference output contains the sensitive file content ## Reproduction ```python import onnxruntime as ort import numpy as np # Load malicious model sess = ort.InferenceSession("file_read_poc.onnx") # Run inference (no input needed) outputs = sess.run(None, {}) # Decode file content file_data = bytes(outputs[0].tolist()) print(file_data.decode('utf-8', errors='ignore')) # Output: root:x:0:0:root:/root:/bin/bash... ``` ## Impact - **Severity**: Critical - **Attack Vector**: Model-as-a-Service (MaaS) platforms - **Affected**: Any system running user-uploaded ONNX models - **Consequences**: - Credential theft (`~/.aws/credentials`, SSH keys) - Source code leakage - Configuration file exposure - System information disclosure ## Remediation 1. Validate `external_data.location` to ensure it's relative and within model directory 2. Reject absolute paths 3. Implement path sandboxing 4. Add `--allow-external-data` flag (disabled by default) ## Responsible Disclosure This PoC is submitted through Huntr's responsible disclosure program. **Category**: MFV (Model File Vulnerability) **Status**: Under Review **Reporter**: Security Researcher