diff --git a/litellm/proxy/guardrails/guardrail_hooks/litellm_content_filter/categories/prompt_injection_sql.yaml b/litellm/proxy/guardrails/guardrail_hooks/litellm_content_filter/categories/prompt_injection_sql.yaml index 1af2cddef59..9519b8e4beb 100644 --- a/litellm/proxy/guardrails/guardrail_hooks/litellm_content_filter/categories/prompt_injection_sql.yaml +++ b/litellm/proxy/guardrails/guardrail_hooks/litellm_content_filter/categories/prompt_injection_sql.yaml @@ -1,5 +1,7 @@ # SQL Injection Detection - Detects SQL injection attempts in prompts # Uses conditional logic: BLOCK if an identifier word + block word appear in same sentence +# NOTE: avoid regex-special characters like ( ) [ ] in keywords, +# because the content filter matches keywords via regex internally. category_name: "prompt_injection_sql" description: "Detects SQL injection attempts embedded in prompts" default_action: "BLOCK" @@ -19,32 +21,39 @@ identifier_words: - "TRUNCATE" - "GRANT" - "REVOKE" + - "UNION" + - "SHUTDOWN" # ADDITIONAL BLOCK WORDS - Injection-specific patterns additional_block_words: - - "UNION" - "1=1" - "OR true" - "OR 1" - "--" - - "/*" - "xp_cmdshell" - "information_schema" - "sys.tables" + - "sysobjects" + - "pg_catalog" + - "pg_tables" - "INTO OUTFILE" + - "INTO DUMPFILE" - "LOAD_FILE" - "BENCHMARK" - - "SLEEP(" - "WAITFOR" - "HAVING 1=1" - - "GROUP BY" - "ORDER BY 1" - - "INTO DUMPFILE" - - "hex(" - - "char(" - - "concat(" - - "@@version" - "schema_name" + - "@@version" + - "drop table" + - "drop database" + - "drop schema" + - "truncate table" + - "delete from" + - "alter table" + - "union select" + - "union all select" + - "grant all" # ALWAYS BLOCK - Explicit SQL injection patterns (blocked regardless of context) always_block_keywords: @@ -56,6 +65,8 @@ always_block_keywords: severity: "high" - keyword: "' OR 1=1--" severity: "high" + - keyword: "' OR 1=1 --" + severity: "high" - keyword: "UNION SELECT * FROM" severity: "high" - keyword: "UNION ALL SELECT" @@ -66,22 +77,18 @@ always_block_keywords: severity: "high" - keyword: "' UNION SELECT NULL" severity: "high" - - keyword: "SELECT * FROM users" - severity: "medium" + - keyword: "' UNION SELECT" + severity: "high" + - keyword: "UNION SELECT NULL" + severity: "high" - keyword: "SELECT password FROM" severity: "high" - - keyword: "INSERT INTO users" - severity: "medium" - - keyword: "UPDATE users SET" - severity: "medium" - keyword: "DELETE FROM users" severity: "high" - keyword: "DROP DATABASE" severity: "high" - keyword: "DROP TABLE users" severity: "high" - - keyword: "ALTER TABLE users" - severity: "medium" - keyword: "' OR ''='" severity: "high" - keyword: "admin'--" @@ -92,29 +99,55 @@ always_block_keywords: severity: "high" - keyword: "INFORMATION_SCHEMA.COLUMNS" severity: "high" - - keyword: "LOAD DATA INFILE" - severity: "high" - keyword: "INTO OUTFILE" severity: "high" - - keyword: "BENCHMARK(10000000" + - keyword: "INTO DUMPFILE" + severity: "high" + - keyword: "LOAD_FILE" severity: "high" - keyword: "WAITFOR DELAY" severity: "high" - - keyword: "SLEEP(5)" - severity: "medium" + - keyword: "'; SHUTDOWN --" + severity: "high" + - keyword: "'; EXEC sp_" + severity: "high" + - keyword: "xp_cmdshell" + severity: "high" + - keyword: "sp_addlogin" + severity: "high" + - keyword: "sp_addsrvrolemember" + severity: "high" + - keyword: "ORDER BY 1--" + severity: "high" + - keyword: "GROUP BY 1--" + severity: "high" + - keyword: "HAVING 1=1" + severity: "high" # Exception patterns (legitimate uses) exceptions: - "SQL tutorial" - "learn SQL" - "explain SQL" + - "what is SQL injection" - "SQL syntax" - "SQL documentation" - "database design" - "SQL best practices" - "SQL injection prevention" - "protect against SQL injection" + - "how to prevent" + - "how to protect" + - "how to defend" - "parameterized query" + - "parameterized queries" - "prepared statement" + - "prepared statements" - "SQL training" - "database course" + - "how to sanitize" + - "how to validate" + - "research on" + - "security research" + - "security audit" + - "penetration testing"