Visit Website →

Recent Items

PYSEC-2025-19

Affected: PyPI: picklescan

picklescan before 0.0.22 only considers standard pickle file extensions in the scope for its vulnerability scan. An attacker could craft a malicious model that uses Pickle and include a malicious pickle file with a non-standard file extension. Because the malicious pickle file inclusion is not considered as part of the scope of picklescan, the file would pass security checks and appear to be safe, when it could instead prove to be problematic…

Published on Mon, 03 Mar 2025 19:15:34 +0000

PYSEC-2024-115

Affected: PyPI: langchain-community

A vulnerability in the GraphCypherQAChain class of langchain-ai/langchain-community version 0.2.5 allows for SQL injection through prompt injection. This vulnerability can lead to unauthorized data manipulation, data exfiltration, denial of service (DoS) by deleting all data, breaches in multi-tenant security environments, and data integrity issues. Attackers can create, update, or delete nodes and relationships without proper author…

Published on Tue, 05 Nov 2024 16:04:14 +0000

PYSEC-2026-2946 — PraisonAI: Coarse-Grained Tool Approval Cache Bypasses Per-Invocation Consent for Shell Commands

Affected: PyPI: praisonaiagents

## Summary

The approval system in PraisonAI Agents caches tool approval decisions by tool name only, not by invocation arguments. Once a user approves `execute_command` for any command (e.g., `ls -la`), all subsequent `execute_command` calls in that execution context bypass the approval prompt entirely. Combined with `os.environ.copy()` passing all process environment variables to subprocesses, this allows an LLM agent (potentiall…

Published on Mon, 13 Jul 2026 14:36:52 +0000

PYSEC-2026-4318

Affected: PyPI: nltk

In nltk version 3.9.4, the `nltk.downloader.Downloader._download_package()` function writes downloaded package bytes to disk and may extract them before enforcing SHA-256 or MD5 checksum validation. This allows an attacker to tamper with the package response body for `info.url` through a compromised mirror, malicious proxy, or other source-substitution condition, leading to the installation of attacker-controlled package bytes. The vulnerability ca…

Published on Mon, 03 Aug 2026 08:17:17 +0000

PYSEC-2026-4317 — wger: trainer_login accepts GET - CSRF bypass enables forced session rebinding

Affected: PyPI: wger

### Summary

The `trainer_login` view in wger accepts GET requests and executes `django_login()` without any CSRF protection, because Django's `CsrfViewMiddleware` only enforces tokens on unsafe methods (POST/PUT/PATCH/DELETE). An attacker can embed a single `<img>` tag on a malicious page; when an authenticated trainer loads that page, their browser auto-issues the GET with the session cookie, forcibly rebinding the trainer's s…

Published on Thu, 15 Oct 2026 10:22:46 +0000

PYSEC-2026-4316 — wger: Trainer Privilege Escalation - Improper Privilege Management

Affected: PyPI: wger

### Summary

A user with only the `gym_trainer` permission can deactivate any account in the same gym, including `gym_manager` and `general_gym_manager` accounts. The `UserDeactivateView` grants access to anyone holding **any one** of `gym.manage_gym`, `gym.manage_gyms`, or `gym.gym_trainer` (OR logic via `WgerMultiplePermissionRequiredMixin`), and performs no privilege-hierarchy check to prevent a lower-privileged role from disabling a highe…

Published on Thu, 15 Oct 2026 10:22:47 +0000

PYSEC-2026-4315 — wger: API credentials remain valid after logout/password change

Affected: PyPI: wger

### Summary

A vulnerability exists in the authentication/session lifecycle of `wger` where **bearer-style API credentials** remain valid **after a user logs out and after a user changes their password**. An attacker who steals a victim’s **DRF authtoken** (`Authorization: Token ...`) or **JWT refresh token** can continue to access protected `/api/v2/*` endpoints until the token is manually rotated/deleted (DRF token) or naturally expires (JW…

Published on Thu, 15 Oct 2026 10:22:47 +0000

PYSEC-2026-4314 — wger: Cross-User Data Corruption via Missing Ownership Check on WorkoutLog.slot_entry

Affected: PyPI: wger

### Summary

An authenticated attacker can inject arbitrary workout log entries into any other user's `SlotEntry` by supplying the victim's `slot_entry` ID in a `POST /api/v2/workoutlog/` request. The `slot_entry` foreign key is not included in the ownership verification performed by `WorkoutLogViewSet.get_owner_objects()`, so the server accepts and persists the cross-user reference without error.

Because `SlotEntry.get_config_…

Published on Thu, 15 Oct 2026 10:22:47 +0000

PYSEC-2026-4313 — wger: cross-tenant admin notes/contracts leak via gym=None bypass (5 views)

Affected: PyPI: wger

### Summary

Five gym management views in wger apply a flawed gym-scope guard (`gym_a != gym_b`) that silently passes when both operands are `None`. A trainer with `gym.gym_trainer` and `gym.add_adminusernote` permissions and no gym assignment (`gym=None`) can read private admin notes, uploaded documents, gym contracts, user configuration, and user permission data for **any other unaffiliated user** on the instance. The subsequent querysets f…

Published on Thu, 15 Oct 2026 10:22:46 +0000

PYSEC-2026-4312 — Werkzeug safe_join() allows Windows special device names

Affected: PyPI: werkzeug

Werkzeug's `safe_join` function allows Windows device names as filenames when they have an empty ADS marker on NTFS.

This was previously reported as https://github.com/pallets/werkzeug/security/advisories/GHSA-hgf8-39gv-g3f2, but the added filtering failed to account for the fact Windows allows special device names with an empty ADS marker, such as `NUL:`.

`send_from_directory` uses `safe_join` to safely serve files at user-sp…

Published on Thu, 15 Oct 2026 10:22:46 +0000