Skip to main content

QWED Security rule catalog

Generated from scan_rules.py at rule set qwed-security-ruleset/5. Every rule ID used in a QWED annotation anchors here as #<rule-id>. This page intentionally contains live trip strings. Findings on it are covered by narrowly scoped base-branch policy entries (see .qwed.yml) — NOT by inline markers: on introduced lines the pipeline voids inline suppression comments as self-suppression, and a voided inline marker then shadows the policy entry that would otherwise apply. Never add qwed-ignore to generated trip lines.

Policy: non-downgradable categories

These categories are never downgraded to INFO for sitting in a non-executable context (comment, docstring, test, demo):

Rule reference

eval-call

Engine pattern_scan · category dynamic_execution · base action BLOCK · source: PATTERN_RULES eval() executes untrusted code. In agentic pipelines, LLM- or caller-controlled expressions reach this sink.
Trips:
Passes:

exec-call

Engine pattern_scan · category dynamic_execution · base action BLOCK · source: PATTERN_RULES exec() executes untrusted code. In agentic pipelines, LLM- or caller-controlled expressions reach this sink.
Trips:
Passes:

dynamic-import

Engine pattern_scan · category dynamic_import · base action WARNING · source: PATTERN_RULES Dynamic import() call should be reviewed.
Trips:
Passes:

compile-call

Engine pattern_scan · category code_generation · base action WARNING · source: PATTERN_RULES compile() can be part of dynamic code generation.
Trips:
Passes:

os-system

Engine pattern_scan · category shell_execution · base action BLOCK · source: PATTERN_RULES os.system() shell execution primitive detected.
Trips:
Passes:

subprocess-call

Engine pattern_scan · category external_process · base action WARNING · source: PATTERN_RULES subprocess invocation detected.
Trips:
Passes:

os-popen

Engine pattern_scan · category shell_execution · base action BLOCK · source: PATTERN_RULES os.popen() shell execution primitive detected.
Trips:
Passes:

path-traversal

Engine pattern_scan · category path_traversal · base action BLOCK · source: PATTERN_RULES Path traversal sequence detected.
Trips:
Passes:

hardcoded-secret

Engine pattern_scan · category secret_exposure · base action BLOCK · source: PATTERN_RULES Hardcoded credential-like material detected.
Trips:
Passes:

hardcoded-secret-dict

Engine pattern_scan · category secret_exposure · base action BLOCK · source: PATTERN_RULES Hardcoded credential-like material in dictionary/config literal detected.
Trips:
Passes:

url-embedded-credential

Engine pattern_scan · category secret_exposure · base action BLOCK · source: PATTERN_RULES Credential embedded in URL userinfo (user:pass@) — the value is a connection string, not a reference.
Trips:
Passes:

url-query-credential

