Whitelisted endpoint passes a parameter to `frappe.render_template` without restricting access via `frappe.only_for`.
Rule Explorer
Search the public rule index by CVE, GHSA, CWE, language, framework, author, or rule slug. Filter by language, framework, severity, confidence, license, and validation status.
- Public rules
- 4797
- Downloads
- 7.4M
- Verified
- 4797
- Authors
- 2
Prompt string is rendered again through a template engine (`load_prompt_from_string`) with parameter values after prior template rendering. This second evaluation can allow Server-Side Template Injection (SSTI) if parameters contain template expressions.
Repeatedly concatenating stream reads to an immutable `bytes` object inside a loop causes quadratic O(N^2) time complexity and excessive memory allocation. Use `bytearray` or a list of chunks instead.
`parse_qs_bytes` is invoked without specifying `max_num_fields`. Parsing URL-encoded bodies or query strings without a field count limit allows an attacker to send payloads with millions of parameters, blocking Tornado's event loop and causing a Denial of Service (CVE-2026-82397). Pass `max_num_fields` to bound parameter parsing.
Route handler parameter `$AUTH` is obtained via `Depends(...)` but is never referenced in the handler body when accessing conversation management services. This indicates a broken object-level authorization (BOLA/IDOR) vulnerability where conversation operations are performed without user ownership validation.
Calling `Email(email)` instantiates a WTForms validator object with the argument as its error message rather than executing field validation. To validate a field manually, instantiate and call the validator with the form and field objects: `Email()(form, form.email)`.
The Resource endpoint fetches user-specific data using a 'user_id' parameter with only basic API authentication ('api_required') and no administrator or role-based access control decorator, potentially exposing sensitive data to IDOR/broken access control.
Argon2 KDF cost parameters (such as memory_cost) are passed directly to key derivation without prior upper-bound validation. If derived from untrusted files or configuration, an excessively high memory_cost can lead to an out-of-memory denial of service.
The plugin signature verification policy defaults or falls back to WARN instead of ENFORCE. This allows unsigned or unverifiable third-party plugins to be loaded and executed without cryptographic verification.
Unrecognized flat KDF configuration keys (such as 'argon2_time_cost' or 'sha512_iterations') are assigned to hash_config. In crypt_core, these flat keys are ignored while defeating default template fallbacks, collapsing password key derivation to single unstretched SHA-256 (CWE-916).
Decryption function accepts embedded post-quantum private key from file metadata without verifying if the key is encrypted (CWE-287).
Comparing claimed or stored `fingerprint` attributes directly instead of recomputing the cryptographic fingerprint from the actual public key material allows key substitution attacks when metadata is untrusted or tampered with.
Trust or verification function uses a denylist to reject untrusted paths and defaults to returning True. This fail-open approach allows files in unexpected or root directories to bypass security checks. Use an allowlist instead.
Envelope decryption recovery slots from untrusted metadata are processed without validating against a maximum slot count limit. An attacker can supply a crafted file with numerous recovery slots to cause pre-authentication CPU and memory exhaustion (DoS).
Sensitive credentials or authentication requests are transmitted to a caller-supplied server URL without validating that HTTPS is enforced and the target host is on an allowlist of configured servers.
Using `Path.rglob()` for file integrity verification or manifest creation does not descend into symlinked directories and can allow planted files beneath symlinks to evade detection. Enumerate the directory tree using `os.walk(..., followlinks=False)` and explicitly validate or reject symlinks using `os.path.islink()`.
Storing an unkeyed plaintext hash (such as 'original_hash' or 'plaintext_hash') in metadata headers allows offline plaintext confirmation and cross-file correlation without the decryption key.
The D-Bus Properties.Set method is defined without specifying `sender_keyword` in `@dbus.service.method`. Without the caller's sender identifier, the service cannot perform caller authentication or authorization (such as polkit checks), allowing unauthorized users on the bus to mutate sensitive service properties.
Pandoc is invoked with a TeX/LaTeX PDF engine without explicitly disabling shell escape via '--pdf-engine-opt=-no-shell-escape'. Untrusted input containing TeX commands or LaTeX macros could execute arbitrary commands or read sensitive local files during PDF compilation.
Including 'getattr' or 'setattr' in a whitelist of safe builtins or allowed functions for sandboxed Python execution allows callers to bypass AST-level restrictions and access dangerous attributes or class hierarchies.
Unbounded string splitting on '.' when parsing compact JWE/JWS/JWT tokens can allow a remote attacker to trigger excessive memory allocation (MemoryError DoS) by providing numerous delimiter characters. Specify a maxsplit argument to split (e.g., `split('.', 5)`).
Use of `ssl._create_unverified_context()` disables TLS certificate verification and hostname checks, making HTTPS connections vulnerable to Man-in-the-Middle (MITM) attacks.
Custom `pickle.Unpickler.find_class` delegates to `super().find_class` without validating against dotted names (`.` in `name`). Under pickle protocol 4+, `find_class` resolves dotted names via `getattr` chaining, allowing an attacker to bypass module-level allowlists to access dangerous attributes or submodules.
Proxied request omits SSRF IP-pinning handlers without failing closed or verifying proxy trust, allowing SSRF (CWE-918).