getdoorman 1.0.6 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/rules/bugs/ai-codegen.js +1 -1
- package/src/rules/bugs/crypto-bugs.js +1 -1
- package/src/rules/bugs/go-bugs.js +1 -1
- package/src/rules/compliance/healthcare.js +4 -4
- package/src/rules/compliance/regional-eu.js +1 -1
- package/src/rules/compliance/regional-international.js +4 -4
- package/src/rules/infrastructure/index.js +5 -5
- package/src/rules/quality/index.js +8 -8
- package/src/rules/scope-rules.js +1 -1
- package/src/rules/security/ai-api.js +8 -8
- package/src/rules/security/auth.js +5 -5
- package/src/rules/security/csharp.js +15 -15
- package/src/rules/security/dart.js +6 -6
- package/src/rules/security/deserialization.js +1 -1
- package/src/rules/security/go.js +8 -8
- package/src/rules/security/injection.js +21 -21
- package/src/rules/security/mcp-server.js +4 -4
- package/src/rules/security/oauth-jwt.js +1 -1
- package/src/rules/security/path-traversal.js +6 -6
- package/src/rules/security/php.js +28 -28
- package/src/rules/security/ruby.js +20 -20
- package/src/rules/security/rust.js +6 -6
- package/src/rules/security/shell.js +9 -9
- package/src/rules/security/ssrf.js +1 -1
- package/src/rules/security/swift.js +3 -3
- package/src/rules/security/taint.js +1 -1
|
@@ -42,7 +42,7 @@ const rules = [
|
|
|
42
42
|
{
|
|
43
43
|
id: 'SEC-INJ-001',
|
|
44
44
|
category: 'security',
|
|
45
|
-
severity: '
|
|
45
|
+
severity: 'high',
|
|
46
46
|
confidence: 'likely',
|
|
47
47
|
title: 'SQL Injection via String Concatenation',
|
|
48
48
|
description:
|
|
@@ -82,7 +82,7 @@ const rules = [
|
|
|
82
82
|
{
|
|
83
83
|
id: 'SEC-INJ-002',
|
|
84
84
|
category: 'security',
|
|
85
|
-
severity: '
|
|
85
|
+
severity: 'high',
|
|
86
86
|
confidence: 'likely',
|
|
87
87
|
title: 'SQL Injection via ORM Raw Queries',
|
|
88
88
|
description:
|
|
@@ -108,7 +108,7 @@ const rules = [
|
|
|
108
108
|
{
|
|
109
109
|
id: 'SEC-INJ-003',
|
|
110
110
|
category: 'security',
|
|
111
|
-
severity: '
|
|
111
|
+
severity: 'high',
|
|
112
112
|
confidence: 'likely',
|
|
113
113
|
title: 'NoSQL Injection via MongoDB',
|
|
114
114
|
description:
|
|
@@ -138,7 +138,7 @@ const rules = [
|
|
|
138
138
|
{
|
|
139
139
|
id: 'SEC-INJ-004',
|
|
140
140
|
category: 'security',
|
|
141
|
-
severity: '
|
|
141
|
+
severity: 'high',
|
|
142
142
|
confidence: 'likely',
|
|
143
143
|
title: 'Command Injection via exec',
|
|
144
144
|
description:
|
|
@@ -169,7 +169,7 @@ const rules = [
|
|
|
169
169
|
{
|
|
170
170
|
id: 'SEC-INJ-005',
|
|
171
171
|
category: 'security',
|
|
172
|
-
severity: '
|
|
172
|
+
severity: 'high',
|
|
173
173
|
confidence: 'likely',
|
|
174
174
|
title: 'Command Injection via Shell Spawn',
|
|
175
175
|
description:
|
|
@@ -288,7 +288,7 @@ const rules = [
|
|
|
288
288
|
{
|
|
289
289
|
id: 'SEC-INJ-008',
|
|
290
290
|
category: 'security',
|
|
291
|
-
severity: '
|
|
291
|
+
severity: 'high',
|
|
292
292
|
confidence: 'likely',
|
|
293
293
|
title: 'Server-Side Template Injection (SSTI)',
|
|
294
294
|
description:
|
|
@@ -520,7 +520,7 @@ const rules = [
|
|
|
520
520
|
{
|
|
521
521
|
id: 'SEC-INJ-015',
|
|
522
522
|
category: 'security',
|
|
523
|
-
severity: '
|
|
523
|
+
severity: 'high',
|
|
524
524
|
confidence: 'likely',
|
|
525
525
|
title: 'XML External Entity (XXE) Injection',
|
|
526
526
|
description:
|
|
@@ -727,7 +727,7 @@ const rules = [
|
|
|
727
727
|
{
|
|
728
728
|
id: 'SEC-INJ-019',
|
|
729
729
|
category: 'security',
|
|
730
|
-
severity: '
|
|
730
|
+
severity: 'high',
|
|
731
731
|
confidence: 'likely',
|
|
732
732
|
title: 'Prototype Pollution',
|
|
733
733
|
description:
|
|
@@ -757,7 +757,7 @@ const rules = [
|
|
|
757
757
|
{
|
|
758
758
|
id: 'SEC-INJ-020',
|
|
759
759
|
category: 'security',
|
|
760
|
-
severity: '
|
|
760
|
+
severity: 'high',
|
|
761
761
|
confidence: 'likely',
|
|
762
762
|
title: 'Path Traversal',
|
|
763
763
|
description:
|
|
@@ -797,7 +797,7 @@ const rules = [
|
|
|
797
797
|
{
|
|
798
798
|
id: 'SEC-INJ-021',
|
|
799
799
|
category: 'security',
|
|
800
|
-
severity: '
|
|
800
|
+
severity: 'high',
|
|
801
801
|
confidence: 'likely',
|
|
802
802
|
title: 'SSRF: fetch/axios called with user-controlled URL',
|
|
803
803
|
description: 'Making HTTP requests to URLs derived from user input enables Server-Side Request Forgery (SSRF), allowing attackers to probe internal services, cloud metadata endpoints, or exfiltrate data.',
|
|
@@ -819,7 +819,7 @@ const rules = [
|
|
|
819
819
|
{
|
|
820
820
|
id: 'SEC-INJ-022',
|
|
821
821
|
category: 'security',
|
|
822
|
-
severity: '
|
|
822
|
+
severity: 'high',
|
|
823
823
|
confidence: 'likely',
|
|
824
824
|
title: 'SSRF: http.request with user-controlled host option',
|
|
825
825
|
description: 'Node.js http.request/https.request called with options derived from user input allows SSRF attacks targeting internal services.',
|
|
@@ -927,7 +927,7 @@ const rules = [
|
|
|
927
927
|
{
|
|
928
928
|
id: 'SEC-INJ-026',
|
|
929
929
|
category: 'security',
|
|
930
|
-
severity: '
|
|
930
|
+
severity: 'high',
|
|
931
931
|
confidence: 'likely',
|
|
932
932
|
title: 'SSTI: EJS template rendered with user-controlled template string',
|
|
933
933
|
description: 'Passing user input as the template string to ejs.render() allows arbitrary JavaScript execution on the server.',
|
|
@@ -949,7 +949,7 @@ const rules = [
|
|
|
949
949
|
{
|
|
950
950
|
id: 'SEC-INJ-027',
|
|
951
951
|
category: 'security',
|
|
952
|
-
severity: '
|
|
952
|
+
severity: 'high',
|
|
953
953
|
confidence: 'likely',
|
|
954
954
|
title: 'SSTI: Pug template compiled from user-controlled input',
|
|
955
955
|
description: 'pug.compile() or pug.render() with user-supplied template strings allows arbitrary code execution.',
|
|
@@ -971,7 +971,7 @@ const rules = [
|
|
|
971
971
|
{
|
|
972
972
|
id: 'SEC-INJ-028',
|
|
973
973
|
category: 'security',
|
|
974
|
-
severity: '
|
|
974
|
+
severity: 'high',
|
|
975
975
|
confidence: 'likely',
|
|
976
976
|
title: 'SSTI: Handlebars template compiled from user-controlled input',
|
|
977
977
|
description: 'Handlebars.compile() called with user input allows template injection leading to remote code execution.',
|
|
@@ -1180,7 +1180,7 @@ const rules = [
|
|
|
1180
1180
|
{
|
|
1181
1181
|
id: 'SEC-INJ-036',
|
|
1182
1182
|
category: 'security',
|
|
1183
|
-
severity: '
|
|
1183
|
+
severity: 'high',
|
|
1184
1184
|
confidence: 'likely',
|
|
1185
1185
|
title: 'LDAP Injection via unsanitized user input in LDAP query',
|
|
1186
1186
|
description: 'Building LDAP filter strings with user input without escaping special characters allows LDAP injection attacks.',
|
|
@@ -1202,7 +1202,7 @@ const rules = [
|
|
|
1202
1202
|
{
|
|
1203
1203
|
id: 'SEC-INJ-037',
|
|
1204
1204
|
category: 'security',
|
|
1205
|
-
severity: '
|
|
1205
|
+
severity: 'high',
|
|
1206
1206
|
confidence: 'likely',
|
|
1207
1207
|
title: 'eval() called with user-controlled input — arbitrary code execution',
|
|
1208
1208
|
description: 'eval() with any user-supplied string allows remote code execution. This is one of the most dangerous patterns in JavaScript.',
|
|
@@ -1291,7 +1291,7 @@ export default rules;
|
|
|
1291
1291
|
|
|
1292
1292
|
// SEC-INJ-041: SQL injection via template literal in raw query
|
|
1293
1293
|
rules.push({
|
|
1294
|
-
id: 'SEC-INJ-041', category: 'security', severity: '
|
|
1294
|
+
id: 'SEC-INJ-041', category: 'security', severity: 'high', confidence: 'likely',
|
|
1295
1295
|
title: 'SQL Injection via template literal in query string',
|
|
1296
1296
|
check({ files }) {
|
|
1297
1297
|
const findings = [];
|
|
@@ -1429,7 +1429,7 @@ rules.push({
|
|
|
1429
1429
|
|
|
1430
1430
|
// SEC-INJ-048: Unsafe shell execution with variables
|
|
1431
1431
|
rules.push({
|
|
1432
|
-
id: 'SEC-INJ-048', category: 'security', severity: '
|
|
1432
|
+
id: 'SEC-INJ-048', category: 'security', severity: 'high', confidence: 'likely',
|
|
1433
1433
|
title: 'Shell command constructed with variable interpolation',
|
|
1434
1434
|
check({ files }) {
|
|
1435
1435
|
const findings = [];
|
|
@@ -1470,7 +1470,7 @@ rules.push({
|
|
|
1470
1470
|
|
|
1471
1471
|
// SEC-INJ-050: Arbitrary file read via path parameter
|
|
1472
1472
|
rules.push({
|
|
1473
|
-
id: 'SEC-INJ-050', category: 'security', severity: '
|
|
1473
|
+
id: 'SEC-INJ-050', category: 'security', severity: 'high', confidence: 'likely',
|
|
1474
1474
|
title: 'File read using user-controlled filename — path traversal',
|
|
1475
1475
|
check({ files }) {
|
|
1476
1476
|
const findings = [];
|
|
@@ -1508,7 +1508,7 @@ rules.push({
|
|
|
1508
1508
|
|
|
1509
1509
|
// SEC-INJ-052: Subprocess injection via template literal
|
|
1510
1510
|
rules.push({
|
|
1511
|
-
id: 'SEC-INJ-052', category: 'security', severity: '
|
|
1511
|
+
id: 'SEC-INJ-052', category: 'security', severity: 'high', confidence: 'likely',
|
|
1512
1512
|
title: 'subprocess injection via template in spawn/fork',
|
|
1513
1513
|
check({ files }) {
|
|
1514
1514
|
const findings = [];
|
|
@@ -1546,7 +1546,7 @@ rules.push({
|
|
|
1546
1546
|
|
|
1547
1547
|
// SEC-INJ-054: Unsafe use of vm.runInNewContext with user data
|
|
1548
1548
|
rules.push({
|
|
1549
|
-
id: 'SEC-INJ-054', category: 'security', severity: '
|
|
1549
|
+
id: 'SEC-INJ-054', category: 'security', severity: 'high', confidence: 'likely',
|
|
1550
1550
|
title: 'vm.runInNewContext/runInContext with user data — sandbox escape risk',
|
|
1551
1551
|
check({ files }) {
|
|
1552
1552
|
const findings = [];
|
|
@@ -19,8 +19,8 @@ function checkAll(rule, files, pattern) {
|
|
|
19
19
|
const rules = [
|
|
20
20
|
{ id: 'SEC-MCP-001', category: 'security', severity: 'high', confidence: 'likely', title: 'MCP tool without input validation', check({ files }) { return checkAll(this, files, /server\.tool\([^,]+,\s*async\s*\(\s*\{/); } },
|
|
21
21
|
{ id: 'SEC-MCP-002', category: 'security', severity: 'high', confidence: 'likely', title: 'MCP params in file operation', check({ files }) { return checkAll(this, files, /fs\.\w+\(\s*(?:params|args|input)\.\w+/); } },
|
|
22
|
-
{ id: 'SEC-MCP-003', category: 'security', severity: '
|
|
23
|
-
{ id: 'SEC-MCP-004', category: 'security', severity: '
|
|
22
|
+
{ id: 'SEC-MCP-003', category: 'security', severity: 'high', confidence: 'likely', title: 'MCP params in exec/spawn', check({ files }) { return checkAll(this, files, /(?:exec|spawn|execSync)\(\s*(?:params|args|input)\./); } },
|
|
23
|
+
{ id: 'SEC-MCP-004', category: 'security', severity: 'high', confidence: 'likely', title: 'MCP params in SQL query', check({ files }) { return checkAll(this, files, /(?:query|execute)\(\s*`[^`]*\$\{(?:params|args|input)\./); } },
|
|
24
24
|
{ id: 'SEC-MCP-005', category: 'security', severity: 'high', confidence: 'likely', title: 'MCP params in eval', check({ files }) { return checkAll(this, files, /(?:eval|new\s+Function)\(\s*(?:params|args|input)\./); } },
|
|
25
25
|
{ id: 'SEC-MCP-006', category: 'security', severity: 'medium', confidence: 'suggestion', title: 'MCP tool without schema', check({ files }) { return checkAll(this, files, /server\.tool\(\s*['"][^'"]+['"]\s*,\s*(?:async\s*)?\(/); } },
|
|
26
26
|
{ id: 'SEC-MCP-007', category: 'security', severity: 'high', confidence: 'likely', title: 'MCP params in URL (SSRF)', check({ files }) { return checkAll(this, files, /(?:fetch|axios|got|request)\(\s*(?:params|args|input)\./); } },
|
|
@@ -47,8 +47,8 @@ const rules = [
|
|
|
47
47
|
{ id: 'SEC-MCP-028', category: 'security', severity: 'low', confidence: 'suggestion', title: 'MCP description leaks impl', check({ files }) { return checkAll(this, files, /description:\s*['"].*(?:database|internal|private)/i); } },
|
|
48
48
|
{ id: 'SEC-MCP-029', category: 'security', severity: 'medium', confidence: 'likely', title: 'MCP cross-tool data leak', check({ files }) { return checkAll(this, files, /(?:global|globalThis)\.\w+.*=.*(?:params|args)\./); } },
|
|
49
49
|
{ id: 'SEC-MCP-030', category: 'security', severity: 'medium', confidence: 'suggestion', title: 'MCP debug mode enabled', check({ files }) { return checkAll(this, files, /(?:debug|verbose)\s*[:=]\s*true/); } },
|
|
50
|
-
{ id: 'SEC-MCP-031', category: 'security', severity: '
|
|
51
|
-
{ id: 'SEC-MCP-032', category: 'security', severity: '
|
|
50
|
+
{ id: 'SEC-MCP-031', category: 'security', severity: 'high', confidence: 'likely', title: 'MCP shell injection', check({ files }) { return checkAll(this, files, /(?:child_process\.|execSync|execFile)\s*\(\s*`[^`]*\$\{(?:params|args|input)\./); } },
|
|
51
|
+
{ id: 'SEC-MCP-032', category: 'security', severity: 'high', confidence: 'likely', title: 'MCP template injection', check({ files }) { return checkAll(this, files, /(?:render|compile|template)\(\s*(?:params|args|input)\./); } },
|
|
52
52
|
{ id: 'SEC-MCP-033', category: 'security', severity: 'high', confidence: 'likely', title: 'MCP LDAP injection', check({ files }) { return checkAll(this, files, /(?:ldap|LDAP).*(?:search|bind).*(?:params|args)\./); } },
|
|
53
53
|
{ id: 'SEC-MCP-034', category: 'security', severity: 'high', confidence: 'likely', title: 'MCP XML injection', check({ files }) { return checkAll(this, files, /[<].*\$\{(?:params|args|input)\./); } },
|
|
54
54
|
{ id: 'SEC-MCP-035', category: 'security', severity: 'high', confidence: 'likely', title: 'MCP header injection', check({ files }) { return checkAll(this, files, /setHeader\([^,]+,\s*(?:params|args|input)\./); } },
|
|
@@ -39,7 +39,7 @@ const rules = [
|
|
|
39
39
|
{
|
|
40
40
|
id: 'SEC-PT-001',
|
|
41
41
|
category: 'security',
|
|
42
|
-
severity: '
|
|
42
|
+
severity: 'high',
|
|
43
43
|
confidence: 'likely',
|
|
44
44
|
title: 'fs.readFile with User-Controlled Path (Path Traversal)',
|
|
45
45
|
description:
|
|
@@ -62,7 +62,7 @@ const rules = [
|
|
|
62
62
|
{
|
|
63
63
|
id: 'SEC-PT-002',
|
|
64
64
|
category: 'security',
|
|
65
|
-
severity: '
|
|
65
|
+
severity: 'high',
|
|
66
66
|
confidence: 'likely',
|
|
67
67
|
title: 'fs.writeFile with User-Controlled Path (Path Traversal)',
|
|
68
68
|
description:
|
|
@@ -154,7 +154,7 @@ const rules = [
|
|
|
154
154
|
{
|
|
155
155
|
id: 'SEC-PT-006',
|
|
156
156
|
category: 'security',
|
|
157
|
-
severity: '
|
|
157
|
+
severity: 'high',
|
|
158
158
|
confidence: 'likely',
|
|
159
159
|
title: 'fs.createReadStream with User-Controlled Path',
|
|
160
160
|
description:
|
|
@@ -177,7 +177,7 @@ const rules = [
|
|
|
177
177
|
{
|
|
178
178
|
id: 'SEC-PT-007',
|
|
179
179
|
category: 'security',
|
|
180
|
-
severity: '
|
|
180
|
+
severity: 'high',
|
|
181
181
|
confidence: 'likely',
|
|
182
182
|
title: 'Zip Extraction Without Path Validation (Zip Slip)',
|
|
183
183
|
description:
|
|
@@ -213,7 +213,7 @@ const rules = [
|
|
|
213
213
|
{
|
|
214
214
|
id: 'SEC-PT-008',
|
|
215
215
|
category: 'security',
|
|
216
|
-
severity: '
|
|
216
|
+
severity: 'high',
|
|
217
217
|
confidence: 'likely',
|
|
218
218
|
title: 'fs.unlink/rm with User-Controlled Path (Arbitrary File Deletion)',
|
|
219
219
|
description:
|
|
@@ -272,7 +272,7 @@ const rules = [
|
|
|
272
272
|
{
|
|
273
273
|
id: 'SEC-PT-010',
|
|
274
274
|
category: 'security',
|
|
275
|
-
severity: '
|
|
275
|
+
severity: 'high',
|
|
276
276
|
confidence: 'likely',
|
|
277
277
|
title: 'Template/View File Inclusion with User Input (LFI)',
|
|
278
278
|
description:
|
|
@@ -54,7 +54,7 @@ const rules = [
|
|
|
54
54
|
{
|
|
55
55
|
id: 'SEC-PHP-001',
|
|
56
56
|
category: 'security',
|
|
57
|
-
severity: '
|
|
57
|
+
severity: 'high',
|
|
58
58
|
confidence: 'likely',
|
|
59
59
|
title: 'SQL Injection via mysql_query with Concatenation',
|
|
60
60
|
description: 'Concatenating user input into mysql_query() allows SQL injection.',
|
|
@@ -70,7 +70,7 @@ const rules = [
|
|
|
70
70
|
{
|
|
71
71
|
id: 'SEC-PHP-002',
|
|
72
72
|
category: 'security',
|
|
73
|
-
severity: '
|
|
73
|
+
severity: 'high',
|
|
74
74
|
confidence: 'likely',
|
|
75
75
|
title: 'SQL Injection via mysqli_query with Variable Interpolation',
|
|
76
76
|
description: 'Using variable interpolation in mysqli_query() enables SQL injection.',
|
|
@@ -86,7 +86,7 @@ const rules = [
|
|
|
86
86
|
{
|
|
87
87
|
id: 'SEC-PHP-003',
|
|
88
88
|
category: 'security',
|
|
89
|
-
severity: '
|
|
89
|
+
severity: 'high',
|
|
90
90
|
confidence: 'likely',
|
|
91
91
|
title: 'SQL Injection via PDO::query with Variable Interpolation',
|
|
92
92
|
description: 'Using string interpolation in PDO::query() bypasses prepared statement protection.',
|
|
@@ -102,7 +102,7 @@ const rules = [
|
|
|
102
102
|
{
|
|
103
103
|
id: 'SEC-PHP-004',
|
|
104
104
|
category: 'security',
|
|
105
|
-
severity: '
|
|
105
|
+
severity: 'high',
|
|
106
106
|
confidence: 'likely',
|
|
107
107
|
title: 'SQL Injection via $_GET in Query String',
|
|
108
108
|
description: 'Directly embedding $_GET values in SQL queries allows injection.',
|
|
@@ -118,7 +118,7 @@ const rules = [
|
|
|
118
118
|
{
|
|
119
119
|
id: 'SEC-PHP-005',
|
|
120
120
|
category: 'security',
|
|
121
|
-
severity: '
|
|
121
|
+
severity: 'high',
|
|
122
122
|
confidence: 'likely',
|
|
123
123
|
title: 'SQL Injection via $_POST in Query String',
|
|
124
124
|
description: 'Directly embedding $_POST values in SQL queries allows injection.',
|
|
@@ -134,7 +134,7 @@ const rules = [
|
|
|
134
134
|
{
|
|
135
135
|
id: 'SEC-PHP-006',
|
|
136
136
|
category: 'security',
|
|
137
|
-
severity: '
|
|
137
|
+
severity: 'high',
|
|
138
138
|
confidence: 'likely',
|
|
139
139
|
title: 'SQL Injection via sprintf()',
|
|
140
140
|
description: 'Using sprintf to build SQL queries with user input allows injection.',
|
|
@@ -150,7 +150,7 @@ const rules = [
|
|
|
150
150
|
{
|
|
151
151
|
id: 'SEC-PHP-007',
|
|
152
152
|
category: 'security',
|
|
153
|
-
severity: '
|
|
153
|
+
severity: 'high',
|
|
154
154
|
confidence: 'likely',
|
|
155
155
|
title: 'SQL Injection via $_REQUEST in Query',
|
|
156
156
|
description: 'Using $_REQUEST in SQL queries allows injection from any request method.',
|
|
@@ -198,7 +198,7 @@ const rules = [
|
|
|
198
198
|
{
|
|
199
199
|
id: 'SEC-PHP-010',
|
|
200
200
|
category: 'security',
|
|
201
|
-
severity: '
|
|
201
|
+
severity: 'high',
|
|
202
202
|
confidence: 'likely',
|
|
203
203
|
title: 'SQL Injection via $db->query with Concatenation',
|
|
204
204
|
description: 'Using $db->query() with concatenated variables allows SQL injection.',
|
|
@@ -302,7 +302,7 @@ const rules = [
|
|
|
302
302
|
{
|
|
303
303
|
id: 'SEC-PHP-016',
|
|
304
304
|
category: 'security',
|
|
305
|
-
severity: '
|
|
305
|
+
severity: 'high',
|
|
306
306
|
confidence: 'likely',
|
|
307
307
|
title: 'Command Injection via exec()',
|
|
308
308
|
description: 'Passing user input to exec() allows arbitrary command execution.',
|
|
@@ -318,7 +318,7 @@ const rules = [
|
|
|
318
318
|
{
|
|
319
319
|
id: 'SEC-PHP-017',
|
|
320
320
|
category: 'security',
|
|
321
|
-
severity: '
|
|
321
|
+
severity: 'high',
|
|
322
322
|
confidence: 'likely',
|
|
323
323
|
title: 'Command Injection via system()',
|
|
324
324
|
description: 'Passing user input to system() allows arbitrary command execution.',
|
|
@@ -334,7 +334,7 @@ const rules = [
|
|
|
334
334
|
{
|
|
335
335
|
id: 'SEC-PHP-018',
|
|
336
336
|
category: 'security',
|
|
337
|
-
severity: '
|
|
337
|
+
severity: 'high',
|
|
338
338
|
confidence: 'likely',
|
|
339
339
|
title: 'Command Injection via shell_exec()',
|
|
340
340
|
description: 'Passing user input to shell_exec() allows arbitrary command execution.',
|
|
@@ -350,7 +350,7 @@ const rules = [
|
|
|
350
350
|
{
|
|
351
351
|
id: 'SEC-PHP-019',
|
|
352
352
|
category: 'security',
|
|
353
|
-
severity: '
|
|
353
|
+
severity: 'high',
|
|
354
354
|
confidence: 'likely',
|
|
355
355
|
title: 'Command Injection via passthru()',
|
|
356
356
|
description: 'Passing user input to passthru() allows arbitrary command execution.',
|
|
@@ -366,7 +366,7 @@ const rules = [
|
|
|
366
366
|
{
|
|
367
367
|
id: 'SEC-PHP-020',
|
|
368
368
|
category: 'security',
|
|
369
|
-
severity: '
|
|
369
|
+
severity: 'high',
|
|
370
370
|
confidence: 'likely',
|
|
371
371
|
title: 'Command Injection via Backtick Operator',
|
|
372
372
|
description: 'Using backtick operator with user input allows arbitrary command execution.',
|
|
@@ -386,7 +386,7 @@ const rules = [
|
|
|
386
386
|
{
|
|
387
387
|
id: 'SEC-PHP-021',
|
|
388
388
|
category: 'security',
|
|
389
|
-
severity: '
|
|
389
|
+
severity: 'high',
|
|
390
390
|
confidence: 'likely',
|
|
391
391
|
title: 'Local File Inclusion via include()',
|
|
392
392
|
description: 'Using include() with user input allows including arbitrary files.',
|
|
@@ -402,7 +402,7 @@ const rules = [
|
|
|
402
402
|
{
|
|
403
403
|
id: 'SEC-PHP-022',
|
|
404
404
|
category: 'security',
|
|
405
|
-
severity: '
|
|
405
|
+
severity: 'high',
|
|
406
406
|
confidence: 'likely',
|
|
407
407
|
title: 'Local File Inclusion via require()',
|
|
408
408
|
description: 'Using require() with user input allows including arbitrary files.',
|
|
@@ -418,7 +418,7 @@ const rules = [
|
|
|
418
418
|
{
|
|
419
419
|
id: 'SEC-PHP-023',
|
|
420
420
|
category: 'security',
|
|
421
|
-
severity: '
|
|
421
|
+
severity: 'high',
|
|
422
422
|
confidence: 'likely',
|
|
423
423
|
title: 'File Inclusion via include_once with Variable',
|
|
424
424
|
description: 'Using include_once with user-controlled variable allows file inclusion.',
|
|
@@ -434,7 +434,7 @@ const rules = [
|
|
|
434
434
|
{
|
|
435
435
|
id: 'SEC-PHP-024',
|
|
436
436
|
category: 'security',
|
|
437
|
-
severity: '
|
|
437
|
+
severity: 'high',
|
|
438
438
|
confidence: 'likely',
|
|
439
439
|
title: 'Remote File Inclusion Enabled',
|
|
440
440
|
description: 'Setting allow_url_include=On enables remote file inclusion attacks.',
|
|
@@ -450,7 +450,7 @@ const rules = [
|
|
|
450
450
|
{
|
|
451
451
|
id: 'SEC-PHP-025',
|
|
452
452
|
category: 'security',
|
|
453
|
-
severity: '
|
|
453
|
+
severity: 'high',
|
|
454
454
|
confidence: 'likely',
|
|
455
455
|
title: 'File Inclusion via require_once with Variable',
|
|
456
456
|
description: 'Using require_once with user-controlled variable allows file inclusion.',
|
|
@@ -470,7 +470,7 @@ const rules = [
|
|
|
470
470
|
{
|
|
471
471
|
id: 'SEC-PHP-026',
|
|
472
472
|
category: 'security',
|
|
473
|
-
severity: '
|
|
473
|
+
severity: 'high',
|
|
474
474
|
confidence: 'likely',
|
|
475
475
|
title: 'Unsafe unserialize() with User Input',
|
|
476
476
|
description: 'Using unserialize() on user input allows object injection and RCE.',
|
|
@@ -518,7 +518,7 @@ const rules = [
|
|
|
518
518
|
{
|
|
519
519
|
id: 'SEC-PHP-029',
|
|
520
520
|
category: 'security',
|
|
521
|
-
severity: '
|
|
521
|
+
severity: 'high',
|
|
522
522
|
confidence: 'likely',
|
|
523
523
|
title: 'Phar Deserialization Attack',
|
|
524
524
|
description: 'File operations on phar:// streams with user input trigger deserialization.',
|
|
@@ -554,7 +554,7 @@ const rules = [
|
|
|
554
554
|
{
|
|
555
555
|
id: 'SEC-PHP-031',
|
|
556
556
|
category: 'security',
|
|
557
|
-
severity: '
|
|
557
|
+
severity: 'high',
|
|
558
558
|
confidence: 'likely',
|
|
559
559
|
title: 'Code Injection via eval()',
|
|
560
560
|
description: 'Using eval() with user-controlled input allows arbitrary code execution.',
|
|
@@ -586,7 +586,7 @@ const rules = [
|
|
|
586
586
|
{
|
|
587
587
|
id: 'SEC-PHP-033',
|
|
588
588
|
category: 'security',
|
|
589
|
-
severity: '
|
|
589
|
+
severity: 'high',
|
|
590
590
|
confidence: 'likely',
|
|
591
591
|
title: 'Code Execution via assert()',
|
|
592
592
|
description: 'assert() with string arguments evaluates code like eval() in PHP < 8.',
|
|
@@ -602,7 +602,7 @@ const rules = [
|
|
|
602
602
|
{
|
|
603
603
|
id: 'SEC-PHP-034',
|
|
604
604
|
category: 'security',
|
|
605
|
-
severity: '
|
|
605
|
+
severity: 'high',
|
|
606
606
|
confidence: 'likely',
|
|
607
607
|
title: 'Code Execution via preg_replace /e Modifier',
|
|
608
608
|
description: 'The /e modifier in preg_replace evaluates replacement as PHP code.',
|
|
@@ -722,7 +722,7 @@ const rules = [
|
|
|
722
722
|
{
|
|
723
723
|
id: 'SEC-PHP-041',
|
|
724
724
|
category: 'security',
|
|
725
|
-
severity: '
|
|
725
|
+
severity: 'high',
|
|
726
726
|
confidence: 'likely',
|
|
727
727
|
title: 'SQL Injection via Laravel DB::raw()',
|
|
728
728
|
description: 'Using DB::raw() with user input bypasses query builder protections.',
|
|
@@ -786,7 +786,7 @@ const rules = [
|
|
|
786
786
|
{
|
|
787
787
|
id: 'SEC-PHP-045',
|
|
788
788
|
category: 'security',
|
|
789
|
-
severity: '
|
|
789
|
+
severity: 'high',
|
|
790
790
|
confidence: 'likely',
|
|
791
791
|
title: 'SQL Injection via Laravel whereRaw()',
|
|
792
792
|
description: 'Using whereRaw() with concatenated user input enables SQL injection.',
|
|
@@ -806,7 +806,7 @@ const rules = [
|
|
|
806
806
|
{
|
|
807
807
|
id: 'SEC-PHP-046',
|
|
808
808
|
category: 'security',
|
|
809
|
-
severity: '
|
|
809
|
+
severity: 'high',
|
|
810
810
|
confidence: 'likely',
|
|
811
811
|
title: 'WordPress SQL Injection via $wpdb->query()',
|
|
812
812
|
description: 'Using $wpdb->query() without $wpdb->prepare() allows SQL injection.',
|
|
@@ -974,7 +974,7 @@ const rules = [
|
|
|
974
974
|
{
|
|
975
975
|
id: 'SEC-PHP-056',
|
|
976
976
|
category: 'security',
|
|
977
|
-
severity: '
|
|
977
|
+
severity: 'high',
|
|
978
978
|
confidence: 'likely',
|
|
979
979
|
title: 'Weak Password Hashing: md5()',
|
|
980
980
|
description: 'Using md5() for password hashing is trivially crackable.',
|
|
@@ -1006,7 +1006,7 @@ const rules = [
|
|
|
1006
1006
|
{
|
|
1007
1007
|
id: 'SEC-PHP-058',
|
|
1008
1008
|
category: 'security',
|
|
1009
|
-
severity: '
|
|
1009
|
+
severity: 'high',
|
|
1010
1010
|
confidence: 'likely',
|
|
1011
1011
|
title: 'Hardcoded Encryption Key',
|
|
1012
1012
|
description: 'Hardcoded encryption keys in source code can be extracted by attackers.',
|