| 0 |
| url |
VCID-1ypz-maze-zqhh |
| vulnerability_id |
VCID-1ypz-maze-zqhh |
| summary |
Picklescan vulnerable to Arbitrary File Writing
Picklescan has got open() and shutil in its default dangerous blocklist to prevent arbitrary file overwrites. However the module distutils isnt blocked and can be used for the same purpose ie to write arbitrary files. |
| references |
|
| fixed_packages |
|
| aliases |
GHSA-m273-6v24-x4m4
|
| risk_score |
4.0 |
| exploitability |
0.5 |
| weighted_severity |
8.0 |
| resource_url |
http://public2.vulnerablecode.io/vulnerabilities/VCID-1ypz-maze-zqhh |
|
| 1 |
| url |
VCID-2v14-5pc3-zuez |
| vulnerability_id |
VCID-2v14-5pc3-zuez |
| summary |
Picklescan missing detection when calling numpy.f2py.crackfortran.getlincoef
An unsafe deserialization vulnerability allows an attacker to execute arbitrary code on the host when loading a malicious pickle payload from an untrusted source. |
| references |
|
| fixed_packages |
|
| aliases |
GHSA-r8g5-cgf2-4m4m
|
| risk_score |
4.0 |
| exploitability |
0.5 |
| weighted_severity |
8.0 |
| resource_url |
http://public2.vulnerablecode.io/vulnerabilities/VCID-2v14-5pc3-zuez |
|
| 2 |
| url |
VCID-8msh-r19k-juhx |
| vulnerability_id |
VCID-8msh-r19k-juhx |
| summary |
Picklescan does not block ctypes
Picklescan doesnt flag ctypes module as a dangerous module, which is a huge issue. ctypes is basically a foreign function interface library and can be used to
* Load DLLs
* Call C functions directly
* Manipulate memory raw pointers.
This can allow attackers to achieve RCE by invoking direct syscalls without going through blocked modules. Another major issue that ctypes being allowed presents is that it can be used down the line to dismantle interpreter based python sandboxes as ctypes allow direct access to raw memory.
This is a more severe loophole than normal gadget chains and bypasses as raw memory access can be used for a lot of nefarious purposes down the line if left undetected |
| references |
|
| fixed_packages |
|
| aliases |
GHSA-4675-36f9-wf6r
|
| risk_score |
4.0 |
| exploitability |
0.5 |
| weighted_severity |
8.0 |
| resource_url |
http://public2.vulnerablecode.io/vulnerabilities/VCID-8msh-r19k-juhx |
|
| 3 |
| url |
VCID-8vsp-nth6-cubp |
| vulnerability_id |
VCID-8vsp-nth6-cubp |
| summary |
Picklescan is vulnerable to RCE through missing detection when calling numpy.f2py.crackfortran.myeval
Picklescan uses numpy.f2py.crackfortran.myeval, which is a function in numpy to execute remote pickle files. |
| references |
|
| fixed_packages |
|
| aliases |
GHSA-3329-ghmp-jmv5
|
| risk_score |
4.0 |
| exploitability |
0.5 |
| weighted_severity |
8.0 |
| resource_url |
http://public2.vulnerablecode.io/vulnerabilities/VCID-8vsp-nth6-cubp |
|
| 4 |
| url |
VCID-afab-1ggb-8faa |
| vulnerability_id |
VCID-afab-1ggb-8faa |
| summary |
picklescan has Arbitrary file read using `io.FileIO`
Unsafe pickle deserialization allows unauthenticated attackers to read arbitrary server files and perform SSRF. By chaining io.FileIO and urllib.request.urlopen, an attacker can bypass RCE-focused blocklists to exfiltrate sensitive data (example: /etc/passwd) to an external server. |
| references |
|
| fixed_packages |
|
| aliases |
GHSA-9726-w42j-3qjr
|
| risk_score |
4.0 |
| exploitability |
0.5 |
| weighted_severity |
8.0 |
| resource_url |
http://public2.vulnerablecode.io/vulnerabilities/VCID-afab-1ggb-8faa |
|
| 5 |
| url |
VCID-dz86-5sqp-m3gj |
| vulnerability_id |
VCID-dz86-5sqp-m3gj |
| summary |
PickleScan has multiple stdlib modules with direct RCE not in blocklist
picklescan v1.0.3 (latest) does not block at least 7 Python standard library modules that provide direct arbitrary command execution or code evaluation. A malicious pickle file importing these modules is reported as having 0 issues (CLEAN scan). This enables remote code execution that bypasses picklescan entirely. |
| references |
|
| fixed_packages |
|
| aliases |
GHSA-g38g-8gr9-h9xp
|
| risk_score |
4.5 |
| exploitability |
0.5 |
| weighted_severity |
9.0 |
| resource_url |
http://public2.vulnerablecode.io/vulnerabilities/VCID-dz86-5sqp-m3gj |
|
| 6 |
| url |
VCID-e8b8-zuq1-5fb5 |
| vulnerability_id |
VCID-e8b8-zuq1-5fb5 |
| summary |
Picklescan Bypasses Unsafe Globals Check using pty.spawn
The vulnerability allows malicious actors to bypass PickleScan's unsafe globals check, leading to potential arbitrary code execution. The issue stems from the absence of the `pty` library (more specifically, of the `pty.spawn` function) from PickleScan's list of unsafe globals. This vulnerability allows attackers to disguise malicious pickle payloads within files that would otherwise be scanned for pickle-based threats. |
| references |
|
| fixed_packages |
|
| aliases |
GHSA-hgrh-qx5j-jfwx
|
| risk_score |
4.0 |
| exploitability |
0.5 |
| weighted_severity |
8.0 |
| resource_url |
http://public2.vulnerablecode.io/vulnerabilities/VCID-e8b8-zuq1-5fb5 |
|
| 7 |
| url |
VCID-fa6r-jn3y-4yfb |
| vulnerability_id |
VCID-fa6r-jn3y-4yfb |
| summary |
Picklescan has Incomplete List of Disallowed Inputs
Currently picklescanner only blocks some specific functions of the pydoc and operator modules. Attackers can use other functions within these allowed modules to go through undetected and achieve RCE on the final user. Particularly
* pydoc.locate: Can dynamically resolve and import arbitrary modules (e.g., resolving the string "os" to the actual os module).
* operator.methodcaller: Allows executing a method on an object. When combined with a resolved module object, it can execute functions like system.
Since locate and methodcaller are not explicitly listed in the deny-list, picklescan treats them as "Safe" or "Suspicious" (depending on configuration) but does not flag them as "Dangerous", allowing the malicious file to bypass the security check. |
| references |
|
| fixed_packages |
|
| aliases |
GHSA-84r2-jw7c-4r5q
|
| risk_score |
4.0 |
| exploitability |
0.5 |
| weighted_severity |
8.0 |
| resource_url |
http://public2.vulnerablecode.io/vulnerabilities/VCID-fa6r-jn3y-4yfb |
|
| 8 |
| url |
VCID-ffv8-d2fk-tubb |
| vulnerability_id |
VCID-ffv8-d2fk-tubb |
| summary |
PickleScan's pkgutil.resolve_name has a universal blocklist bypass
`pkgutil.resolve_name()` is a Python stdlib function that resolves any `"module:attribute"` string to the corresponding Python object at runtime. By using `pkgutil.resolve_name` as the first REDUCE call in a pickle, an attacker can obtain a reference to ANY blocked function (e.g., `os.system`, `builtins.exec`, `subprocess.call`) without that function appearing in the pickle's opcodes. picklescan only sees `pkgutil.resolve_name` (which is not blocked) and misses the actual dangerous function entirely.
This defeats picklescan's **entire blocklist concept** — every single entry in `_unsafe_globals` can be bypassed. |
| references |
|
| fixed_packages |
|
| aliases |
GHSA-vvpj-8cmc-gx39
|
| risk_score |
4.5 |
| exploitability |
0.5 |
| weighted_severity |
9.0 |
| resource_url |
http://public2.vulnerablecode.io/vulnerabilities/VCID-ffv8-d2fk-tubb |
|
| 9 |
| url |
VCID-gww1-x3je-q7a2 |
| vulnerability_id |
VCID-gww1-x3je-q7a2 |
| summary |
Picklescan is vulnerable to RCE via missing detection when calling numpy.f2py.crackfortran.param_eval
Picklescan uses numpy.f2py.crackfortran.param_eval, which is a function in numpy to execute remote pickle files. |
| references |
|
| fixed_packages |
|
| aliases |
GHSA-cffc-mxrf-mhh4
|
| risk_score |
3.1 |
| exploitability |
0.5 |
| weighted_severity |
6.2 |
| resource_url |
http://public2.vulnerablecode.io/vulnerabilities/VCID-gww1-x3je-q7a2 |
|
| 10 |
| url |
VCID-h67b-5y6y-xffd |
| vulnerability_id |
VCID-h67b-5y6y-xffd |
| summary |
picklescan vulnerable to arbitrary file create using logging.FileHandler
Unsafe pickle deserialization allows unauthenticated attackers to perform Arbitrary File Creation. By chaining the logging.FileHandler class, an attacker can bypass RCE-focused blocklists to create empty files on the server. The vulnerability allows creating zero-byte files in arbitrary locations but does not permit overwriting or modifying existing files. |
| references |
|
| fixed_packages |
|
| aliases |
GHSA-m7j5-r2p5-c39r
|
| risk_score |
3.1 |
| exploitability |
0.5 |
| weighted_severity |
6.2 |
| resource_url |
http://public2.vulnerablecode.io/vulnerabilities/VCID-h67b-5y6y-xffd |
|
| 11 |
| url |
VCID-h8bj-dvqr-kfet |
| vulnerability_id |
VCID-h8bj-dvqr-kfet |
| summary |
Picklescan is vulnerable to RCE through missing detection when calling numpy.f2py.crackfortran._eval_length
Picklescan uses the `numpy.f2py.crackfortran._eval_length` function (a NumPy F2PY helper) to execute arbitrary Python code during unpickling. |
| references |
|
| fixed_packages |
|
| aliases |
GHSA-6556-fwc2-fg2p
|
| risk_score |
3.1 |
| exploitability |
0.5 |
| weighted_severity |
6.2 |
| resource_url |
http://public2.vulnerablecode.io/vulnerabilities/VCID-h8bj-dvqr-kfet |
|
| 12 |
| url |
VCID-mhm6-27cp-1yhr |
| vulnerability_id |
VCID-mhm6-27cp-1yhr |
| summary |
Picklescan (scan_pytorch) Bypass via dynamic eval MAGIC_NUMBER
This is a scanning bypass to `scan_pytorch` function in `picklescan`. As we can see in the implementation of [get_magic_number()](https://github.com/mmaitre314/picklescan/blob/2a8383cfeb4158567f9770d86597300c9e508d0f/src/picklescan/torch.py#L76C5-L84) that uses `pickletools.genops(data)` to get the `magic_number` with the condition `opcode.name` includes `INT` or `LONG`, but the PyTorch's implemtation simply uses [pickle_module.load()](https://github.com/pytorch/pytorch/blob/134179474539648ba7dee1317959529fbd0e7f89/torch/serialization.py#L1797) to get this `magic_number`. For this implementation difference, we then can embed the `magic_code` into the `PyTorch` file via dynamic `eval` on the `\_\_reduce\_\_` trick, which can make the `pickletools.genops(data)` cannot get the `magic_code` in `INT` or `LONG` type, but the `pickle_module.load()` can still return the same `magic_code`, eading to a bypass. |
| references |
|
| fixed_packages |
|
| aliases |
GHSA-97f8-7cmv-76j2
|
| risk_score |
4.0 |
| exploitability |
0.5 |
| weighted_severity |
8.0 |
| resource_url |
http://public2.vulnerablecode.io/vulnerabilities/VCID-mhm6-27cp-1yhr |
|
| 13 |
| url |
VCID-mp69-7jdd-8yhe |
| vulnerability_id |
VCID-mp69-7jdd-8yhe |
| summary |
Picklescan is vulnerable to RCE via missing detection when calling built-in python _operator.attrgetter
Picklescan uses _operator.attrgetter, which is a built-in python library function to execute remote pickle files. |
| references |
|
| fixed_packages |
|
| aliases |
GHSA-46h3-79wf-xr6c
|
| risk_score |
4.0 |
| exploitability |
0.5 |
| weighted_severity |
8.0 |
| resource_url |
http://public2.vulnerablecode.io/vulnerabilities/VCID-mp69-7jdd-8yhe |
|
| 14 |
| url |
VCID-qy4e-nf4v-kfc2 |
| vulnerability_id |
VCID-qy4e-nf4v-kfc2 |
| summary |
Picklescan is vulnerable to RCE through missing detection when calling built-in python operator.methodcaller
Picklescan uses `operator.methodcaller`, which is a built-in python library function to execute remote pickle files. |
| references |
|
| fixed_packages |
|
| aliases |
GHSA-x843-g5mx-g377
|
| risk_score |
4.0 |
| exploitability |
0.5 |
| weighted_severity |
8.0 |
| resource_url |
http://public2.vulnerablecode.io/vulnerabilities/VCID-qy4e-nf4v-kfc2 |
|
| 15 |
| url |
VCID-r3gk-x182-juf5 |
| vulnerability_id |
VCID-r3gk-x182-juf5 |
| summary |
picklescan missing detection by simple obfuscation of a `builtins.eval` call
An unsafe deserialization vulnerability allows any unauthenticated user to execute arbitrary code on the host loading a pickle payload from an untrusted source. |
| references |
|
| fixed_packages |
|
| aliases |
GHSA-9m3x-qqw2-h32h
|
| risk_score |
4.0 |
| exploitability |
0.5 |
| weighted_severity |
8.0 |
| resource_url |
http://public2.vulnerablecode.io/vulnerabilities/VCID-r3gk-x182-juf5 |
|
| 16 |
| url |
VCID-ray2-m9fg-5kgz |
| vulnerability_id |
VCID-ray2-m9fg-5kgz |
| summary |
Picklescan is vulnerable to RCE via missing detection when calling numpy.f2py.crackfortran.getlincoef
Picklescan uses the `numpy.f2py.crackfortran.getlincoef` function (a NumPy F2PY helper) to execute arbitrary Python code during unpickling. |
| references |
|
| fixed_packages |
|
| aliases |
GHSA-rrxm-2pvv-m66x
|
| risk_score |
4.0 |
| exploitability |
0.5 |
| weighted_severity |
8.0 |
| resource_url |
http://public2.vulnerablecode.io/vulnerabilities/VCID-ray2-m9fg-5kgz |
|
| 17 |
| url |
VCID-sapx-fzv8-pbcw |
| vulnerability_id |
VCID-sapx-fzv8-pbcw |
| summary |
PickleScan's profile.run blocklist mismatch allows exec() bypass
picklescan v1.0.3 blocks `profile.Profile.run` and `profile.Profile.runctx` but does NOT block the module-level `profile.run()` function. A malicious pickle calling `profile.run(statement)` achieves arbitrary code execution via `exec()` while picklescan reports 0 issues. This is because the blocklist entry `"Profile.run"` does not match the pickle global name `"run"`. |
| references |
|
| fixed_packages |
|
| aliases |
GHSA-7wx9-6375-f5wh
|
| risk_score |
4.5 |
| exploitability |
0.5 |
| weighted_severity |
9.0 |
| resource_url |
http://public2.vulnerablecode.io/vulnerabilities/VCID-sapx-fzv8-pbcw |
|
| 18 |
| url |
VCID-sht8-2uh8-eydw |
| vulnerability_id |
VCID-sht8-2uh8-eydw |
| summary |
Picklescan is vulnerable to RCE via missing detection when calling built-in python _operator.methodcaller
Picklescan uses _operator.methodcaller, which is a built-in python library function to execute remote pickle files. |
| references |
|
| fixed_packages |
|
| aliases |
GHSA-955r-x9j8-7rhh
|
| risk_score |
4.0 |
| exploitability |
0.5 |
| weighted_severity |
8.0 |
| resource_url |
http://public2.vulnerablecode.io/vulnerabilities/VCID-sht8-2uh8-eydw |
|
| 19 |
|