feat(安全扫描): 扩展高风险文件模式和危险模式库支持更多语言和文件类型

增加对Swift、Kotlin、Rust等语言的支持
添加iOS和Android相关配置文件类型
补充移动端开发中常见的安全风险模式
This commit is contained in:
lintsinghua 2025-12-14 14:00:04 +08:00
parent 95929a467b
commit e29231cc73
1 changed files with 28 additions and 14 deletions

View File

@ -57,20 +57,26 @@ class SmartScanTool(AgentTool):
# 高风险文件模式 # 高风险文件模式
HIGH_RISK_PATTERNS = [ HIGH_RISK_PATTERNS = [
r'.*auth.*\.py$', r'.*login.*\.py$', r'.*user.*\.py$', r'.*auth.*\.(py|js|ts|tsx|jsx|java|php|swift|m|mm|kt|rs|go)$',
r'.*api.*\.py$', r'.*view.*\.py$', r'.*route.*\.py$', r'.*login.*\.(py|js|ts|tsx|jsx|java|php|swift|m|mm|kt|rs|go)$',
r'.*controller.*\.(py|js|ts|java|php)$', r'.*user.*\.(py|js|ts|tsx|jsx|java|php|swift|m|mm|kt|rs|go)$',
r'.*model.*\.(py|js|ts|java|php)$', r'.*api.*\.(py|js|ts|tsx|jsx|java|php|swift|m|mm|kt|rs|go)$',
r'.*db.*\.(py|js|ts|java|php)$', r'.*view.*\.(py|js|ts|tsx|jsx|java|php|swift|m|mm|kt|rs|go)$',
r'.*sql.*\.(py|js|ts|java|php)$', r'.*route.*\.(py|js|ts|tsx|jsx|java|php|swift|m|mm|kt|rs|go)$',
r'.*upload.*\.(py|js|ts|java|php)$', r'.*controller.*\.(py|js|ts|tsx|jsx|java|php|swift|m|mm|kt|rs|go)$',
r'.*file.*\.(py|js|ts|java|php)$', r'.*model.*\.(py|js|ts|tsx|jsx|java|php|swift|m|mm|kt|rs|go)$',
r'.*exec.*\.(py|js|ts|java|php)$', r'.*db.*\.(py|js|ts|tsx|jsx|java|php|swift|m|mm|kt|rs|go)$',
r'.*admin.*\.(py|js|ts|java|php)$', r'.*sql.*\.(py|js|ts|tsx|jsx|java|php|swift|m|mm|kt|rs|go)$',
r'.*config.*\.(py|js|ts|json|yaml|yml)$', r'.*upload.*\.(py|js|ts|tsx|jsx|java|php|swift|m|mm|kt|rs|go)$',
r'.*setting.*\.(py|js|ts|json|yaml|yml)$', r'.*file.*\.(py|js|ts|tsx|jsx|java|php|swift|m|mm|kt|rs|go)$',
r'.*secret.*\.(py|js|ts|json|yaml|yml)$', r'.*exec.*\.(py|js|ts|tsx|jsx|java|php|swift|m|mm|kt|rs|go)$',
r'.*admin.*\.(py|js|ts|tsx|jsx|java|php|swift|m|mm|kt|rs|go)$',
r'.*config.*\.(py|js|ts|tsx|jsx|json|yaml|yml|xml|properties|plist)$',
r'.*setting.*\.(py|js|ts|tsx|jsx|json|yaml|yml|xml|properties|plist)$',
r'.*secret.*\.(py|js|ts|tsx|jsx|json|yaml|yml|xml|properties|plist)$',
r'.*\.env.*$', r'.*\.env.*$',
r'.*Info\.plist$',
r'.*AndroidManifest\.xml$',
] ]
# 危险模式库(精简版,用于快速扫描) # 危险模式库(精简版,用于快速扫描)
@ -81,12 +87,16 @@ class SmartScanTool(AgentTool):
(r'execute\s*\(.*f["\']', "SQL f-string"), (r'execute\s*\(.*f["\']', "SQL f-string"),
(r'\.query\s*\([^)]*\+', "Query拼接"), (r'\.query\s*\([^)]*\+', "Query拼接"),
(r'raw\s*\([^)]*%', "Raw SQL"), (r'raw\s*\([^)]*%', "Raw SQL"),
(r'sqlite3_exec\s*\(', "SQLite3 Exec"),
(r'NSPredicate\(format:', "NSPredicate Format"),
], ],
"command_injection": [ "command_injection": [
(r'os\.system\s*\(', "os.system"), (r'os\.system\s*\(', "os.system"),
(r'subprocess.*shell\s*=\s*True', "shell=True"), (r'subprocess.*shell\s*=\s*True', "shell=True"),
(r'eval\s*\(', "eval()"), (r'eval\s*\(', "eval()"),
(r'exec\s*\(', "exec()"), (r'exec\s*\(', "exec()"),
(r'Process\s*\(\s*launchPath:', "Swift Process"),
(r'NSTask\s*\.launch', "NSTask Launch"),
], ],
"xss": [ "xss": [
(r'innerHTML\s*=', "innerHTML"), (r'innerHTML\s*=', "innerHTML"),
@ -94,6 +104,8 @@ class SmartScanTool(AgentTool):
(r'dangerouslySetInnerHTML', "dangerouslySetInnerHTML"), (r'dangerouslySetInnerHTML', "dangerouslySetInnerHTML"),
(r'\|\s*safe\b', "safe filter"), (r'\|\s*safe\b', "safe filter"),
(r'mark_safe\s*\(', "mark_safe"), (r'mark_safe\s*\(', "mark_safe"),
(r'loadHTMLString', "WebView Load HTML"),
(r'evaluateJavaScript', "WebView JS Exec"),
], ],
"path_traversal": [ "path_traversal": [
(r'open\s*\([^)]*\+', "open拼接"), (r'open\s*\([^)]*\+', "open拼接"),
@ -214,10 +226,12 @@ class SmartScanTool(AgentTool):
code_extensions = { code_extensions = {
'.py', '.js', '.ts', '.jsx', '.tsx', '.java', '.php', '.py', '.js', '.ts', '.jsx', '.tsx', '.java', '.php',
'.go', '.rb', '.cs', '.c', '.cpp', '.h', '.hpp', '.go', '.rb', '.cs', '.c', '.cpp', '.h', '.hpp',
'.swift', '.m', '.mm', '.kt', '.rs', '.sh', '.bat',
'.vue', '.html', '.htm', '.xml', '.gradle', '.properties'
} }
# 配置文件扩展名 # 配置文件扩展名
config_extensions = {'.json', '.yaml', '.yml', '.env', '.ini', '.cfg'} config_extensions = {'.json', '.yaml', '.yml', '.env', '.ini', '.cfg', '.plist', '.conf'}
all_extensions = code_extensions | config_extensions all_extensions = code_extensions | config_extensions