UNPKG

mcp-server-semgrep

Version:

MCP Server for Semgrep Integration - static code analysis with AI

90 lines (89 loc) 2.69 kB
rules: - id: pg8000-sqli languages: - python message: >- Detected string concatenation with a non-literal variable in a pg8000 Python SQL statement. This could lead to SQL injection if the variable is user-controlled and not properly sanitized. In order to prevent SQL injection, use parameterized queries or prepared statements instead. You can create parameterized queries like so: 'conn.run("SELECT :value FROM table", value=myvalue)'. You can also create prepared statements with 'conn.prepare': 'conn.prepare("SELECT (:v) FROM table")' metadata: references: - https://github.com/tlocke/pg8000 cwe: - "CWE-89: Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')" category: security technology: - pg8000 owasp: - A01:2017 - Injection - A03:2021 - Injection cwe2022-top25: true cwe2021-top25: true subcategory: - audit likelihood: LOW impact: HIGH confidence: LOW patterns: - pattern-either: - patterns: - pattern: $CONN.$METHOD(...,$QUERY,...) - pattern-either: - pattern-inside: | $QUERY = $X + $Y ... - pattern-inside: | $QUERY += $X ... - pattern-inside: | $QUERY = '...'.format(...) ... - pattern-inside: | $QUERY = '...' % (...) ... - pattern-inside: | $QUERY = f'...{$USERINPUT}...' ... - pattern-not-inside: | $QUERY += "..." ... - pattern-not-inside: | $QUERY = "..." + "..." ... - pattern-not-inside: | $QUERY = '...'.format() ... - pattern-not-inside: | $QUERY = '...' % () ... - pattern: $CONN.$METHOD(..., $X + $Y, ...) - pattern: $CONN.$METHOD(..., '...'.format(...), ...) - pattern: $CONN.$METHOD(..., '...' % (...), ...) - pattern: $CONN.$METHOD(..., f'...{$USERINPUT}...', ...) - pattern-either: - pattern-inside: | $CONN = pg8000.native.Connection(...) ... - pattern-inside: | $CONN = pg8000.dhapi.connect(...) ... - pattern-inside: | $CONN1 = pg8000.connect(...) ... $CONN = $CONN1.cursor(...) ... - pattern-inside: | $CONN = pg8000.connect(...) ... - pattern-not: $CONN.$METHOD(..., "..." + "...", ...) - pattern-not: $CONN.$METHOD(..., '...'.format(), ...) - pattern-not: $CONN.$METHOD(..., '...'%(), ...) - metavariable-regex: metavariable: $METHOD regex: ^(run|execute|executemany|prepare)$ severity: WARNING