mcp-server-semgrep
Version:
MCP Server for Semgrep Integration - static code analysis with AI
221 lines (220 loc) • 5.45 kB
YAML
rules:
- id: globals-misuse-code-execution
message: >-
Found request data as an index to 'globals()'. This is extremely
dangerous because it allows an attacker to execute arbitrary code
on the system. Refactor your code not to use 'globals()'.
metadata:
cwe:
- "CWE-96: Improper Neutralization of Directives in Statically Saved Code ('Static Code Injection')"
owasp:
- A03:2021 - Injection
references:
- https://github.com/mpirnat/lets-be-bad-guys/blob/d92768fb3ade32956abd53bd6bb06e19d634a084/badguys/vulnerable/views.py#L181-L186
category: security
technology:
- django
subcategory:
- audit
likelihood: LOW
impact: MEDIUM
confidence: LOW
languages: [python]
severity: WARNING
patterns:
- pattern-inside: |
def $FUNC(...):
...
- pattern-either:
- pattern: |
$DATA = request.$W.get(...)
...
$INTERM = globals().get($DATA, ...)
...
$INTERM(...)
- pattern: |
$DATA = request.$W.get(...)
...
$INTERM = globals().get("..." % $DATA, ...)
...
$INTERM(...)
- pattern: |
$DATA = request.$W.get(...)
...
$INTERM = globals().get(f"...{$DATA}...", ...)
...
$INTERM(...)
- pattern: |
$DATA = request.$W.get(...)
...
$INTERM = globals().get("...".format(..., $DATA, ...), ...)
...
$INTERM(...)
- pattern: |
$DATA = request.$W.get(...)
...
$INTERM = globals()[$DATA]
...
$INTERM(...)
- pattern: |
$DATA = request.$W.get(...)
...
$INTERM = globals()["..." % $DATA]
...
$INTERM(...)
- pattern: |
$DATA = request.$W.get(...)
...
$INTERM = globals()[f"...{$DATA}..."]
...
$INTERM(...)
- pattern: |
$DATA = request.$W.get(...)
...
$INTERM = globals()["...".format(..., $DATA, ...)]
...
$INTERM(...)
- pattern: |
$DATA = request.$W(...)
...
$INTERM = globals().get($DATA, ...)
...
$INTERM(...)
- pattern: |
$DATA = request.$W(...)
...
$INTERM = globals().get("..." % $DATA, ...)
...
$INTERM(...)
- pattern: |
$DATA = request.$W(...)
...
$INTERM = globals().get(f"...{$DATA}...", ...)
...
$INTERM(...)
- pattern: |
$DATA = request.$W(...)
...
$INTERM = globals().get("...".format(..., $DATA, ...), ...)
...
$INTERM(...)
- pattern: |
$DATA = request.$W(...)
...
$INTERM = globals()[$DATA]
...
$INTERM(...)
- pattern: |
$DATA = request.$W(...)
...
$INTERM = globals()["..." % $DATA]
...
$INTERM(...)
- pattern: |
$DATA = request.$W(...)
...
$INTERM = globals()[f"...{$DATA}..."]
...
$INTERM(...)
- pattern: |
$DATA = request.$W(...)
...
$INTERM = globals()["...".format(..., $DATA, ...)]
...
$INTERM(...)
- pattern: |
$DATA = request.$W[...]
...
$INTERM = globals().get($DATA, ...)
...
$INTERM(...)
- pattern: |
$DATA = request.$W[...]
...
$INTERM = globals().get("..." % $DATA, ...)
...
$INTERM(...)
- pattern: |
$DATA = request.$W[...]
...
$INTERM = globals().get(f"...{$DATA}...", ...)
...
$INTERM(...)
- pattern: |
$DATA = request.$W[...]
...
$INTERM = globals().get("...".format(..., $DATA, ...), ...)
...
$INTERM(...)
- pattern: |
$DATA = request.$W[...]
...
$INTERM = globals()[$DATA]
...
$INTERM(...)
- pattern: |
$DATA = request.$W[...]
...
$INTERM = globals()["..." % $DATA]
...
$INTERM(...)
- pattern: |
$DATA = request.$W[...]
...
$INTERM = globals()[f"...{$DATA}..."]
...
$INTERM(...)
- pattern: |
$DATA = request.$W[...]
...
$INTERM = globals()["...".format(..., $DATA, ...)]
...
$INTERM(...)
- pattern: |
$DATA = request.$W
...
$INTERM = globals().get($DATA, ...)
...
$INTERM(...)
- pattern: |
$DATA = request.$W
...
$INTERM = globals().get("..." % $DATA, ...)
...
$INTERM(...)
- pattern: |
$DATA = request.$W
...
$INTERM = globals().get(f"...{$DATA}...", ...)
...
$INTERM(...)
- pattern: |
$DATA = request.$W
...
$INTERM = globals().get("...".format(..., $DATA, ...), ...)
...
$INTERM(...)
- pattern: |
$DATA = request.$W
...
$INTERM = globals()[$DATA]
...
$INTERM(...)
- pattern: |
$DATA = request.$W
...
$INTERM = globals()["..." % $DATA]
...
$INTERM(...)
- pattern: |
$DATA = request.$W
...
$INTERM = globals()[f"...{$DATA}..."]
...
$INTERM(...)
- pattern: |
$DATA = request.$W
...
$INTERM = globals()["...".format(..., $DATA, ...)]
...
$INTERM(...)