UNPKG

mcp-server-semgrep

Version:

MCP Server for Semgrep Integration - static code analysis with AI

221 lines (220 loc) 5.45 kB
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(...)