Engine pattern_scan · category secret_exposure · base action BLOCK · source: PATTERN_RULES Credential in URL query or fragment parameter (?token=…, #password=…).
Trips:
Passes:

url-unknown-param-credential

Engine pattern_scan · category secret_exposure · base action BLOCK · source: PATTERN_RULES Credential-shaped value on an unknown URL parameter — unknown names with key-material values are secrets.
Trips:
Passes:

url-path-credential

Engine pattern_scan · category secret_exposure · base action BLOCK · source: PATTERN_RULES Credential material embedded in URL path segment (/bearer/<token>, /reset/<secret>).
Trips:
Passes:

openai-secret

Engine pattern_scan · category secret_exposure · base action BLOCK · source: PATTERN_RULES OpenAI-style secret token detected.
Trips:
Passes:

github-secret

Engine pattern_scan · category secret_exposure · base action BLOCK · source: PATTERN_RULES GitHub token-like secret detected.
Trips:
Passes:

github-fine-grained-pat

Engine pattern_scan · category secret_exposure · base action BLOCK · source: PATTERN_RULES GitHub fine-grained personal access token detected.
Trips:
Passes:

github-oauth-token

Engine pattern_scan · category secret_exposure · base action BLOCK · source: PATTERN_RULES GitHub OAuth/server-to-server token detected.
Trips:
Passes:

gitlab-pat

Engine pattern_scan · category secret_exposure · base action BLOCK · source: PATTERN_RULES GitLab personal access token detected.
Trips:
Passes:

slack-token

Engine pattern_scan · category secret_exposure · base action BLOCK · source: PATTERN_RULES Slack token detected.
Trips:
Passes:

stripe-live-key

Engine pattern_scan · category secret_exposure · base action BLOCK · source: PATTERN_RULES Stripe live secret key detected.
Trips:
Passes:

anthropic-key

Engine pattern_scan · category secret_exposure · base action BLOCK · source: PATTERN_RULES Anthropic API key detected.
Trips:
Passes:

google-api-key

Engine pattern_scan · category secret_exposure · base action BLOCK · source: PATTERN_RULES Google API key detected.
Trips:
Passes:

jwt-token

Engine pattern_scan · category secret_exposure · base action WARNING · source: PATTERN_RULES JWT-like token detected; verify it is not a live credential.
Trips:
Passes:

aws-secret

Engine pattern_scan · category secret_exposure · base action BLOCK · source: PATTERN_RULES AWS access-key-like secret detected.
Trips:
Passes:

private-key-block

Engine pattern_scan · category secret_exposure · base action BLOCK · source: PATTERN_RULES Private key material detected — a committed PEM/DER key block is a credential, whatever the file’s name or extension.
Trips:
Passes:

sql-fstring-select

Engine pattern_scan · category sql_injection · base action WARNING · source: PATTERN_RULES Potential SQL query interpolation via f-string.
Trips:
Passes:

sql-fstring-insert

Engine pattern_scan · category sql_injection · base action WARNING · source: PATTERN_RULES Potential SQL query interpolation via f-string.
Trips:
Passes:

sql-fstring-delete

Engine pattern_scan · category sql_injection · base action WARNING · source: PATTERN_RULES Potential SQL query interpolation via f-string.
Trips:
Passes:

sql-fstring-update

Engine pattern_scan · category sql_injection · base action WARNING · source: PATTERN_RULES Potential SQL query interpolation via f-string.
Trips:
Passes:

pickle-load

Engine pattern_scan · category unsafe_deserialization · base action BLOCK · source: PATTERN_RULES pickle deserialization executes embedded code — treat pickle input as code execution, especially in agent pipelines.
Trips:
Passes:

yaml-load

Engine pattern_scan · category unsafe_deserialization · base action WARNING · source: PATTERN_RULES yaml.load without an explicit Loader is unsafe — and raises TypeError on PyYAML >= 6.0.1. Use yaml.safe_load.
Trips:
Passes:

marshal-load

Engine pattern_scan · category unsafe_deserialization · base action BLOCK · source: PATTERN_RULES marshal deserialization can execute untrusted state.
Trips:
Passes:

shelve-open

Engine pattern_scan · category unsafe_deserialization · base action WARNING · source: PATTERN_RULES shelve uses pickle under the hood and needs trust review.
Trips:
Passes:

bind-all-interfaces

Engine pattern_scan · category network_binding · base action WARNING · source: PATTERN_RULES Binding to 0.0.0.0 exposes the service broadly.
Trips:
Passes:

weak-random

Engine pattern_scan · category insecure_random · base action WARNING · source: PATTERN_RULES Non-cryptographic random usage detected.
Trips:
Passes:

mktemp

Engine pattern_scan · category insecure_tempfile · base action WARNING · source: PATTERN_RULES tempfile.mktemp() is vulnerable to race conditions.
Trips:
Passes:

assert-validation

Engine pattern_scan · category weak_assert_validation · base action WARNING · source: PATTERN_RULES assert should not be the only input-validation boundary.
Trips:
Passes:

config-password

Engine secret_scan · category secret_exposure · base action BLOCK · source: SECRET_RULES Password-like secret found in configuration.
Trips:
Passes:

config-secret

Engine secret_scan · category secret_exposure · base action BLOCK · source: SECRET_RULES Secret-like material found in configuration.
Trips:
Passes:

config-private-key

Engine secret_scan · category secret_exposure · base action BLOCK · source: SECRET_RULES Private key material found in configuration.
Trips:
Passes:

config-db-creds

Engine secret_scan · category secret_exposure · base action BLOCK · source: SECRET_RULES Database URL contains embedded credentials.
Trips:
Passes:

config-github-pat

Engine secret_scan · category secret_exposure · base action BLOCK · source: SECRET_RULES GitHub fine-grained personal access token in configuration.
Trips:
Passes:

config-gitlab-pat

Engine secret_scan · category secret_exposure · base action BLOCK · source: SECRET_RULES GitLab personal access token in configuration.
Trips:
Passes:

config-slack-token

Engine secret_scan · category secret_exposure · base action BLOCK · source: SECRET_RULES Slack token in configuration.
Trips:
Passes:

config-stripe-live

Engine secret_scan · category secret_exposure · base action BLOCK · source: SECRET_RULES Stripe live secret key in configuration.
Trips:
Passes:

fail-open-guard

Engine verification_integrity · category fail_open · base action WARNING · source: VERIFICATION_INTEGRITY_RULES Multi-condition guard may be implicitly fail-open: if a middle field is None/missing, the entire check is skipped. Prefer checking each field independently.
Trips:
Passes:

exception-info-leak

Engine verification_integrity · category information_disclosure · base action WARNING · source: VERIFICATION_INTEGRITY_RULES str(exc) may leak internal stack traces, file paths, or credentials to API clients. Use a sanitized error message instead.
Trips:
Passes:

empty-except-pass

Engine verification_integrity · category error_suppression · base action WARNING · source: VERIFICATION_INTEGRITY_RULES Empty except block silently swallows errors. This can hide security failures and verification boundary violations.
Known engine gap: the live pattern scanner matches line-by-line, so this multi-line shape is currently undetectable in production (tracked in issue #88). The trip below documents the rule definition, not a live detection.
Trips:
Passes:

codeguard-getattr-builtins

Engine codeguard · category dynamic_execution · base action BLOCK · source: CODEGUARD_RULES getattr() on builtins enables sandbox escape and hidden code execution. Note: builtins is a dict at module scope, a module in main — both forms signal evasion.
Trips:
Passes:

codeguard-builtins-dict

Engine codeguard · category dynamic_execution · base action BLOCK · source: CODEGUARD_RULES Direct builtins.dict access enables hidden function lookup.
Trips:
Passes:

codeguard-b64-payload

Engine codeguard · category obfuscation · base action WARNING · source: CODEGUARD_RULES base64-decoded payload detected; decoded content is unscannable and requires review.
Trips:
Passes:

codeguard-chr-obfuscation

Engine codeguard · category obfuscation · base action WARNING · source: CODEGUARD_RULES chr() string concatenation is a common obfuscation technique.
Trips:
Passes:

curl-pipe-shell

Engine shell_safety · category shell_execution · base action BLOCK · source: SHELL_RULES Pipe-to-shell pattern detected.
Trips:
Passes:

wget-pipe-shell

Engine shell_safety · category shell_execution · base action BLOCK · source: SHELL_RULES Pipe-to-shell pattern detected.
Trips:
Passes:

chmod-777

Engine shell_safety · category permission_broadening · base action WARNING · source: SHELL_RULES chmod 777 grants overly broad permissions.
Trips:
Passes:

chmod-setuid

Engine shell_safety · category privilege_escalation · base action BLOCK · source: SHELL_RULES setuid bit can introduce privilege-escalation paths.
Trips:
Passes:

dd-disk-write

Engine shell_safety · category disk_write · base action BLOCK · source: SHELL_RULES Direct disk write detected.
Trips:
Passes:

js-eval

Engine js_patterns · category dynamic_execution · base action BLOCK · source: JS_PATTERN_RULES DYNAMIC_EXECUTION_BOUNDARY violation: eval in JavaScript enables arbitrary code execution.
Trips:
Passes:

js-innerhtml

Engine js_patterns · category xss · base action BLOCK · source: JS_PATTERN_RULES XSS_BOUNDARY violation: innerHTML assignment enables XSS attacks.
Trips:
Passes:

js-document-write

Engine js_patterns · category xss · base action WARNING · source: JS_PATTERN_RULES XSS_BOUNDARY violation: document.write can introduce XSS.
Trips:
Passes:

js-dangerously-set

Engine js_patterns · category xss · base action BLOCK · source: JS_PATTERN_RULES XSS_BOUNDARY violation: React dangerouslySetInnerHTML bypasses XSS protection.
Trips:
Passes:

js-proto-pollution

Engine js_patterns · category prototype_pollution · base action BLOCK · source: JS_PATTERN_RULES PROTOTYPE_POLLUTION_BOUNDARY violation: prototype pollution vector detected.
Trips:
Passes:

js-constructor-proto

Engine js_patterns · category prototype_pollution · base action WARNING · source: JS_PATTERN_RULES PROTOTYPE_POLLUTION_BOUNDARY violation: prototype pollution via constructor.
Trips:
Passes:

js-new-function

Engine js_patterns · category dynamic_execution · base action BLOCK · source: JS_PATTERN_RULES DYNAMIC_EXECUTION_BOUNDARY violation: new Function is equivalent to eval.
Trips:
Passes:

js-settimeout-string

Engine js_patterns · category dynamic_execution · base action WARNING · source: JS_PATTERN_RULES setTimeout with a string arg evaluates code (and throws TypeError in Node.js — pass a function callback).
Trips:
Passes:

js-setinterval-string

Engine js_patterns · category dynamic_execution · base action WARNING · source: JS_PATTERN_RULES DYNAMIC_EXECUTION_BOUNDARY violation: setInterval with string arg executes code.
Trips:
Passes:

js-child-process

Engine js_patterns · category shell_execution · base action WARNING · source: JS_PATTERN_RULES SHELL_EXECUTION_BOUNDARY violation: child_process module enables shell execution.
Trips:
Passes:

js-exec-concat

Engine js_patterns · category shell_execution · base action BLOCK · source: JS_PATTERN_RULES child_process exec with string concatenation or template interpolation enables command injection.
Trips:
Passes:

js-require-fs

Engine js_patterns · category path_traversal · base action WARNING · source: JS_PATTERN_RULES PATH_TRAVERSAL_BOUNDARY violation: direct fs require enables file system access.
Trips:
Passes:

go-exec-shell

Engine go_patterns · category shell_execution · base action BLOCK · source: GO_PATTERN_RULES SHELL_EXECUTION_BOUNDARY violation: exec.Command invoking a shell interpreter enables command injection.
Trips:
Passes:

go-exec-command

Engine go_patterns · category external_process · base action WARNING · source: GO_PATTERN_RULES EXTERNAL_PROCESS_BOUNDARY: exec.Command launches an external process; verify arguments are not attacker-controlled.
Trips:
Passes:

go-unsafe-import

Engine go_patterns · category low_level_module · base action WARNING · source: GO_PATTERN_RULES LOW_LEVEL_BOUNDARY: importing “unsafe” disables Go type-safety guarantees.
Trips:
Passes:

go-unsafe-pointer

Engine go_patterns · category low_level_module · base action WARNING · source: GO_PATTERN_RULES LOW_LEVEL_BOUNDARY: unsafe.Pointer bypasses type safety; requires memory-safety review.
Trips:
Passes:

go-sql-concat

Engine go_patterns · category sql_injection · base action WARNING · source: GO_PATTERN_RULES SQL_INJECTION_BOUNDARY: SQL built by string concatenation; use parameterized queries.
Trips:
Passes:

go-sql-sprintf

Engine go_patterns · category sql_injection · base action WARNING · source: GO_PATTERN_RULES SQL_INJECTION_BOUNDARY: SQL built with fmt.Sprintf; use parameterized queries.
Trips:
Passes:

go-tls-skip-verify

Engine go_patterns · category network_binding · base action BLOCK · source: GO_PATTERN_RULES NETWORK_BOUNDARY: TLS certificate verification disabled; enables man-in-the-middle attacks.
Trips:
Passes:

go-weak-md5

Engine go_patterns · category insecure_random · base action WARNING · source: GO_PATTERN_RULES MD5 is cryptographically broken; use SHA-256 or stronger for security purposes.
Trips:
Passes:

go-weak-sha1

Engine go_patterns · category insecure_random · base action WARNING · source: GO_PATTERN_RULES SHA-1 is cryptographically weak; use SHA-256 or stronger for security purposes.
Trips:
Passes:

go-template-html

Engine go_patterns · category xss · base action WARNING · source: GO_PATTERN_RULES XSS_BOUNDARY: template.HTML marks content as safe and bypasses auto-escaping; verify it is not user-controlled.
Trips:
Passes:

go-hardcoded-secret

Engine go_patterns · category secret_exposure · base action BLOCK · source: GO_PATTERN_RULES SECRET_EXPOSURE_BOUNDARY: hardcoded credential-like material detected.
Trips:
Passes:

rust-unsafe-block

Engine rust_patterns · category low_level_module · base action WARNING · source: RUST_PATTERN_RULES LOW_LEVEL_BOUNDARY: unsafe block disables Rust memory-safety guarantees; audit for UB.
Trips:
Passes:

rust-unsafe-fn

Engine rust_patterns · category low_level_module · base action WARNING · source: RUST_PATTERN_RULES LOW_LEVEL_BOUNDARY: unsafe fn/impl/trait shifts safety proof obligations to every caller.
Trips:
Passes:

rust-command-shell

Engine rust_patterns · category shell_execution · base action BLOCK · source: RUST_PATTERN_RULES SHELL_EXECUTION_BOUNDARY violation: Command::new invoking a shell interpreter enables command injection.
Trips:
Passes:

rust-command

Engine rust_patterns · category external_process · base action WARNING · source: RUST_PATTERN_RULES EXTERNAL_PROCESS_BOUNDARY: Command::new launches an external process; verify arguments are not attacker-controlled.
Trips:
Passes:

rust-transmute

Engine rust_patterns · category low_level_module · base action WARNING · source: RUST_PATTERN_RULES LOW_LEVEL_BOUNDARY: mem::transmute reinterprets memory across types; requires unsafe and careful review.
Trips:
Passes:

rust-sql-format

Engine rust_patterns · category sql_injection · base action WARNING · source: RUST_PATTERN_RULES SQL_INJECTION_BOUNDARY: SQL built with format!; use parameterized queries.
Trips:
Passes:

rust-sql-concat

Engine rust_patterns · category sql_injection · base action WARNING · source: RUST_PATTERN_RULES SQL_INJECTION_BOUNDARY: SQL built by string concatenation; use parameterized queries.
Trips:
Passes:

rust-weak-md5

Engine rust_patterns · category insecure_random · base action WARNING · source: RUST_PATTERN_RULES MD5 is cryptographically broken; use SHA-256 or stronger for security purposes.
Trips:
Passes:

rust-weak-sha1

Engine rust_patterns · category insecure_random · base action WARNING · source: RUST_PATTERN_RULES SHA-1 is cryptographically weak; use SHA-256 or stronger for security purposes.
Trips:
Passes:

rust-deref-raw

Engine rust_patterns · category low_level_module · base action WARNING · source: RUST_PATTERN_RULES LOW_LEVEL_BOUNDARY: raw pointer operation; requires unsafe and memory-safety review.
Trips:
Passes:

rust-hardcoded-secret

Engine rust_patterns · category secret_exposure · base action BLOCK · source: RUST_PATTERN_RULES SECRET_EXPOSURE_BOUNDARY: hardcoded credential-like material detected.
Trips:
Passes:

docker-run-root

Engine docker_scan · category privilege_escalation · base action WARNING · source: DOCKER_RULES PRIVILEGE_ESCALATION_BOUNDARY violation: container runs as root user.
Trips:
Passes:

docker-latest-tag

Engine docker_scan · category supply_chain · base action WARNING · source: DOCKER_RULES SUPPLY_CHAIN_BOUNDARY violation: using :latest tag, pin to specific version.
Trips:
Passes:

docker-malformed-from

Engine docker_scan · category supply_chain · base action WARNING · source: DOCKER_RULES Malformed FROM reference: multiple tags in one image line. Use a single tag or a digest.
Trips:
Passes:

docker-add-remote

Engine docker_scan · category supply_chain · base action BLOCK · source: DOCKER_RULES SUPPLY_CHAIN_BOUNDARY violation: ADD from remote URL, use COPY + verified download.
Trips:
Passes:

docker-env-secret

Engine docker_scan · category secret_exposure · base action BLOCK · source: DOCKER_RULES SECRET_EXPOSURE_BOUNDARY violation: secret hardcoded in Dockerfile ENV.
Trips:
Passes:

docker-expose-22

Engine docker_scan · category network_binding · base action WARNING · source: DOCKER_RULES NETWORK_BINDING_BOUNDARY violation: SSH port exposed in container.
Trips:
Passes:

ci-unpinned-action

Engine ci_scan · category supply_chain · base action WARNING · source: CI_RULES SUPPLY_CHAIN_BOUNDARY violation: GitHub Action pinned to branch, not SHA.
Trips:
Passes:

ci-script-injection

Engine ci_scan · category code_injection · base action BLOCK · source: CI_RULES CODE_INJECTION_BOUNDARY violation: potential script injection via github.event context.
Trips:
Passes:

ci-pull-request-target

Engine ci_scan · category privilege_escalation · base action WARNING · source: CI_RULES PRIVILEGE_ESCALATION_BOUNDARY violation: pull_request_target gives write access to forks.
Trips:
Passes:

ci-permissions-write-all

Engine ci_scan · category privilege_escalation · base action WARNING · source: CI_RULES PRIVILEGE_ESCALATION_BOUNDARY violation: overly broad CI permissions.
Trips:
Passes:

ci-curl-pipe

Engine ci_scan · category shell_execution · base action BLOCK · source: CI_RULES SHELL_EXECUTION_BOUNDARY violation: curl pipe to shell in CI workflow.
Trips:
Passes:

high-entropy-secret

Engine entropy_scan · category secret_exposure · base action BLOCK · source: ENTROPY_ASSIGNMENT_REGEX High-entropy credential-like value assigned to a sensitive variable name (>= 4.5 bits/char). Generic assignment of a long random-looking string to a credential-named variable; the value must clear 4.5 bits/char Shannon entropy to BLOCK.
Trips:
Passes:

qwed-sdk-mock-no-direct

Engine verification_integrity · category weak_test_coverage · base action WARNING · source: detect_qwed_sdk_mock() (structural detector) QWED SDK client/verifier is mocked without any direct SDK invocation in the same context. The test verifies the mock contract, not the real verification boundary. Prefer an integration test against the local engine or assert on the mock’s call arguments. Trips:
Passes:

qwed-disabled-env

Engine verification_integrity · category fail_open · base action WARNING · source: detect_disabled_guard() (structural detector) QWED_ENABLED=false disables the QWED verification boundary. If this is a permanent production configuration it violates the fail-closed trust model. Trips:
Passes:

qwed-disable-call

Engine verification_integrity · category fail_open · base action WARNING · source: detect_disabled_guard() (structural detector) qwed.disable() turns off the verification boundary at runtime. Confirm this is intentional and scoped to non-production paths only. Trips:
Passes:

qwed-guard-disabled

Engine verification_integrity · category fail_open · base action WARNING · source: detect_disabled_guard() (structural detector) A QWED guard is explicitly disabled. Review whether the guard can be safely bypassed for this code path. Trips:
Passes:

qwed-suppression-fatigue

Engine verification_integrity · category suppression_abuse · base action WARNING · source: detect_suppression_fatigue() (structural detector) 5+ qwed-ignore suppressions in this file. High suppression density indicates the verification boundary is being systematically silenced. Review whether the suppressions are justified or indicate a systemic issue. Trips:
Passes:

developer-field-promotion-leak

Engine verification_integrity · category release_boundary_violation · base action BLOCK · source: detect_developer_fields_token_leak() (structural detector) Credential-like key in developer_fields will be merged into the public API response payload by merge_diagnostic_result, exposing the credential to clients. Store such material in enforcement function args (not response metadata) and expose only proof_ref to the response consumer. Block: storing attestation/jwt/token material in developer_fields when Trips:
Passes:

round-in-verification-evidence

Engine verification_integrity · category artifact_boundary_ambiguity · base action WARNING · source: detect_round_in_verification_fields() (structural detector) round(…, n) inside verification metadata (developer_fields/evidence) preserves floating-point semantics incompatible with QWED SYMBOLIC MATH contracts. Serialize via Decimal or string with ROUND_HALF_UP instead. Informational: developer_fields populated with round(…, n) violates Trips:
Passes:

mocked-verifier-no-direct

Engine verification_integrity · category weak_test_coverage · base action WARNING · source: detect_mocked_verifier_no_execution() (structural detector) Verifier engine is mocked but never executed in this test. The test regression boundary has zero coverage against the engine branch. Assert on the branch-specific output fields not generic status fallbacks. Hits when test file mocks a verifier engine without direct execution. Trips:
Passes:

Generated by generate_rule_catalog.py from scan_rules.py. Regenerate with python generate_rule_catalog.py; CI fails on drift.