Add README for Joblib memory bomb PoC
Browse filesMinimal public PoC for the verified Joblib NumpyArrayWrapper memory exhaustion report.
README.md
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Joblib `NumpyArrayWrapper` Memory Exhaustion PoC
|
| 2 |
+
|
| 3 |
+
This PoC shows that a tiny file containing a built-in Joblib `NumpyArrayWrapper`
|
| 4 |
+
can make `joblib.load()` attempt a large NumPy allocation on the default load path.
|
| 5 |
+
|
| 6 |
+
What this PoC shows:
|
| 7 |
+
- the issue affects the standard `joblib.load()` path, not only the legacy compatibility loader
|
| 8 |
+
- the crafted file is tiny and contains only Joblib's own wrapper metadata
|
| 9 |
+
- `pickle.load()` of the same file is inert, while `joblib.load()` reconstructs the wrapper and allocates
|
| 10 |
+
|
| 11 |
+
What this PoC does not show:
|
| 12 |
+
- arbitrary code execution
|
| 13 |
+
- filesystem read or write outside the loaded artifact
|
| 14 |
+
- a bypass of Joblib's documented warning that untrusted `joblib.load()` inputs are unsafe
|
| 15 |
+
|
| 16 |
+
Runtime tested:
|
| 17 |
+
- Joblib commit `b030e4e1ed6a227c0e587c31b266c03b3b692372`
|
| 18 |
+
- NumPy `2.3.5`
|
| 19 |
+
- Python `3.14`
|
| 20 |
+
|
| 21 |
+
Run `reproduce.py` to generate the tiny malicious artifact and trigger the allocation attempt.
|