id: no-sql-injection
name: No SQL Injection
description: |
Detects potential SQL injection vulnerabilities from string
concatenation or interpolation in SQL queries.
severity: error
enabled: true
version: "1.0.0"
patterns:
- type: regex
value: "(SELECT|INSERT|UPDATE|DELETE).*\\$\\{.*\\}"
languages: [javascript, typescript]
message: "SQL query with string interpolation detected"
- type: regex
value: "(SELECT|INSERT|UPDATE|DELETE).*\\+\\s*\\w+"
languages: [javascript, typescript, java]
message: "SQL query with string concatenation detected"
- type: ast
language: python
value: |
Call[func.attr="execute"][args[0].type="JoinedStr"]
message: "SQL query with f-string detected"
suggestions:
- "Use parameterized queries instead"
- "Use an ORM or query builder"
fix:
type: replace
pattern: "\\$\\{(\\w+)\\}"
replacement: "?"
ignore:
- "**/*.test.*"
- "**/migrations/**"
tags:
- security
- injection
- owasp
frameworks:
- nist-ssdf:PW
- owasp-asvs:V5
- cis-controls:16.4
references:
- url: https://owasp.org/Top10/A03_2021-Injection/
title: OWASP Top 10 - Injection