@runsec/mcp 1.0.1
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/dist/index.js +578 -0
- package/package.json +43 -0
- package/src/rules/data/rule-compliance-map.json +43563 -0
- package/src/rules/data/semgrep-rules/README-taint-overlays.md +21 -0
- package/src/rules/data/semgrep-rules/advanced-agent-cloud.yaml +802 -0
- package/src/rules/data/semgrep-rules/app-logic.yaml +445 -0
- package/src/rules/data/semgrep-rules/auth-keycloak.yaml +831 -0
- package/src/rules/data/semgrep-rules/browser-agent.yaml +260 -0
- package/src/rules/data/semgrep-rules/cloud-secrets.yaml +316 -0
- package/src/rules/data/semgrep-rules/csharp-dotnet.yaml +4864 -0
- package/src/rules/data/semgrep-rules/desktop-electron-pro.yaml +30 -0
- package/src/rules/data/semgrep-rules/desktop-vsto-suite.yaml +2759 -0
- package/src/rules/data/semgrep-rules/devops-security.yaml +393 -0
- package/src/rules/data/semgrep-rules/domain-access-management.yaml +1023 -0
- package/src/rules/data/semgrep-rules/domain-data-privacy.yaml +852 -0
- package/src/rules/data/semgrep-rules/domain-input-validation.yaml +2894 -0
- package/src/rules/data/semgrep-rules/domain-platform-hardening.yaml +1715 -0
- package/src/rules/data/semgrep-rules/ds-ml-security.yaml +2431 -0
- package/src/rules/data/semgrep-rules/fastapi-async.yaml +5953 -0
- package/src/rules/data/semgrep-rules/frontend-react.yaml +4035 -0
- package/src/rules/data/semgrep-rules/frontend-security.yaml +200 -0
- package/src/rules/data/semgrep-rules/go-core.yaml +4959 -0
- package/src/rules/data/semgrep-rules/hft-cpp-security.yaml +631 -0
- package/src/rules/data/semgrep-rules/infra-k8s-helm.yaml +4968 -0
- package/src/rules/data/semgrep-rules/integration-security.yaml +2362 -0
- package/src/rules/data/semgrep-rules/java-enterprise.yaml +14756 -0
- package/src/rules/data/semgrep-rules/java-spring.yaml +397 -0
- package/src/rules/data/semgrep-rules/license-compliance.yaml +186 -0
- package/src/rules/data/semgrep-rules/mobile-flutter.yaml +37 -0
- package/src/rules/data/semgrep-rules/mobile-security.yaml +721 -0
- package/src/rules/data/semgrep-rules/nodejs-nestjs.yaml +5164 -0
- package/src/rules/data/semgrep-rules/nodejs-security.yaml +326 -0
- package/src/rules/data/semgrep-rules/observability.yaml +381 -0
- package/src/rules/data/semgrep-rules/php-security.yaml +3601 -0
- package/src/rules/data/semgrep-rules/python-backend-pro.yaml +30 -0
- package/src/rules/data/semgrep-rules/python-django.yaml +181 -0
- package/src/rules/data/semgrep-rules/python-security.yaml +284 -0
- package/src/rules/data/semgrep-rules/ru-regulatory.yaml +496 -0
- package/src/rules/data/semgrep-rules/ruby-rails.yaml +3078 -0
- package/src/rules/data/semgrep-rules/rust-security.yaml +2701 -0
|
@@ -0,0 +1,2894 @@
|
|
|
1
|
+
rules:
|
|
2
|
+
- id: runsec.domain-input-validation.py-007
|
|
3
|
+
metadata:
|
|
4
|
+
runsec_version: v1.0
|
|
5
|
+
confidence: |-
|
|
6
|
+
0.9
|
|
7
|
+
exploit_scenario: |-
|
|
8
|
+
Атакующий указывает внутренний URL/метаданные; SSRF к IMDS или внутренним сервисам (CWE-918).
|
|
9
|
+
fix_template: |-
|
|
10
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
11
|
+
pattern-either:
|
|
12
|
+
- pattern: |-
|
|
13
|
+
requests.get(user_url)
|
|
14
|
+
- pattern-regex: 'Vulnerable:\\s*PY\\-007\\b'
|
|
15
|
+
message: |-
|
|
16
|
+
RunSec Detection [PY-007]: Input Validation
|
|
17
|
+
languages:
|
|
18
|
+
- generic
|
|
19
|
+
severity: WARNING
|
|
20
|
+
- id: runsec.domain-input-validation.py-012
|
|
21
|
+
metadata:
|
|
22
|
+
runsec_version: v1.0
|
|
23
|
+
confidence: |-
|
|
24
|
+
0.9
|
|
25
|
+
exploit_scenario: |-
|
|
26
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
27
|
+
fix_template: |-
|
|
28
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
29
|
+
pattern-either:
|
|
30
|
+
- pattern: |-
|
|
31
|
+
execute(f"...{id}...")
|
|
32
|
+
- pattern-regex: 'Vulnerable:\\s*PY\\-012\\b'
|
|
33
|
+
message: |-
|
|
34
|
+
RunSec Detection [PY-012]: Input Validation
|
|
35
|
+
languages:
|
|
36
|
+
- generic
|
|
37
|
+
severity: WARNING
|
|
38
|
+
- id: runsec.domain-input-validation.py-014
|
|
39
|
+
metadata:
|
|
40
|
+
runsec_version: v1.0
|
|
41
|
+
confidence: |-
|
|
42
|
+
0.9
|
|
43
|
+
exploit_scenario: |-
|
|
44
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
45
|
+
fix_template: |-
|
|
46
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
47
|
+
pattern-either:
|
|
48
|
+
- pattern: |-
|
|
49
|
+
open(base + "/" + filename)
|
|
50
|
+
- pattern-regex: 'Vulnerable:\\s*PY\\-014\\b'
|
|
51
|
+
message: |-
|
|
52
|
+
RunSec Detection [PY-014]: Input Validation
|
|
53
|
+
languages:
|
|
54
|
+
- generic
|
|
55
|
+
severity: WARNING
|
|
56
|
+
- id: runsec.domain-input-validation.py-015
|
|
57
|
+
metadata:
|
|
58
|
+
runsec_version: v1.0
|
|
59
|
+
confidence: |-
|
|
60
|
+
0.9
|
|
61
|
+
exploit_scenario: |-
|
|
62
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
63
|
+
fix_template: |-
|
|
64
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
65
|
+
pattern-either:
|
|
66
|
+
- pattern: |-
|
|
67
|
+
eval(user_expr)
|
|
68
|
+
- pattern-regex: 'Vulnerable:\\s*PY\\-015\\b'
|
|
69
|
+
message: |-
|
|
70
|
+
RunSec Detection [PY-015]: Input Validation
|
|
71
|
+
languages:
|
|
72
|
+
- generic
|
|
73
|
+
severity: WARNING
|
|
74
|
+
- id: runsec.domain-input-validation.py-021
|
|
75
|
+
metadata:
|
|
76
|
+
runsec_version: v1.0
|
|
77
|
+
confidence: |-
|
|
78
|
+
0.9
|
|
79
|
+
exploit_scenario: |-
|
|
80
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
81
|
+
fix_template: |-
|
|
82
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
83
|
+
pattern-either:
|
|
84
|
+
- pattern: |-
|
|
85
|
+
text(f"SELECT ... {name}")
|
|
86
|
+
- pattern-regex: 'Vulnerable:\\s*PY\\-021\\b'
|
|
87
|
+
message: |-
|
|
88
|
+
RunSec Detection [PY-021]: Input Validation
|
|
89
|
+
languages:
|
|
90
|
+
- generic
|
|
91
|
+
severity: WARNING
|
|
92
|
+
- id: runsec.domain-input-validation.py-025
|
|
93
|
+
metadata:
|
|
94
|
+
runsec_version: v1.0
|
|
95
|
+
confidence: |-
|
|
96
|
+
0.9
|
|
97
|
+
exploit_scenario: |-
|
|
98
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
99
|
+
fix_template: |-
|
|
100
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
101
|
+
pattern-either:
|
|
102
|
+
- pattern: |-
|
|
103
|
+
body processed without HMAC validation
|
|
104
|
+
- pattern-regex: 'Vulnerable:\\s*PY\\-025\\b'
|
|
105
|
+
message: |-
|
|
106
|
+
RunSec Detection [PY-025]: Input Validation
|
|
107
|
+
languages:
|
|
108
|
+
- generic
|
|
109
|
+
severity: WARNING
|
|
110
|
+
- id: runsec.domain-input-validation.py-110
|
|
111
|
+
metadata:
|
|
112
|
+
runsec_version: v1.0
|
|
113
|
+
confidence: |-
|
|
114
|
+
0.9
|
|
115
|
+
exploit_scenario: |-
|
|
116
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
117
|
+
fix_template: |-
|
|
118
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
119
|
+
pattern-either:
|
|
120
|
+
- pattern: |-
|
|
121
|
+
join(MEDIA_ROOT, file_path)
|
|
122
|
+
- pattern-regex: 'Vulnerable:\\s*PY\\-110\\b'
|
|
123
|
+
message: |-
|
|
124
|
+
RunSec Detection [PY-110]: Input Validation
|
|
125
|
+
languages:
|
|
126
|
+
- generic
|
|
127
|
+
severity: WARNING
|
|
128
|
+
- id: runsec.domain-input-validation.njs-001
|
|
129
|
+
metadata:
|
|
130
|
+
runsec_version: v1.0
|
|
131
|
+
confidence: |-
|
|
132
|
+
0.9
|
|
133
|
+
exploit_scenario: |-
|
|
134
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
135
|
+
fix_template: |-
|
|
136
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
137
|
+
pattern-either:
|
|
138
|
+
- pattern: |-
|
|
139
|
+
exec("tar " + userArchive)
|
|
140
|
+
- pattern-regex: 'Vulnerable:\\s*NJS\\-001\\b'
|
|
141
|
+
message: |-
|
|
142
|
+
RunSec Detection [NJS-001]: Input Validation
|
|
143
|
+
languages:
|
|
144
|
+
- generic
|
|
145
|
+
severity: WARNING
|
|
146
|
+
- id: runsec.domain-input-validation.njs-002
|
|
147
|
+
metadata:
|
|
148
|
+
runsec_version: v1.0
|
|
149
|
+
confidence: |-
|
|
150
|
+
0.9
|
|
151
|
+
exploit_scenario: |-
|
|
152
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
153
|
+
fix_template: |-
|
|
154
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
155
|
+
pattern-either:
|
|
156
|
+
- pattern: |-
|
|
157
|
+
fs.readFile(base + "/" + file)
|
|
158
|
+
- pattern-regex: 'Vulnerable:\\s*NJS\\-002\\b'
|
|
159
|
+
message: |-
|
|
160
|
+
RunSec Detection [NJS-002]: Input Validation
|
|
161
|
+
languages:
|
|
162
|
+
- generic
|
|
163
|
+
severity: WARNING
|
|
164
|
+
- id: runsec.domain-input-validation.njs-007
|
|
165
|
+
metadata:
|
|
166
|
+
runsec_version: v1.0
|
|
167
|
+
confidence: |-
|
|
168
|
+
0.9
|
|
169
|
+
exploit_scenario: |-
|
|
170
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
171
|
+
fix_template: |-
|
|
172
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
173
|
+
pattern-either:
|
|
174
|
+
- pattern: |-
|
|
175
|
+
fetch(req.body.url)
|
|
176
|
+
- pattern-regex: 'Vulnerable:\\s*NJS\\-007\\b'
|
|
177
|
+
message: |-
|
|
178
|
+
RunSec Detection [NJS-007]: Input Validation
|
|
179
|
+
languages:
|
|
180
|
+
- generic
|
|
181
|
+
severity: WARNING
|
|
182
|
+
- id: runsec.domain-input-validation.py-001
|
|
183
|
+
metadata:
|
|
184
|
+
runsec_version: v1.0
|
|
185
|
+
confidence: |-
|
|
186
|
+
0.9
|
|
187
|
+
exploit_scenario: |-
|
|
188
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
189
|
+
fix_template: |-
|
|
190
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
191
|
+
pattern-either:
|
|
192
|
+
- pattern: |-
|
|
193
|
+
app = FastAPI(debug=True)
|
|
194
|
+
- pattern-regex: 'Vulnerable:\\s*PY\\-001\\b'
|
|
195
|
+
message: |-
|
|
196
|
+
RunSec Detection [PY-001]: FastAPI deployment hardening
|
|
197
|
+
languages:
|
|
198
|
+
- generic
|
|
199
|
+
severity: WARNING
|
|
200
|
+
- id: runsec.domain-input-validation.py-003
|
|
201
|
+
metadata:
|
|
202
|
+
runsec_version: v1.0
|
|
203
|
+
confidence: |-
|
|
204
|
+
0.9
|
|
205
|
+
exploit_scenario: |-
|
|
206
|
+
Атакующий передаёт сериализованный объект; при небезопасной десериализации выполняет код на сервере (CWE-502).
|
|
207
|
+
fix_template: |-
|
|
208
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
209
|
+
pattern-either:
|
|
210
|
+
- pattern: |-
|
|
211
|
+
pickle.loads(data)
|
|
212
|
+
- pattern-regex: 'Vulnerable:\\s*PY\\-003\\b'
|
|
213
|
+
message: |-
|
|
214
|
+
RunSec Detection [PY-003]: CWE-502
|
|
215
|
+
languages:
|
|
216
|
+
- generic
|
|
217
|
+
severity: WARNING
|
|
218
|
+
- id: runsec.domain-input-validation.py-004
|
|
219
|
+
metadata:
|
|
220
|
+
runsec_version: v1.0
|
|
221
|
+
confidence: |-
|
|
222
|
+
0.9
|
|
223
|
+
exploit_scenario: |-
|
|
224
|
+
Атакующий подставляет команду в shell=True; выполняет произвольные команды ОС (CWE-78).
|
|
225
|
+
fix_template: |-
|
|
226
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
227
|
+
pattern-either:
|
|
228
|
+
- pattern: |-
|
|
229
|
+
subprocess.run(cmd, shell=True)
|
|
230
|
+
- pattern-regex: 'Vulnerable:\\s*PY\\-004\\b'
|
|
231
|
+
message: |-
|
|
232
|
+
RunSec Detection [PY-004]: CWE-78
|
|
233
|
+
languages:
|
|
234
|
+
- generic
|
|
235
|
+
severity: WARNING
|
|
236
|
+
- id: runsec.domain-input-validation.py-005
|
|
237
|
+
metadata:
|
|
238
|
+
runsec_version: v1.0
|
|
239
|
+
confidence: |-
|
|
240
|
+
0.9
|
|
241
|
+
exploit_scenario: |-
|
|
242
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
243
|
+
fix_template: |-
|
|
244
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
245
|
+
pattern-either:
|
|
246
|
+
- pattern: |-
|
|
247
|
+
yaml.load(data, Loader=yaml.Loader)
|
|
248
|
+
- pattern-regex: 'Vulnerable:\\s*PY\\-005\\b'
|
|
249
|
+
message: |-
|
|
250
|
+
RunSec Detection [PY-005]: PyYAML security
|
|
251
|
+
languages:
|
|
252
|
+
- generic
|
|
253
|
+
severity: WARNING
|
|
254
|
+
- id: runsec.domain-input-validation.py-006
|
|
255
|
+
metadata:
|
|
256
|
+
runsec_version: v1.0
|
|
257
|
+
confidence: |-
|
|
258
|
+
0.9
|
|
259
|
+
exploit_scenario: |-
|
|
260
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
261
|
+
fix_template: |-
|
|
262
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
263
|
+
pattern-either:
|
|
264
|
+
- pattern: |-
|
|
265
|
+
tempfile.mktemp()
|
|
266
|
+
- pattern-regex: 'Vulnerable:\\s*PY\\-006\\b'
|
|
267
|
+
message: |-
|
|
268
|
+
RunSec Detection [PY-006]: CWE-377
|
|
269
|
+
languages:
|
|
270
|
+
- generic
|
|
271
|
+
severity: WARNING
|
|
272
|
+
- id: runsec.domain-input-validation.py-008
|
|
273
|
+
metadata:
|
|
274
|
+
runsec_version: v1.0
|
|
275
|
+
confidence: |-
|
|
276
|
+
0.9
|
|
277
|
+
exploit_scenario: |-
|
|
278
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
279
|
+
fix_template: |-
|
|
280
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
281
|
+
pattern-either:
|
|
282
|
+
- pattern: |-
|
|
283
|
+
requests.get(url)
|
|
284
|
+
- pattern-regex: 'Vulnerable:\\s*PY\\-008\\b'
|
|
285
|
+
message: |-
|
|
286
|
+
RunSec Detection [PY-008]: Reliability/security baseline
|
|
287
|
+
languages:
|
|
288
|
+
- generic
|
|
289
|
+
severity: WARNING
|
|
290
|
+
- id: runsec.domain-input-validation.py-013
|
|
291
|
+
metadata:
|
|
292
|
+
runsec_version: v1.0
|
|
293
|
+
confidence: |-
|
|
294
|
+
0.9
|
|
295
|
+
exploit_scenario: |-
|
|
296
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
297
|
+
fix_template: |-
|
|
298
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
299
|
+
pattern-either:
|
|
300
|
+
- pattern: |-
|
|
301
|
+
Model(**request.json())
|
|
302
|
+
- pattern-regex: 'Vulnerable:\\s*PY\\-013\\b'
|
|
303
|
+
message: |-
|
|
304
|
+
RunSec Detection [PY-013]: OWASP Mass Assignment
|
|
305
|
+
languages:
|
|
306
|
+
- generic
|
|
307
|
+
severity: WARNING
|
|
308
|
+
- id: runsec.domain-input-validation.py-016
|
|
309
|
+
metadata:
|
|
310
|
+
runsec_version: v1.0
|
|
311
|
+
confidence: |-
|
|
312
|
+
0.9
|
|
313
|
+
exploit_scenario: |-
|
|
314
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
315
|
+
fix_template: |-
|
|
316
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
317
|
+
pattern-either:
|
|
318
|
+
- pattern: |-
|
|
319
|
+
allow_origins=["*"], allow_credentials=True
|
|
320
|
+
- pattern-regex: 'Vulnerable:\\s*PY\\-016\\b'
|
|
321
|
+
message: |-
|
|
322
|
+
RunSec Detection [PY-016]: CORS hardening
|
|
323
|
+
languages:
|
|
324
|
+
- generic
|
|
325
|
+
severity: WARNING
|
|
326
|
+
- id: runsec.domain-input-validation.py-018
|
|
327
|
+
metadata:
|
|
328
|
+
runsec_version: v1.0
|
|
329
|
+
confidence: |-
|
|
330
|
+
0.9
|
|
331
|
+
exploit_scenario: |-
|
|
332
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
333
|
+
fix_template: |-
|
|
334
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
335
|
+
pattern-either:
|
|
336
|
+
- pattern: |-
|
|
337
|
+
async def ...: requests.get(...)
|
|
338
|
+
- pattern-regex: 'Vulnerable:\\s*PY\\-018\\b'
|
|
339
|
+
message: |-
|
|
340
|
+
RunSec Detection [PY-018]: Async runtime safety
|
|
341
|
+
languages:
|
|
342
|
+
- generic
|
|
343
|
+
severity: WARNING
|
|
344
|
+
- id: runsec.domain-input-validation.py-019
|
|
345
|
+
metadata:
|
|
346
|
+
runsec_version: v1.0
|
|
347
|
+
confidence: |-
|
|
348
|
+
0.9
|
|
349
|
+
exploit_scenario: |-
|
|
350
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
351
|
+
fix_template: |-
|
|
352
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
353
|
+
pattern-either:
|
|
354
|
+
- pattern: |-
|
|
355
|
+
browser = p.chromium.launch(args=["--no-sandbox"])
|
|
356
|
+
- pattern-regex: 'Vulnerable:\\s*PY\\-019\\b'
|
|
357
|
+
message: |-
|
|
358
|
+
RunSec Detection [PY-019]: Browser automation hardening
|
|
359
|
+
languages:
|
|
360
|
+
- generic
|
|
361
|
+
severity: WARNING
|
|
362
|
+
- id: runsec.domain-input-validation.py-020
|
|
363
|
+
metadata:
|
|
364
|
+
runsec_version: v1.0
|
|
365
|
+
confidence: |-
|
|
366
|
+
0.9
|
|
367
|
+
exploit_scenario: |-
|
|
368
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
369
|
+
fix_template: |-
|
|
370
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
371
|
+
pattern-either:
|
|
372
|
+
- pattern: |-
|
|
373
|
+
@app.get("/users/{id}")
|
|
374
|
+
return db_user
|
|
375
|
+
- pattern-regex: 'Vulnerable:\\s*PY\\-020\\b'
|
|
376
|
+
message: |-
|
|
377
|
+
RunSec Detection [PY-020]: FastAPI response_model safety
|
|
378
|
+
languages:
|
|
379
|
+
- generic
|
|
380
|
+
severity: WARNING
|
|
381
|
+
- id: runsec.domain-input-validation.py-022
|
|
382
|
+
metadata:
|
|
383
|
+
runsec_version: v1.0
|
|
384
|
+
confidence: |-
|
|
385
|
+
0.9
|
|
386
|
+
exploit_scenario: |-
|
|
387
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
388
|
+
fix_template: |-
|
|
389
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
390
|
+
pattern-either:
|
|
391
|
+
- pattern: |-
|
|
392
|
+
UserModel.model_construct(**payload)
|
|
393
|
+
- pattern-regex: 'Vulnerable:\\s*PY\\-022\\b'
|
|
394
|
+
message: |-
|
|
395
|
+
RunSec Detection [PY-022]: Pydantic security
|
|
396
|
+
languages:
|
|
397
|
+
- generic
|
|
398
|
+
severity: WARNING
|
|
399
|
+
- id: runsec.domain-input-validation.py-029
|
|
400
|
+
metadata:
|
|
401
|
+
runsec_version: v1.0
|
|
402
|
+
confidence: |-
|
|
403
|
+
0.9
|
|
404
|
+
exploit_scenario: |-
|
|
405
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
406
|
+
fix_template: |-
|
|
407
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
408
|
+
pattern-either:
|
|
409
|
+
- pattern: |-
|
|
410
|
+
pickle serializer enabled in worker
|
|
411
|
+
- pattern-regex: 'Vulnerable:\\s*PY\\-029\\b'
|
|
412
|
+
message: |-
|
|
413
|
+
RunSec Detection [PY-029]: Celery security
|
|
414
|
+
languages:
|
|
415
|
+
- generic
|
|
416
|
+
severity: WARNING
|
|
417
|
+
- id: runsec.domain-input-validation.py-030
|
|
418
|
+
metadata:
|
|
419
|
+
runsec_version: v1.0
|
|
420
|
+
confidence: |-
|
|
421
|
+
0.9
|
|
422
|
+
exploit_scenario: |-
|
|
423
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
424
|
+
fix_template: |-
|
|
425
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
426
|
+
pattern-either:
|
|
427
|
+
- pattern: |-
|
|
428
|
+
return RedirectResponse(next_url)
|
|
429
|
+
- pattern-regex: 'Vulnerable:\\s*PY\\-030\\b'
|
|
430
|
+
message: |-
|
|
431
|
+
RunSec Detection [PY-030]: OWASP Open Redirect
|
|
432
|
+
languages:
|
|
433
|
+
- generic
|
|
434
|
+
severity: WARNING
|
|
435
|
+
- id: runsec.domain-input-validation.dja-001
|
|
436
|
+
metadata:
|
|
437
|
+
runsec_version: v1.0
|
|
438
|
+
confidence: |-
|
|
439
|
+
0.9
|
|
440
|
+
exploit_scenario: |-
|
|
441
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
442
|
+
fix_template: |-
|
|
443
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
444
|
+
pattern-either:
|
|
445
|
+
- pattern: |-
|
|
446
|
+
@csrf_exempt
|
|
447
|
+
def update_profile(request):
|
|
448
|
+
...
|
|
449
|
+
return JsonResponse({"ok": True})
|
|
450
|
+
- pattern-regex: 'Vulnerable:\\s*DJA\\-001\\b'
|
|
451
|
+
message: |-
|
|
452
|
+
RunSec Detection [DJA-001]: CWE-352
|
|
453
|
+
languages:
|
|
454
|
+
- generic
|
|
455
|
+
severity: WARNING
|
|
456
|
+
- id: runsec.domain-input-validation.dja-002
|
|
457
|
+
metadata:
|
|
458
|
+
runsec_version: v1.0
|
|
459
|
+
confidence: |-
|
|
460
|
+
0.9
|
|
461
|
+
exploit_scenario: |-
|
|
462
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
463
|
+
fix_template: |-
|
|
464
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
465
|
+
pattern-either:
|
|
466
|
+
- pattern: |-
|
|
467
|
+
q = "SELECT * FROM users WHERE email = '" + email + "'"
|
|
468
|
+
...
|
|
469
|
+
User.objects.raw(q)
|
|
470
|
+
- pattern-regex: 'Vulnerable:\\s*DJA\\-002\\b'
|
|
471
|
+
message: |-
|
|
472
|
+
RunSec Detection [DJA-002]: CWE-89
|
|
473
|
+
languages:
|
|
474
|
+
- generic
|
|
475
|
+
severity: WARNING
|
|
476
|
+
- id: runsec.domain-input-validation.dja-003
|
|
477
|
+
metadata:
|
|
478
|
+
runsec_version: v1.0
|
|
479
|
+
confidence: |-
|
|
480
|
+
0.9
|
|
481
|
+
exploit_scenario: |-
|
|
482
|
+
Атакующий провоцирует ошибку; при DEBUG=True получает детали стека и конфигурации (CWE-489).
|
|
483
|
+
fix_template: |-
|
|
484
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
485
|
+
pattern-either:
|
|
486
|
+
- pattern: |-
|
|
487
|
+
DEBUG = True
|
|
488
|
+
- pattern-regex: 'Vulnerable:\\s*DJA\\-003\\b'
|
|
489
|
+
message: |-
|
|
490
|
+
RunSec Detection [DJA-003]: CWE-489
|
|
491
|
+
languages:
|
|
492
|
+
- generic
|
|
493
|
+
severity: WARNING
|
|
494
|
+
- id: runsec.domain-input-validation.dja-004
|
|
495
|
+
metadata:
|
|
496
|
+
runsec_version: v1.0
|
|
497
|
+
confidence: |-
|
|
498
|
+
0.9
|
|
499
|
+
exploit_scenario: |-
|
|
500
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
501
|
+
fix_template: |-
|
|
502
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
503
|
+
pattern-either:
|
|
504
|
+
- pattern: |-
|
|
505
|
+
class UserForm(forms.ModelForm):
|
|
506
|
+
class Meta:
|
|
507
|
+
model = User
|
|
508
|
+
- pattern-regex: 'Vulnerable:\\s*DJA\\-004\\b'
|
|
509
|
+
message: |-
|
|
510
|
+
RunSec Detection [DJA-004]: CWE-915
|
|
511
|
+
languages:
|
|
512
|
+
- generic
|
|
513
|
+
severity: WARNING
|
|
514
|
+
- id: runsec.domain-input-validation.dja-005
|
|
515
|
+
metadata:
|
|
516
|
+
runsec_version: v1.0
|
|
517
|
+
confidence: |-
|
|
518
|
+
0.9
|
|
519
|
+
exploit_scenario: |-
|
|
520
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
521
|
+
fix_template: |-
|
|
522
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
523
|
+
pattern-either:
|
|
524
|
+
- pattern: |-
|
|
525
|
+
ALLOWED_HOSTS = ["*"]
|
|
526
|
+
- pattern-regex: 'Vulnerable:\\s*DJA\\-005\\b'
|
|
527
|
+
message: |-
|
|
528
|
+
RunSec Detection [DJA-005]: CWE-346
|
|
529
|
+
languages:
|
|
530
|
+
- generic
|
|
531
|
+
severity: WARNING
|
|
532
|
+
- id: runsec.domain-input-validation.dja-006
|
|
533
|
+
metadata:
|
|
534
|
+
runsec_version: v1.0
|
|
535
|
+
confidence: |-
|
|
536
|
+
0.9
|
|
537
|
+
exploit_scenario: |-
|
|
538
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
539
|
+
fix_template: |-
|
|
540
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
541
|
+
pattern-either:
|
|
542
|
+
- pattern: |-
|
|
543
|
+
return redirect(request.GET.get("next"))
|
|
544
|
+
- pattern-regex: 'Vulnerable:\\s*DJA\\-006\\b'
|
|
545
|
+
message: |-
|
|
546
|
+
RunSec Detection [DJA-006]: CWE-601
|
|
547
|
+
languages:
|
|
548
|
+
- generic
|
|
549
|
+
severity: WARNING
|
|
550
|
+
- id: runsec.domain-input-validation.dja-009
|
|
551
|
+
metadata:
|
|
552
|
+
runsec_version: v1.0
|
|
553
|
+
confidence: |-
|
|
554
|
+
0.9
|
|
555
|
+
exploit_scenario: |-
|
|
556
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
557
|
+
fix_template: |-
|
|
558
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
559
|
+
pattern-either:
|
|
560
|
+
- pattern: |-
|
|
561
|
+
path = os.path.join("/data/uploads", upload.name)
|
|
562
|
+
- pattern-regex: 'Vulnerable:\\s*DJA\\-009\\b'
|
|
563
|
+
message: |-
|
|
564
|
+
RunSec Detection [DJA-009]: CWE-22
|
|
565
|
+
languages:
|
|
566
|
+
- generic
|
|
567
|
+
severity: WARNING
|
|
568
|
+
- id: runsec.domain-input-validation.dja-011
|
|
569
|
+
metadata:
|
|
570
|
+
runsec_version: v1.0
|
|
571
|
+
confidence: |-
|
|
572
|
+
0.9
|
|
573
|
+
exploit_scenario: |-
|
|
574
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
575
|
+
fix_template: |-
|
|
576
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
577
|
+
pattern-either:
|
|
578
|
+
- pattern: |-
|
|
579
|
+
html = mark_safe(user_input)
|
|
580
|
+
- pattern-regex: 'Vulnerable:\\s*DJA\\-011\\b'
|
|
581
|
+
message: |-
|
|
582
|
+
RunSec Detection [DJA-011]: CWE-79
|
|
583
|
+
languages:
|
|
584
|
+
- generic
|
|
585
|
+
severity: WARNING
|
|
586
|
+
- id: runsec.domain-input-validation.dja-013
|
|
587
|
+
metadata:
|
|
588
|
+
runsec_version: v1.0
|
|
589
|
+
confidence: |-
|
|
590
|
+
0.9
|
|
591
|
+
exploit_scenario: |-
|
|
592
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
593
|
+
fix_template: |-
|
|
594
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
595
|
+
pattern-either:
|
|
596
|
+
- pattern: |-
|
|
597
|
+
qs = User.objects.extra(where=["id=%s" % user_id])
|
|
598
|
+
- pattern-regex: 'Vulnerable:\\s*DJA\\-013\\b'
|
|
599
|
+
message: |-
|
|
600
|
+
RunSec Detection [DJA-013]: CWE-89
|
|
601
|
+
languages:
|
|
602
|
+
- generic
|
|
603
|
+
severity: WARNING
|
|
604
|
+
- id: runsec.domain-input-validation.dja-016
|
|
605
|
+
metadata:
|
|
606
|
+
runsec_version: v1.0
|
|
607
|
+
confidence: |-
|
|
608
|
+
0.9
|
|
609
|
+
exploit_scenario: |-
|
|
610
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
611
|
+
fix_template: |-
|
|
612
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
613
|
+
pattern-either:
|
|
614
|
+
- pattern: |-
|
|
615
|
+
urlpatterns = [
|
|
616
|
+
re_path(r"^(a+)+$", view),
|
|
617
|
+
]
|
|
618
|
+
- pattern-regex: 'Vulnerable:\\s*DJA\\-016\\b'
|
|
619
|
+
message: |-
|
|
620
|
+
RunSec Detection [DJA-016]: CWE-400
|
|
621
|
+
languages:
|
|
622
|
+
- generic
|
|
623
|
+
severity: WARNING
|
|
624
|
+
- id: runsec.domain-input-validation.dja-017
|
|
625
|
+
metadata:
|
|
626
|
+
runsec_version: v1.0
|
|
627
|
+
confidence: |-
|
|
628
|
+
0.9
|
|
629
|
+
exploit_scenario: |-
|
|
630
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
631
|
+
fix_template: |-
|
|
632
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
633
|
+
pattern-either:
|
|
634
|
+
- pattern: |-
|
|
635
|
+
class AdminForm(forms.ModelForm):
|
|
636
|
+
class Meta:
|
|
637
|
+
model = User
|
|
638
|
+
exclude = []
|
|
639
|
+
- pattern-regex: 'Vulnerable:\\s*DJA\\-017\\b'
|
|
640
|
+
message: |-
|
|
641
|
+
RunSec Detection [DJA-017]: CWE-915
|
|
642
|
+
languages:
|
|
643
|
+
- generic
|
|
644
|
+
severity: WARNING
|
|
645
|
+
- id: runsec.domain-input-validation.dsk-100
|
|
646
|
+
metadata:
|
|
647
|
+
runsec_version: v1.0
|
|
648
|
+
confidence: |-
|
|
649
|
+
0.9
|
|
650
|
+
exploit_scenario: |-
|
|
651
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
652
|
+
fix_template: |-
|
|
653
|
+
Исключить динамическое исполнение строкового JS из недоверенных данных; передавать данные через безопасный IPC API с валидацией схемы.
|
|
654
|
+
pattern-either:
|
|
655
|
+
- pattern: |-
|
|
656
|
+
mainWindow.webContents.executeJavaScript(
|
|
657
|
+
"window.render(" + JSON.stringify(userInput) + ")"
|
|
658
|
+
)
|
|
659
|
+
- pattern-regex: 'Vulnerable:\\s*DSK\\-100\\b'
|
|
660
|
+
message: |-
|
|
661
|
+
RunSec Detection [DSK-100]: Insight SAR
|
|
662
|
+
languages:
|
|
663
|
+
- generic
|
|
664
|
+
severity: WARNING
|
|
665
|
+
- id: runsec.domain-input-validation.njs-003
|
|
666
|
+
metadata:
|
|
667
|
+
runsec_version: v1.0
|
|
668
|
+
confidence: |-
|
|
669
|
+
0.9
|
|
670
|
+
exploit_scenario: |-
|
|
671
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
672
|
+
fix_template: |-
|
|
673
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
674
|
+
pattern-either:
|
|
675
|
+
- pattern: |-
|
|
676
|
+
app.get("/data", (req,res) => { const x = fs.readFileSync(p) })
|
|
677
|
+
- pattern-regex: 'Vulnerable:\\s*NJS\\-003\\b'
|
|
678
|
+
message: |-
|
|
679
|
+
RunSec Detection [NJS-003]: Node.js Event Loop Safety
|
|
680
|
+
languages:
|
|
681
|
+
- generic
|
|
682
|
+
severity: WARNING
|
|
683
|
+
- id: runsec.domain-input-validation.njs-004
|
|
684
|
+
metadata:
|
|
685
|
+
runsec_version: v1.0
|
|
686
|
+
confidence: |-
|
|
687
|
+
0.9
|
|
688
|
+
exploit_scenario: |-
|
|
689
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
690
|
+
fix_template: |-
|
|
691
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
692
|
+
pattern-either:
|
|
693
|
+
- pattern: |-
|
|
694
|
+
const obj = serialize.unserialize(payload)
|
|
695
|
+
eval("(" + body + ")")
|
|
696
|
+
- pattern-regex: 'Vulnerable:\\s*NJS\\-004\\b'
|
|
697
|
+
message: |-
|
|
698
|
+
RunSec Detection [NJS-004]: OWASP Deserialization Security
|
|
699
|
+
languages:
|
|
700
|
+
- generic
|
|
701
|
+
severity: WARNING
|
|
702
|
+
- id: runsec.domain-input-validation.njs-006
|
|
703
|
+
metadata:
|
|
704
|
+
runsec_version: v1.0
|
|
705
|
+
confidence: |-
|
|
706
|
+
0.9
|
|
707
|
+
exploit_scenario: |-
|
|
708
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
709
|
+
fix_template: |-
|
|
710
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
711
|
+
pattern-either:
|
|
712
|
+
- pattern: |-
|
|
713
|
+
res.redirect(req.query.next)
|
|
714
|
+
- pattern-regex: 'Vulnerable:\\s*NJS\\-006\\b'
|
|
715
|
+
message: |-
|
|
716
|
+
RunSec Detection [NJS-006]: OWASP Open Redirect
|
|
717
|
+
languages:
|
|
718
|
+
- generic
|
|
719
|
+
severity: WARNING
|
|
720
|
+
- id: runsec.domain-input-validation.njs-008
|
|
721
|
+
metadata:
|
|
722
|
+
runsec_version: v1.0
|
|
723
|
+
confidence: |-
|
|
724
|
+
0.9
|
|
725
|
+
exploit_scenario: |-
|
|
726
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
727
|
+
fix_template: |-
|
|
728
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
729
|
+
pattern-either:
|
|
730
|
+
- pattern: |-
|
|
731
|
+
cors({ origin: "*", credentials: true })
|
|
732
|
+
- pattern-regex: 'Vulnerable:\\s*NJS\\-008\\b'
|
|
733
|
+
message: |-
|
|
734
|
+
RunSec Detection [NJS-008]: OWASP CORS Security
|
|
735
|
+
languages:
|
|
736
|
+
- generic
|
|
737
|
+
severity: WARNING
|
|
738
|
+
- id: runsec.domain-input-validation.njs-011
|
|
739
|
+
metadata:
|
|
740
|
+
runsec_version: v1.0
|
|
741
|
+
confidence: |-
|
|
742
|
+
0.9
|
|
743
|
+
exploit_scenario: |-
|
|
744
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
745
|
+
fix_template: |-
|
|
746
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
747
|
+
pattern-either:
|
|
748
|
+
- pattern: |-
|
|
749
|
+
deepMerge(config, req.body)
|
|
750
|
+
querystring.parse(req.url) без фильтра ключей
|
|
751
|
+
- pattern-regex: 'Vulnerable:\\s*NJS\\-011\\b'
|
|
752
|
+
message: |-
|
|
753
|
+
RunSec Detection [NJS-011]: Prototype Pollution Server-Side
|
|
754
|
+
languages:
|
|
755
|
+
- generic
|
|
756
|
+
severity: WARNING
|
|
757
|
+
- id: runsec.domain-input-validation.njs-012
|
|
758
|
+
metadata:
|
|
759
|
+
runsec_version: v1.0
|
|
760
|
+
confidence: |-
|
|
761
|
+
0.9
|
|
762
|
+
exploit_scenario: |-
|
|
763
|
+
Атакующий подставляет строку в SQL через шаблон; при отсутствии параметров выполняет произвольный SQL (CWE-89).
|
|
764
|
+
fix_template: |-
|
|
765
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
766
|
+
pattern-either:
|
|
767
|
+
- pattern: |-
|
|
768
|
+
const b = Buffer.allocUnsafe(size)
|
|
769
|
+
- pattern-regex: 'Vulnerable:\\s*NJS\\-012\\b'
|
|
770
|
+
message: |-
|
|
771
|
+
RunSec Detection [NJS-012]: Node.js Buffer Security
|
|
772
|
+
languages:
|
|
773
|
+
- generic
|
|
774
|
+
severity: WARNING
|
|
775
|
+
- id: runsec.domain-input-validation.njs-013
|
|
776
|
+
metadata:
|
|
777
|
+
runsec_version: v1.0
|
|
778
|
+
confidence: |-
|
|
779
|
+
0.9
|
|
780
|
+
exploit_scenario: |-
|
|
781
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
782
|
+
fix_template: |-
|
|
783
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
784
|
+
pattern-either:
|
|
785
|
+
- pattern: |-
|
|
786
|
+
const id = req.query.id
|
|
787
|
+
if (id.includes("admin")) ...
|
|
788
|
+
- pattern-regex: 'Vulnerable:\\s*NJS\\-013\\b'
|
|
789
|
+
message: |-
|
|
790
|
+
RunSec Detection [NJS-013]: OWASP Input Validation
|
|
791
|
+
languages:
|
|
792
|
+
- generic
|
|
793
|
+
severity: WARNING
|
|
794
|
+
- id: runsec.domain-input-validation.njs-014
|
|
795
|
+
metadata:
|
|
796
|
+
runsec_version: v1.0
|
|
797
|
+
confidence: |-
|
|
798
|
+
0.9
|
|
799
|
+
exploit_scenario: |-
|
|
800
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
801
|
+
fix_template: |-
|
|
802
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
803
|
+
pattern-either:
|
|
804
|
+
- pattern: |-
|
|
805
|
+
vm.runInNewContext(untrustedCode, sandbox)
|
|
806
|
+
- pattern-regex: 'Vulnerable:\\s*NJS\\-014\\b'
|
|
807
|
+
message: |-
|
|
808
|
+
RunSec Detection [NJS-014]: Node.js Sandbox Security
|
|
809
|
+
languages:
|
|
810
|
+
- generic
|
|
811
|
+
severity: WARNING
|
|
812
|
+
- id: runsec.domain-input-validation.njs-015
|
|
813
|
+
metadata:
|
|
814
|
+
runsec_version: v1.0
|
|
815
|
+
confidence: |-
|
|
816
|
+
0.9
|
|
817
|
+
exploit_scenario: |-
|
|
818
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
819
|
+
fix_template: |-
|
|
820
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
821
|
+
pattern-either:
|
|
822
|
+
- pattern: |-
|
|
823
|
+
const re = /(a+)+$/
|
|
824
|
+
if (re.test(req.body.input))
|
|
825
|
+
- pattern-regex: 'Vulnerable:\\s*NJS\\-015\\b'
|
|
826
|
+
message: |-
|
|
827
|
+
RunSec Detection [NJS-015]: OWASP ReDoS (Server Side)
|
|
828
|
+
languages:
|
|
829
|
+
- generic
|
|
830
|
+
severity: WARNING
|
|
831
|
+
- id: runsec.domain-input-validation.njs-017
|
|
832
|
+
metadata:
|
|
833
|
+
runsec_version: v1.0
|
|
834
|
+
confidence: |-
|
|
835
|
+
0.9
|
|
836
|
+
exploit_scenario: |-
|
|
837
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
838
|
+
fix_template: |-
|
|
839
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
840
|
+
pattern-either:
|
|
841
|
+
- pattern: |-
|
|
842
|
+
"lib-x": "git+https://github.com/org/lib-x.git" (без commit hash)
|
|
843
|
+
# no package-lock.json/npm-shrinkwrap.json
|
|
844
|
+
- pattern-regex: 'Vulnerable:\\s*NJS\\-017\\b'
|
|
845
|
+
message: |-
|
|
846
|
+
RunSec Detection [NJS-017]: Supply Chain Security
|
|
847
|
+
languages:
|
|
848
|
+
- generic
|
|
849
|
+
severity: WARNING
|
|
850
|
+
- id: runsec.domain-input-validation.njs-018
|
|
851
|
+
metadata:
|
|
852
|
+
runsec_version: v1.0
|
|
853
|
+
confidence: |-
|
|
854
|
+
0.9
|
|
855
|
+
exploit_scenario: |-
|
|
856
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
857
|
+
fix_template: |-
|
|
858
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
859
|
+
pattern-either:
|
|
860
|
+
- pattern: |-
|
|
861
|
+
app.disable("x-powered-by") отсутствует
|
|
862
|
+
helmet() не подключен
|
|
863
|
+
- pattern-regex: 'Vulnerable:\\s*NJS\\-018\\b'
|
|
864
|
+
message: |-
|
|
865
|
+
RunSec Detection [NJS-018]: HTTP Header Hardening
|
|
866
|
+
languages:
|
|
867
|
+
- generic
|
|
868
|
+
severity: WARNING
|
|
869
|
+
- id: runsec.domain-input-validation.njs-020
|
|
870
|
+
metadata:
|
|
871
|
+
runsec_version: v1.0
|
|
872
|
+
confidence: |-
|
|
873
|
+
0.9
|
|
874
|
+
exploit_scenario: |-
|
|
875
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
876
|
+
fix_template: |-
|
|
877
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
878
|
+
pattern-either:
|
|
879
|
+
- pattern: |-
|
|
880
|
+
fs.unlink(req.body.filePath, cb)
|
|
881
|
+
- pattern-regex: 'Vulnerable:\\s*NJS\\-020\\b'
|
|
882
|
+
message: |-
|
|
883
|
+
RunSec Detection [NJS-020]: CWE-73 / File Path Control
|
|
884
|
+
languages:
|
|
885
|
+
- generic
|
|
886
|
+
severity: WARNING
|
|
887
|
+
- id: runsec.domain-input-validation.njs-022
|
|
888
|
+
metadata:
|
|
889
|
+
runsec_version: v1.0
|
|
890
|
+
confidence: |-
|
|
891
|
+
0.9
|
|
892
|
+
exploit_scenario: |-
|
|
893
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
894
|
+
fix_template: |-
|
|
895
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
896
|
+
pattern-either:
|
|
897
|
+
- pattern: |-
|
|
898
|
+
bcrypt.hash(password, 4)
|
|
899
|
+
- pattern-regex: 'Vulnerable:\\s*NJS\\-022\\b'
|
|
900
|
+
message: |-
|
|
901
|
+
RunSec Detection [NJS-022]: OWASP Password Storage
|
|
902
|
+
languages:
|
|
903
|
+
- generic
|
|
904
|
+
severity: WARNING
|
|
905
|
+
- id: runsec.domain-input-validation.njs-023
|
|
906
|
+
metadata:
|
|
907
|
+
runsec_version: v1.0
|
|
908
|
+
confidence: |-
|
|
909
|
+
0.9
|
|
910
|
+
exploit_scenario: |-
|
|
911
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
912
|
+
fix_template: |-
|
|
913
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
914
|
+
pattern-either:
|
|
915
|
+
- pattern: |-
|
|
916
|
+
User.find({ email: req.body.email }) (без schema/type guard)
|
|
917
|
+
- pattern-regex: 'Vulnerable:\\s*NJS\\-023\\b'
|
|
918
|
+
message: |-
|
|
919
|
+
RunSec Detection [NJS-023]: OWASP NoSQL Injection
|
|
920
|
+
languages:
|
|
921
|
+
- generic
|
|
922
|
+
severity: WARNING
|
|
923
|
+
- id: runsec.domain-input-validation.njs-025
|
|
924
|
+
metadata:
|
|
925
|
+
runsec_version: v1.0
|
|
926
|
+
confidence: |-
|
|
927
|
+
0.9
|
|
928
|
+
exploit_scenario: |-
|
|
929
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
930
|
+
fix_template: |-
|
|
931
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
932
|
+
pattern-either:
|
|
933
|
+
- pattern: |-
|
|
934
|
+
cors({ methods: "*", allowedHeaders: "*" })
|
|
935
|
+
- pattern-regex: 'Vulnerable:\\s*NJS\\-025\\b'
|
|
936
|
+
message: |-
|
|
937
|
+
RunSec Detection [NJS-025]: CORS Hardening Best Practices
|
|
938
|
+
languages:
|
|
939
|
+
- generic
|
|
940
|
+
severity: WARNING
|
|
941
|
+
- id: runsec.domain-input-validation.njs-026
|
|
942
|
+
metadata:
|
|
943
|
+
runsec_version: v1.0
|
|
944
|
+
confidence: |-
|
|
945
|
+
0.9
|
|
946
|
+
exploit_scenario: |-
|
|
947
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
948
|
+
fix_template: |-
|
|
949
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
950
|
+
pattern-either:
|
|
951
|
+
- pattern: |-
|
|
952
|
+
await User.create(req.body)
|
|
953
|
+
await User.update(req.body, { where: ... })
|
|
954
|
+
- pattern-regex: 'Vulnerable:\\s*NJS\\-026\\b'
|
|
955
|
+
message: |-
|
|
956
|
+
RunSec Detection [NJS-026]: OWASP Mass Assignment
|
|
957
|
+
languages:
|
|
958
|
+
- generic
|
|
959
|
+
severity: WARNING
|
|
960
|
+
- id: runsec.domain-input-validation.njs-027
|
|
961
|
+
metadata:
|
|
962
|
+
runsec_version: v1.0
|
|
963
|
+
confidence: |-
|
|
964
|
+
0.9
|
|
965
|
+
exploit_scenario: |-
|
|
966
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
967
|
+
fix_template: |-
|
|
968
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
969
|
+
pattern-either:
|
|
970
|
+
- pattern: |-
|
|
971
|
+
const buf = Buffer.from(input)
|
|
972
|
+
- pattern-regex: 'Vulnerable:\\s*NJS\\-027\\b'
|
|
973
|
+
message: |-
|
|
974
|
+
RunSec Detection [NJS-027]: Node.js Buffer Safety
|
|
975
|
+
languages:
|
|
976
|
+
- generic
|
|
977
|
+
severity: WARNING
|
|
978
|
+
- id: runsec.domain-input-validation.njs-028
|
|
979
|
+
metadata:
|
|
980
|
+
runsec_version: v1.0
|
|
981
|
+
confidence: |-
|
|
982
|
+
0.9
|
|
983
|
+
exploit_scenario: |-
|
|
984
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
985
|
+
fix_template: |-
|
|
986
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
987
|
+
pattern-either:
|
|
988
|
+
- pattern: |-
|
|
989
|
+
"scripts": { "build": "tsc", "test": "jest" } (без npm audit/snyk/socket)
|
|
990
|
+
- pattern-regex: 'Vulnerable:\\s*NJS\\-028\\b'
|
|
991
|
+
message: |-
|
|
992
|
+
RunSec Detection [NJS-028]: Supply Chain SCA Controls
|
|
993
|
+
languages:
|
|
994
|
+
- generic
|
|
995
|
+
severity: WARNING
|
|
996
|
+
- id: runsec.domain-input-validation.njs-029
|
|
997
|
+
metadata:
|
|
998
|
+
runsec_version: v1.0
|
|
999
|
+
confidence: |-
|
|
1000
|
+
0.9
|
|
1001
|
+
exploit_scenario: |-
|
|
1002
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1003
|
+
fix_template: |-
|
|
1004
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
1005
|
+
pattern-either:
|
|
1006
|
+
- pattern: |-
|
|
1007
|
+
<%- userContent %> (EJS)
|
|
1008
|
+
!= userContent (Pug)
|
|
1009
|
+
- pattern-regex: 'Vulnerable:\\s*NJS\\-029\\b'
|
|
1010
|
+
message: |-
|
|
1011
|
+
RunSec Detection [NJS-029]: SSTI/XSS Template Security
|
|
1012
|
+
languages:
|
|
1013
|
+
- generic
|
|
1014
|
+
severity: WARNING
|
|
1015
|
+
- id: runsec.domain-input-validation.njs-031
|
|
1016
|
+
metadata:
|
|
1017
|
+
runsec_version: v1.0
|
|
1018
|
+
confidence: |-
|
|
1019
|
+
0.9
|
|
1020
|
+
exploit_scenario: |-
|
|
1021
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1022
|
+
fix_template: |-
|
|
1023
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
1024
|
+
pattern-either:
|
|
1025
|
+
- pattern: |-
|
|
1026
|
+
const merged = { ...defaults, ...req.body }
|
|
1027
|
+
- pattern-regex: 'Vulnerable:\\s*NJS\\-031\\b'
|
|
1028
|
+
message: |-
|
|
1029
|
+
RunSec Detection [NJS-031]: Prototype Pollution (Object Spread)
|
|
1030
|
+
languages:
|
|
1031
|
+
- generic
|
|
1032
|
+
severity: WARNING
|
|
1033
|
+
- id: runsec.domain-input-validation.njs-035
|
|
1034
|
+
metadata:
|
|
1035
|
+
runsec_version: v1.0
|
|
1036
|
+
confidence: |-
|
|
1037
|
+
0.9
|
|
1038
|
+
exploit_scenario: |-
|
|
1039
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1040
|
+
fix_template: |-
|
|
1041
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
1042
|
+
pattern-either:
|
|
1043
|
+
- pattern: |-
|
|
1044
|
+
let passwordPlain = req.body.password (долгоживущая переменная)
|
|
1045
|
+
- pattern-regex: 'Vulnerable:\\s*NJS\\-035\\b'
|
|
1046
|
+
message: |-
|
|
1047
|
+
RunSec Detection [NJS-035]: Sensitive Data Memory Hygiene
|
|
1048
|
+
languages:
|
|
1049
|
+
- generic
|
|
1050
|
+
severity: WARNING
|
|
1051
|
+
- id: runsec.domain-input-validation.fts-001
|
|
1052
|
+
metadata:
|
|
1053
|
+
runsec_version: v1.0
|
|
1054
|
+
confidence: |-
|
|
1055
|
+
0.9
|
|
1056
|
+
exploit_scenario: |-
|
|
1057
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1058
|
+
fix_template: |-
|
|
1059
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
1060
|
+
pattern-either:
|
|
1061
|
+
- pattern: |-
|
|
1062
|
+
dangerouslySetInnerHTML={{ __html: userHtml }}
|
|
1063
|
+
<div v-html="content"></div>
|
|
1064
|
+
el.innerHTML = payload
|
|
1065
|
+
- pattern-regex: 'Vulnerable:\\s*FTS\\-001\\b'
|
|
1066
|
+
message: |-
|
|
1067
|
+
RunSec Detection [FTS-001]: OWASP XSS Prevention Cheat Sheet
|
|
1068
|
+
languages:
|
|
1069
|
+
- generic
|
|
1070
|
+
severity: WARNING
|
|
1071
|
+
- id: runsec.domain-input-validation.fts-004
|
|
1072
|
+
metadata:
|
|
1073
|
+
runsec_version: v1.0
|
|
1074
|
+
confidence: |-
|
|
1075
|
+
0.9
|
|
1076
|
+
exploit_scenario: |-
|
|
1077
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1078
|
+
fix_template: |-
|
|
1079
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
1080
|
+
pattern-either:
|
|
1081
|
+
- pattern: |-
|
|
1082
|
+
window.addEventListener("message", (e) => handle(e.data))
|
|
1083
|
+
target.postMessage(data, "*")
|
|
1084
|
+
- pattern-regex: 'Vulnerable:\\s*FTS\\-004\\b'
|
|
1085
|
+
message: |-
|
|
1086
|
+
RunSec Detection [FTS-004]: OWASP HTML5 Security Cheat Sheet
|
|
1087
|
+
languages:
|
|
1088
|
+
- generic
|
|
1089
|
+
severity: WARNING
|
|
1090
|
+
- id: runsec.domain-input-validation.fts-006
|
|
1091
|
+
metadata:
|
|
1092
|
+
runsec_version: v1.0
|
|
1093
|
+
confidence: |-
|
|
1094
|
+
0.9
|
|
1095
|
+
exploit_scenario: |-
|
|
1096
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1097
|
+
fix_template: |-
|
|
1098
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
1099
|
+
pattern-either:
|
|
1100
|
+
- pattern: |-
|
|
1101
|
+
<meta http-equiv="Content-Security-Policy" content="">
|
|
1102
|
+
script-src 'unsafe-inline' 'unsafe-eval'
|
|
1103
|
+
- pattern-regex: 'Vulnerable:\\s*FTS\\-006\\b'
|
|
1104
|
+
message: |-
|
|
1105
|
+
RunSec Detection [FTS-006]: CSP Level 3 guidance
|
|
1106
|
+
languages:
|
|
1107
|
+
- generic
|
|
1108
|
+
severity: WARNING
|
|
1109
|
+
- id: runsec.domain-input-validation.fts-007
|
|
1110
|
+
metadata:
|
|
1111
|
+
runsec_version: v1.0
|
|
1112
|
+
confidence: |-
|
|
1113
|
+
0.9
|
|
1114
|
+
exploit_scenario: |-
|
|
1115
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1116
|
+
fix_template: |-
|
|
1117
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
1118
|
+
pattern-either:
|
|
1119
|
+
- pattern: |-
|
|
1120
|
+
# no frame-ancestors / X-Frame-Options policy
|
|
1121
|
+
- pattern-regex: 'Vulnerable:\\s*FTS\\-007\\b'
|
|
1122
|
+
message: |-
|
|
1123
|
+
RunSec Detection [FTS-007]: OWASP Clickjacking Defense
|
|
1124
|
+
languages:
|
|
1125
|
+
- generic
|
|
1126
|
+
severity: WARNING
|
|
1127
|
+
- id: runsec.domain-input-validation.fts-010
|
|
1128
|
+
metadata:
|
|
1129
|
+
runsec_version: v1.0
|
|
1130
|
+
confidence: |-
|
|
1131
|
+
0.9
|
|
1132
|
+
exploit_scenario: |-
|
|
1133
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1134
|
+
fix_template: |-
|
|
1135
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
1136
|
+
pattern-either:
|
|
1137
|
+
- pattern: |-
|
|
1138
|
+
self.addEventListener("fetch", (event) => event.respondWith(caches.match(req)))
|
|
1139
|
+
# no cache key validation / stale cache fallback
|
|
1140
|
+
- pattern-regex: 'Vulnerable:\\s*FTS\\-010\\b'
|
|
1141
|
+
message: |-
|
|
1142
|
+
RunSec Detection [FTS-010]: PWA security guidance
|
|
1143
|
+
languages:
|
|
1144
|
+
- generic
|
|
1145
|
+
severity: WARNING
|
|
1146
|
+
- id: runsec.domain-input-validation.fts-011
|
|
1147
|
+
metadata:
|
|
1148
|
+
runsec_version: v1.0
|
|
1149
|
+
confidence: |-
|
|
1150
|
+
0.9
|
|
1151
|
+
exploit_scenario: |-
|
|
1152
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1153
|
+
fix_template: |-
|
|
1154
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
1155
|
+
pattern-either:
|
|
1156
|
+
- pattern: |-
|
|
1157
|
+
eval(userInput)
|
|
1158
|
+
new Function(code)
|
|
1159
|
+
setTimeout("run()", 100)
|
|
1160
|
+
setInterval("tick()", 1000)
|
|
1161
|
+
- pattern-regex: 'Vulnerable:\\s*FTS\\-011\\b'
|
|
1162
|
+
message: |-
|
|
1163
|
+
RunSec Detection [FTS-011]: OWASP JavaScript Security Guidelines
|
|
1164
|
+
languages:
|
|
1165
|
+
- generic
|
|
1166
|
+
severity: WARNING
|
|
1167
|
+
- id: runsec.domain-input-validation.fts-012
|
|
1168
|
+
metadata:
|
|
1169
|
+
runsec_version: v1.0
|
|
1170
|
+
confidence: |-
|
|
1171
|
+
0.9
|
|
1172
|
+
exploit_scenario: |-
|
|
1173
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1174
|
+
fix_template: |-
|
|
1175
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
1176
|
+
pattern-either:
|
|
1177
|
+
- pattern: |-
|
|
1178
|
+
deepMerge(target, payload)
|
|
1179
|
+
obj[key] = value (без фильтра __proto__/constructor/prototype)
|
|
1180
|
+
- pattern-regex: 'Vulnerable:\\s*FTS\\-012\\b'
|
|
1181
|
+
message: |-
|
|
1182
|
+
RunSec Detection [FTS-012]: Prototype Pollution Prevention
|
|
1183
|
+
languages:
|
|
1184
|
+
- generic
|
|
1185
|
+
severity: WARNING
|
|
1186
|
+
- id: runsec.domain-input-validation.fts-013
|
|
1187
|
+
metadata:
|
|
1188
|
+
runsec_version: v1.0
|
|
1189
|
+
confidence: |-
|
|
1190
|
+
0.9
|
|
1191
|
+
exploit_scenario: |-
|
|
1192
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1193
|
+
fix_template: |-
|
|
1194
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
1195
|
+
pattern-either:
|
|
1196
|
+
- pattern: |-
|
|
1197
|
+
leakedVar = 1
|
|
1198
|
+
Array.prototype.custom = fn
|
|
1199
|
+
- pattern-regex: 'Vulnerable:\\s*FTS\\-013\\b'
|
|
1200
|
+
message: |-
|
|
1201
|
+
RunSec Detection [FTS-013]: JavaScript Secure Coding
|
|
1202
|
+
languages:
|
|
1203
|
+
- generic
|
|
1204
|
+
severity: WARNING
|
|
1205
|
+
- id: runsec.domain-input-validation.fts-015
|
|
1206
|
+
metadata:
|
|
1207
|
+
runsec_version: v1.0
|
|
1208
|
+
confidence: |-
|
|
1209
|
+
0.9
|
|
1210
|
+
exploit_scenario: |-
|
|
1211
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1212
|
+
fix_template: |-
|
|
1213
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
1214
|
+
pattern-either:
|
|
1215
|
+
- pattern: |-
|
|
1216
|
+
const re = /(a+)+$/
|
|
1217
|
+
re.test(input)
|
|
1218
|
+
- pattern-regex: 'Vulnerable:\\s*FTS\\-015\\b'
|
|
1219
|
+
message: |-
|
|
1220
|
+
RunSec Detection [FTS-015]: OWASP ReDoS
|
|
1221
|
+
languages:
|
|
1222
|
+
- generic
|
|
1223
|
+
severity: WARNING
|
|
1224
|
+
- id: runsec.domain-input-validation.fts-016
|
|
1225
|
+
metadata:
|
|
1226
|
+
runsec_version: v1.0
|
|
1227
|
+
confidence: |-
|
|
1228
|
+
0.9
|
|
1229
|
+
exploit_scenario: |-
|
|
1230
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1231
|
+
fix_template: |-
|
|
1232
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
1233
|
+
pattern-either:
|
|
1234
|
+
- pattern: |-
|
|
1235
|
+
for (const id of ids) { await fetchUser(id) }
|
|
1236
|
+
items.map(async (i) => await apiCall(i))
|
|
1237
|
+
- pattern-regex: 'Vulnerable:\\s*FTS\\-016\\b'
|
|
1238
|
+
message: |-
|
|
1239
|
+
RunSec Detection [FTS-016]: JS Async Performance/Safety
|
|
1240
|
+
languages:
|
|
1241
|
+
- generic
|
|
1242
|
+
severity: WARNING
|
|
1243
|
+
- id: runsec.domain-input-validation.cwe-78-py
|
|
1244
|
+
metadata:
|
|
1245
|
+
runsec_version: v1.0
|
|
1246
|
+
confidence: |-
|
|
1247
|
+
0.9
|
|
1248
|
+
exploit_scenario: |-
|
|
1249
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1250
|
+
fix_template: |-
|
|
1251
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
1252
|
+
pattern-either:
|
|
1253
|
+
- pattern: |-
|
|
1254
|
+
os.system(user_cmd)
|
|
1255
|
+
os.popen(user_cmd)
|
|
1256
|
+
subprocess.Popen(user_cmd, shell=True)
|
|
1257
|
+
subprocess.run(user_cmd, shell=True)
|
|
1258
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-78\\-PY\\b'
|
|
1259
|
+
message: |-
|
|
1260
|
+
RunSec Detection [CWE-78-PY]: CWE-78
|
|
1261
|
+
languages:
|
|
1262
|
+
- generic
|
|
1263
|
+
severity: WARNING
|
|
1264
|
+
- id: runsec.domain-input-validation.cwe-89-py
|
|
1265
|
+
metadata:
|
|
1266
|
+
runsec_version: v1.0
|
|
1267
|
+
confidence: |-
|
|
1268
|
+
0.9
|
|
1269
|
+
exploit_scenario: |-
|
|
1270
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1271
|
+
fix_template: |-
|
|
1272
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
1273
|
+
pattern-either:
|
|
1274
|
+
- pattern: |-
|
|
1275
|
+
cursor.execute(f"SELECT * FROM users WHERE id = {user_id}")
|
|
1276
|
+
cursor.execute("... %s" % user_input)
|
|
1277
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-89\\-PY\\b'
|
|
1278
|
+
message: |-
|
|
1279
|
+
RunSec Detection [CWE-89-PY]: CWE-89
|
|
1280
|
+
languages:
|
|
1281
|
+
- generic
|
|
1282
|
+
severity: WARNING
|
|
1283
|
+
- id: runsec.domain-input-validation.cwe-94-py
|
|
1284
|
+
metadata:
|
|
1285
|
+
runsec_version: v1.0
|
|
1286
|
+
confidence: |-
|
|
1287
|
+
0.9
|
|
1288
|
+
exploit_scenario: |-
|
|
1289
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1290
|
+
fix_template: |-
|
|
1291
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
1292
|
+
pattern-either:
|
|
1293
|
+
- pattern: |-
|
|
1294
|
+
eval(user_code)
|
|
1295
|
+
exec(user_code)
|
|
1296
|
+
compile(user_code, "<x>", "exec")
|
|
1297
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-94\\-PY\\b'
|
|
1298
|
+
message: |-
|
|
1299
|
+
RunSec Detection [CWE-94-PY]: CWE-94
|
|
1300
|
+
languages:
|
|
1301
|
+
- generic
|
|
1302
|
+
severity: WARNING
|
|
1303
|
+
- id: runsec.domain-input-validation.cwe-78-js
|
|
1304
|
+
metadata:
|
|
1305
|
+
runsec_version: v1.0
|
|
1306
|
+
confidence: |-
|
|
1307
|
+
0.9
|
|
1308
|
+
exploit_scenario: |-
|
|
1309
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1310
|
+
fix_template: |-
|
|
1311
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
1312
|
+
pattern-either:
|
|
1313
|
+
- pattern: |-
|
|
1314
|
+
child_process.exec(userInput)
|
|
1315
|
+
child_process.spawn(cmd, args, { shell: true })
|
|
1316
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-78\\-JS\\b'
|
|
1317
|
+
message: |-
|
|
1318
|
+
RunSec Detection [CWE-78-JS]: CWE-78
|
|
1319
|
+
languages:
|
|
1320
|
+
- generic
|
|
1321
|
+
severity: WARNING
|
|
1322
|
+
- id: runsec.domain-input-validation.cwe-79-js
|
|
1323
|
+
metadata:
|
|
1324
|
+
runsec_version: v1.0
|
|
1325
|
+
confidence: |-
|
|
1326
|
+
0.9
|
|
1327
|
+
exploit_scenario: |-
|
|
1328
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1329
|
+
fix_template: |-
|
|
1330
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
1331
|
+
pattern-either:
|
|
1332
|
+
- pattern: |-
|
|
1333
|
+
dangerouslySetInnerHTML={{ __html: userHtml }}
|
|
1334
|
+
<div v-html="userHtml"></div>
|
|
1335
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-79\\-JS\\b'
|
|
1336
|
+
message: |-
|
|
1337
|
+
RunSec Detection [CWE-79-JS]: CWE-79
|
|
1338
|
+
languages:
|
|
1339
|
+
- generic
|
|
1340
|
+
severity: WARNING
|
|
1341
|
+
- id: runsec.domain-input-validation.cwe-94-js
|
|
1342
|
+
metadata:
|
|
1343
|
+
runsec_version: v1.0
|
|
1344
|
+
confidence: |-
|
|
1345
|
+
0.9
|
|
1346
|
+
exploit_scenario: |-
|
|
1347
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1348
|
+
fix_template: |-
|
|
1349
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
1350
|
+
pattern-either:
|
|
1351
|
+
- pattern: |-
|
|
1352
|
+
new Function(userCode)
|
|
1353
|
+
eval(userCode)
|
|
1354
|
+
setTimeout(userCode, 1000)
|
|
1355
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-94\\-JS\\b'
|
|
1356
|
+
message: |-
|
|
1357
|
+
RunSec Detection [CWE-94-JS]: CWE-94
|
|
1358
|
+
languages:
|
|
1359
|
+
- generic
|
|
1360
|
+
severity: WARNING
|
|
1361
|
+
- id: runsec.domain-input-validation.cwe-22-py
|
|
1362
|
+
metadata:
|
|
1363
|
+
runsec_version: v1.0
|
|
1364
|
+
confidence: |-
|
|
1365
|
+
0.9
|
|
1366
|
+
exploit_scenario: |-
|
|
1367
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1368
|
+
fix_template: |-
|
|
1369
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
1370
|
+
pattern-either:
|
|
1371
|
+
- pattern: |-
|
|
1372
|
+
full_path = os.path.join(base_dir, user_path)
|
|
1373
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-22\\-PY\\b'
|
|
1374
|
+
message: |-
|
|
1375
|
+
RunSec Detection [CWE-22-PY]: CWE Compliance
|
|
1376
|
+
languages:
|
|
1377
|
+
- generic
|
|
1378
|
+
severity: WARNING
|
|
1379
|
+
- id: runsec.domain-input-validation.cwe-434-py
|
|
1380
|
+
metadata:
|
|
1381
|
+
runsec_version: v1.0
|
|
1382
|
+
confidence: |-
|
|
1383
|
+
0.9
|
|
1384
|
+
exploit_scenario: |-
|
|
1385
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1386
|
+
fix_template: |-
|
|
1387
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
1388
|
+
pattern-either:
|
|
1389
|
+
- pattern: |-
|
|
1390
|
+
name = request.FILES["file"].name
|
|
1391
|
+
save("/uploads/" + name)
|
|
1392
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-434\\-PY\\b'
|
|
1393
|
+
message: |-
|
|
1394
|
+
RunSec Detection [CWE-434-PY]: CWE Compliance
|
|
1395
|
+
languages:
|
|
1396
|
+
- generic
|
|
1397
|
+
severity: WARNING
|
|
1398
|
+
- id: runsec.domain-input-validation.cwe-22-js
|
|
1399
|
+
metadata:
|
|
1400
|
+
runsec_version: v1.0
|
|
1401
|
+
confidence: |-
|
|
1402
|
+
0.9
|
|
1403
|
+
exploit_scenario: |-
|
|
1404
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1405
|
+
fix_template: |-
|
|
1406
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
1407
|
+
pattern-either:
|
|
1408
|
+
- pattern: |-
|
|
1409
|
+
const p = path.join(baseDir, ipcPayload.userPath)
|
|
1410
|
+
fs.readFileSync(p)
|
|
1411
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-22\\-JS\\b'
|
|
1412
|
+
message: |-
|
|
1413
|
+
RunSec Detection [CWE-22-JS]: CWE Compliance
|
|
1414
|
+
languages:
|
|
1415
|
+
- generic
|
|
1416
|
+
severity: WARNING
|
|
1417
|
+
- id: runsec.domain-input-validation.cwe-614-js
|
|
1418
|
+
metadata:
|
|
1419
|
+
runsec_version: v1.0
|
|
1420
|
+
confidence: |-
|
|
1421
|
+
0.9
|
|
1422
|
+
exploit_scenario: |-
|
|
1423
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1424
|
+
fix_template: |-
|
|
1425
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
1426
|
+
pattern-either:
|
|
1427
|
+
- pattern: |-
|
|
1428
|
+
res.cookie("sid", sid, { secure: false })
|
|
1429
|
+
document.cookie = "sid="+sid
|
|
1430
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-614\\-JS\\b'
|
|
1431
|
+
message: |-
|
|
1432
|
+
RunSec Detection [CWE-614-JS]: CWE Compliance
|
|
1433
|
+
languages:
|
|
1434
|
+
- generic
|
|
1435
|
+
severity: WARNING
|
|
1436
|
+
- id: runsec.domain-input-validation.cwe-611-py
|
|
1437
|
+
metadata:
|
|
1438
|
+
runsec_version: v1.0
|
|
1439
|
+
confidence: |-
|
|
1440
|
+
0.9
|
|
1441
|
+
exploit_scenario: |-
|
|
1442
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1443
|
+
fix_template: |-
|
|
1444
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
1445
|
+
pattern-either:
|
|
1446
|
+
- pattern: |-
|
|
1447
|
+
lxml.etree.parse(xml_path)
|
|
1448
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-611\\-PY\\b'
|
|
1449
|
+
message: |-
|
|
1450
|
+
RunSec Detection [CWE-611-PY]: CWE Compliance
|
|
1451
|
+
languages:
|
|
1452
|
+
- generic
|
|
1453
|
+
severity: WARNING
|
|
1454
|
+
- id: runsec.domain-input-validation.cwe-502-py
|
|
1455
|
+
metadata:
|
|
1456
|
+
runsec_version: v1.0
|
|
1457
|
+
confidence: |-
|
|
1458
|
+
0.9
|
|
1459
|
+
exploit_scenario: |-
|
|
1460
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1461
|
+
fix_template: |-
|
|
1462
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
1463
|
+
pattern-either:
|
|
1464
|
+
- pattern: |-
|
|
1465
|
+
pickle.loads(payload)
|
|
1466
|
+
marshal.loads(payload)
|
|
1467
|
+
yaml.load(data, Loader=yaml.Loader)
|
|
1468
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-502\\-PY\\b'
|
|
1469
|
+
message: |-
|
|
1470
|
+
RunSec Detection [CWE-502-PY]: CWE Compliance
|
|
1471
|
+
languages:
|
|
1472
|
+
- generic
|
|
1473
|
+
severity: WARNING
|
|
1474
|
+
- id: runsec.domain-input-validation.cwe-1321-js
|
|
1475
|
+
metadata:
|
|
1476
|
+
runsec_version: v1.0
|
|
1477
|
+
confidence: |-
|
|
1478
|
+
0.9
|
|
1479
|
+
exploit_scenario: |-
|
|
1480
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1481
|
+
fix_template: |-
|
|
1482
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
1483
|
+
pattern-either:
|
|
1484
|
+
- pattern: |-
|
|
1485
|
+
Object.assign(target, userObj)
|
|
1486
|
+
merge(target, userObj)
|
|
1487
|
+
extend({}, userObj)
|
|
1488
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-1321\\-JS\\b'
|
|
1489
|
+
message: |-
|
|
1490
|
+
RunSec Detection [CWE-1321-JS]: CWE Compliance
|
|
1491
|
+
languages:
|
|
1492
|
+
- generic
|
|
1493
|
+
severity: WARNING
|
|
1494
|
+
- id: runsec.domain-input-validation.cwe-502-js
|
|
1495
|
+
metadata:
|
|
1496
|
+
runsec_version: v1.0
|
|
1497
|
+
confidence: |-
|
|
1498
|
+
0.9
|
|
1499
|
+
exploit_scenario: |-
|
|
1500
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1501
|
+
fix_template: |-
|
|
1502
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
1503
|
+
pattern-either:
|
|
1504
|
+
- pattern: |-
|
|
1505
|
+
serialize.unserialize(input)
|
|
1506
|
+
serializeJavascript(input) на недоверенных данных
|
|
1507
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-502\\-JS\\b'
|
|
1508
|
+
message: |-
|
|
1509
|
+
RunSec Detection [CWE-502-JS]: CWE Compliance
|
|
1510
|
+
languages:
|
|
1511
|
+
- generic
|
|
1512
|
+
severity: WARNING
|
|
1513
|
+
- id: runsec.domain-input-validation.cwe-918-py
|
|
1514
|
+
metadata:
|
|
1515
|
+
runsec_version: v1.0
|
|
1516
|
+
confidence: |-
|
|
1517
|
+
0.9
|
|
1518
|
+
exploit_scenario: |-
|
|
1519
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1520
|
+
fix_template: |-
|
|
1521
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
1522
|
+
pattern-either:
|
|
1523
|
+
- pattern: |-
|
|
1524
|
+
requests.get(user_url)
|
|
1525
|
+
requests.post(target_url, json=data)
|
|
1526
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-918\\-PY\\b'
|
|
1527
|
+
message: |-
|
|
1528
|
+
RunSec Detection [CWE-918-PY]: CWE Compliance Final
|
|
1529
|
+
languages:
|
|
1530
|
+
- generic
|
|
1531
|
+
severity: WARNING
|
|
1532
|
+
- id: runsec.domain-input-validation.cwe-918-js
|
|
1533
|
+
metadata:
|
|
1534
|
+
runsec_version: v1.0
|
|
1535
|
+
confidence: |-
|
|
1536
|
+
0.9
|
|
1537
|
+
exploit_scenario: |-
|
|
1538
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1539
|
+
fix_template: |-
|
|
1540
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
1541
|
+
pattern-either:
|
|
1542
|
+
- pattern: |-
|
|
1543
|
+
axios.get(userUrl)
|
|
1544
|
+
fetch(targetUrl)
|
|
1545
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-918\\-JS\\b'
|
|
1546
|
+
message: |-
|
|
1547
|
+
RunSec Detection [CWE-918-JS]: CWE Compliance Final
|
|
1548
|
+
languages:
|
|
1549
|
+
- generic
|
|
1550
|
+
severity: WARNING
|
|
1551
|
+
- id: runsec.domain-input-validation.cwe-1333-js
|
|
1552
|
+
metadata:
|
|
1553
|
+
runsec_version: v1.0
|
|
1554
|
+
confidence: |-
|
|
1555
|
+
0.9
|
|
1556
|
+
exploit_scenario: |-
|
|
1557
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1558
|
+
fix_template: |-
|
|
1559
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
1560
|
+
pattern-either:
|
|
1561
|
+
- pattern: |-
|
|
1562
|
+
const re = new RegExp(userInput)
|
|
1563
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-1333\\-JS\\b'
|
|
1564
|
+
message: |-
|
|
1565
|
+
RunSec Detection [CWE-1333-JS]: CWE Compliance Final
|
|
1566
|
+
languages:
|
|
1567
|
+
- generic
|
|
1568
|
+
severity: WARNING
|
|
1569
|
+
- id: runsec.domain-input-validation.cwe-601-py
|
|
1570
|
+
metadata:
|
|
1571
|
+
runsec_version: v1.0
|
|
1572
|
+
confidence: |-
|
|
1573
|
+
0.9
|
|
1574
|
+
exploit_scenario: |-
|
|
1575
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1576
|
+
fix_template: |-
|
|
1577
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
1578
|
+
pattern-either:
|
|
1579
|
+
- pattern: |-
|
|
1580
|
+
HttpResponseRedirect(request.GET.get("next"))
|
|
1581
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-601\\-PY\\b'
|
|
1582
|
+
message: |-
|
|
1583
|
+
RunSec Detection [CWE-601-PY]: CWE Compliance - Logic/Resources
|
|
1584
|
+
languages:
|
|
1585
|
+
- generic
|
|
1586
|
+
severity: WARNING
|
|
1587
|
+
- id: runsec.domain-input-validation.cwe-601-js
|
|
1588
|
+
metadata:
|
|
1589
|
+
runsec_version: v1.0
|
|
1590
|
+
confidence: |-
|
|
1591
|
+
0.9
|
|
1592
|
+
exploit_scenario: |-
|
|
1593
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1594
|
+
fix_template: |-
|
|
1595
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
1596
|
+
pattern-either:
|
|
1597
|
+
- pattern: |-
|
|
1598
|
+
res.redirect(req.query.url)
|
|
1599
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-601\\-JS\\b'
|
|
1600
|
+
message: |-
|
|
1601
|
+
RunSec Detection [CWE-601-JS]: CWE Compliance - Logic/Resources
|
|
1602
|
+
languages:
|
|
1603
|
+
- generic
|
|
1604
|
+
severity: WARNING
|
|
1605
|
+
- id: runsec.domain-input-validation.cwe-91-py
|
|
1606
|
+
metadata:
|
|
1607
|
+
runsec_version: v1.0
|
|
1608
|
+
confidence: |-
|
|
1609
|
+
0.9
|
|
1610
|
+
exploit_scenario: |-
|
|
1611
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1612
|
+
fix_template: |-
|
|
1613
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
1614
|
+
pattern-either:
|
|
1615
|
+
- pattern: |-
|
|
1616
|
+
xml = "<root>" + user_input + "</root>"
|
|
1617
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-91\\-PY\\b'
|
|
1618
|
+
message: |-
|
|
1619
|
+
RunSec Detection [CWE-91-PY]: CWE Final Certification
|
|
1620
|
+
languages:
|
|
1621
|
+
- generic
|
|
1622
|
+
severity: WARNING
|
|
1623
|
+
- id: runsec.domain-input-validation.cwe-918-py-proto
|
|
1624
|
+
metadata:
|
|
1625
|
+
runsec_version: v1.0
|
|
1626
|
+
confidence: |-
|
|
1627
|
+
0.9
|
|
1628
|
+
exploit_scenario: |-
|
|
1629
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1630
|
+
fix_template: |-
|
|
1631
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
1632
|
+
pattern-either:
|
|
1633
|
+
- pattern: |-
|
|
1634
|
+
requests.get(url) где url может быть file://, gopher://, ftp://
|
|
1635
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-918\\-PY\\-PROTO\\b'
|
|
1636
|
+
message: |-
|
|
1637
|
+
RunSec Detection [CWE-918-PY-PROTO]: CWE Final Certification
|
|
1638
|
+
languages:
|
|
1639
|
+
- generic
|
|
1640
|
+
severity: WARNING
|
|
1641
|
+
- id: runsec.domain-input-validation.cwe-918-js-proto
|
|
1642
|
+
metadata:
|
|
1643
|
+
runsec_version: v1.0
|
|
1644
|
+
confidence: |-
|
|
1645
|
+
0.9
|
|
1646
|
+
exploit_scenario: |-
|
|
1647
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1648
|
+
fix_template: |-
|
|
1649
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
1650
|
+
pattern-either:
|
|
1651
|
+
- pattern: |-
|
|
1652
|
+
fetch(userUrl)/axios.get(userUrl) без проверки new URL(userUrl).protocol
|
|
1653
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-918\\-JS\\-PROTO\\b'
|
|
1654
|
+
message: |-
|
|
1655
|
+
RunSec Detection [CWE-918-JS-PROTO]: CWE Final Certification
|
|
1656
|
+
languages:
|
|
1657
|
+
- generic
|
|
1658
|
+
severity: WARNING
|
|
1659
|
+
- id: runsec.domain-input-validation.cwe-91-py-identity
|
|
1660
|
+
metadata:
|
|
1661
|
+
runsec_version: v1.0
|
|
1662
|
+
confidence: |-
|
|
1663
|
+
0.9
|
|
1664
|
+
exploit_scenario: |-
|
|
1665
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1666
|
+
fix_template: |-
|
|
1667
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
1668
|
+
pattern-either:
|
|
1669
|
+
- pattern: |-
|
|
1670
|
+
if token is expected_token:
|
|
1671
|
+
if status is 200:
|
|
1672
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-91\\-PY\\-IDENTITY\\b'
|
|
1673
|
+
message: |-
|
|
1674
|
+
RunSec Detection [CWE-91-PY-IDENTITY]: CWE Compliance Final
|
|
1675
|
+
languages:
|
|
1676
|
+
- generic
|
|
1677
|
+
severity: WARNING
|
|
1678
|
+
- id: runsec.domain-input-validation.cwe-1025-js
|
|
1679
|
+
metadata:
|
|
1680
|
+
runsec_version: v1.0
|
|
1681
|
+
confidence: |-
|
|
1682
|
+
0.9
|
|
1683
|
+
exploit_scenario: |-
|
|
1684
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1685
|
+
fix_template: |-
|
|
1686
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
1687
|
+
pattern-either:
|
|
1688
|
+
- pattern: |-
|
|
1689
|
+
if (req.headers["x-token"] == expected)
|
|
1690
|
+
if (role == "admin")
|
|
1691
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-1025\\-JS\\b'
|
|
1692
|
+
message: |-
|
|
1693
|
+
RunSec Detection [CWE-1025-JS]: CWE Compliance Final
|
|
1694
|
+
languages:
|
|
1695
|
+
- generic
|
|
1696
|
+
severity: WARNING
|
|
1697
|
+
- id: runsec.domain-input-validation.cwe-89-py-dja-raw
|
|
1698
|
+
metadata:
|
|
1699
|
+
runsec_version: v1.0
|
|
1700
|
+
confidence: |-
|
|
1701
|
+
0.9
|
|
1702
|
+
exploit_scenario: |-
|
|
1703
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1704
|
+
fix_template: |-
|
|
1705
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
1706
|
+
pattern-either:
|
|
1707
|
+
- pattern: |-
|
|
1708
|
+
User.objects.extra(where=["email='" + email + "'"])
|
|
1709
|
+
User.objects.raw("SELECT * FROM users WHERE id=" + user_id)
|
|
1710
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-89\\-PY\\-DJA\\-RAW\\b'
|
|
1711
|
+
message: |-
|
|
1712
|
+
RunSec Detection [CWE-89-PY-DJA-RAW]: CWE Final Certification
|
|
1713
|
+
languages:
|
|
1714
|
+
- generic
|
|
1715
|
+
severity: WARNING
|
|
1716
|
+
- id: runsec.domain-input-validation.cwe-89-js-orm-raw
|
|
1717
|
+
metadata:
|
|
1718
|
+
runsec_version: v1.0
|
|
1719
|
+
confidence: |-
|
|
1720
|
+
0.9
|
|
1721
|
+
exploit_scenario: |-
|
|
1722
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1723
|
+
fix_template: |-
|
|
1724
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
1725
|
+
pattern-either:
|
|
1726
|
+
- pattern: |-
|
|
1727
|
+
sequelize.literal("id = " + userId)
|
|
1728
|
+
knex.raw("SELECT * FROM users WHERE id = " + req.query.id)
|
|
1729
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-89\\-JS\\-ORM\\-RAW\\b'
|
|
1730
|
+
message: |-
|
|
1731
|
+
RunSec Detection [CWE-89-JS-ORM-RAW]: CWE Final Certification
|
|
1732
|
+
languages:
|
|
1733
|
+
- generic
|
|
1734
|
+
severity: WARNING
|
|
1735
|
+
- id: runsec.domain-input-validation.cwe-20-universal-nullbyte
|
|
1736
|
+
metadata:
|
|
1737
|
+
runsec_version: v1.0
|
|
1738
|
+
confidence: |-
|
|
1739
|
+
0.9
|
|
1740
|
+
exploit_scenario: |-
|
|
1741
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1742
|
+
fix_template: |-
|
|
1743
|
+
Перед системными вызовами удалять/блокировать \\x00 и управляющие символы, нормализовать input и применять allowlist форматов аргументов.
|
|
1744
|
+
pattern-either:
|
|
1745
|
+
- pattern: |-
|
|
1746
|
+
subprocess.run(["cat", user_path]) где user_path может содержать %00/\\x00
|
|
1747
|
+
execFile("ls", [userArg]) без фильтра control chars
|
|
1748
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-20\\-UNIVERSAL\\-NULLBYTE\\b'
|
|
1749
|
+
message: |-
|
|
1750
|
+
RunSec Detection [CWE-20-UNIVERSAL-NULLBYTE]: CWE Final Certification
|
|
1751
|
+
languages:
|
|
1752
|
+
- generic
|
|
1753
|
+
severity: WARNING
|
|
1754
|
+
- id: runsec.domain-input-validation.cwe-20-hpp
|
|
1755
|
+
metadata:
|
|
1756
|
+
runsec_version: v1.0
|
|
1757
|
+
confidence: |-
|
|
1758
|
+
0.9
|
|
1759
|
+
exploit_scenario: |-
|
|
1760
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1761
|
+
fix_template: |-
|
|
1762
|
+
Нормализовать/валидировать тип параметров (single-value), отклонять массивы/дубликаты в критичных auth/ACL полях.
|
|
1763
|
+
pattern-either:
|
|
1764
|
+
- pattern: |-
|
|
1765
|
+
role = req.query.role (ожидается строка, приходит массив role=user&role=admin)
|
|
1766
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-20\\-HPP\\b'
|
|
1767
|
+
message: |-
|
|
1768
|
+
RunSec Detection [CWE-20-HPP]: CWE Final Certification
|
|
1769
|
+
languages:
|
|
1770
|
+
- generic
|
|
1771
|
+
severity: WARNING
|
|
1772
|
+
- id: runsec.domain-input-validation.cwe-611-py-minidom
|
|
1773
|
+
metadata:
|
|
1774
|
+
runsec_version: v1.0
|
|
1775
|
+
confidence: |-
|
|
1776
|
+
0.9
|
|
1777
|
+
exploit_scenario: |-
|
|
1778
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1779
|
+
fix_template: |-
|
|
1780
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
1781
|
+
pattern-either:
|
|
1782
|
+
- pattern: |-
|
|
1783
|
+
xml.dom.minidom.parse(xml_file)
|
|
1784
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-611\\-PY\\-MINIDOM\\b'
|
|
1785
|
+
message: |-
|
|
1786
|
+
RunSec Detection [CWE-611-PY-MINIDOM]: CWE Final Certification
|
|
1787
|
+
languages:
|
|
1788
|
+
- generic
|
|
1789
|
+
severity: WARNING
|
|
1790
|
+
- id: runsec.domain-input-validation.cwe-611-py-elementtree
|
|
1791
|
+
metadata:
|
|
1792
|
+
runsec_version: v1.0
|
|
1793
|
+
confidence: |-
|
|
1794
|
+
0.9
|
|
1795
|
+
exploit_scenario: |-
|
|
1796
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1797
|
+
fix_template: |-
|
|
1798
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
1799
|
+
pattern-either:
|
|
1800
|
+
- pattern: |-
|
|
1801
|
+
xml.etree.ElementTree.parse(path)
|
|
1802
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-611\\-PY\\-ELEMENTTREE\\b'
|
|
1803
|
+
message: |-
|
|
1804
|
+
RunSec Detection [CWE-611-PY-ELEMENTTREE]: CWE Final Certification
|
|
1805
|
+
languages:
|
|
1806
|
+
- generic
|
|
1807
|
+
severity: WARNING
|
|
1808
|
+
- id: runsec.domain-input-validation.cwe-611-js-libxmljs-noent
|
|
1809
|
+
metadata:
|
|
1810
|
+
runsec_version: v1.0
|
|
1811
|
+
confidence: |-
|
|
1812
|
+
0.9
|
|
1813
|
+
exploit_scenario: |-
|
|
1814
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1815
|
+
fix_template: |-
|
|
1816
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
1817
|
+
pattern-either:
|
|
1818
|
+
- pattern: |-
|
|
1819
|
+
libxmljs.parseXml(data, { noent: true })
|
|
1820
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-611\\-JS\\-LIBXMLJS\\-NOENT\\b'
|
|
1821
|
+
message: |-
|
|
1822
|
+
RunSec Detection [CWE-611-JS-LIBXMLJS-NOENT]: CWE Final Certification
|
|
1823
|
+
languages:
|
|
1824
|
+
- generic
|
|
1825
|
+
severity: WARNING
|
|
1826
|
+
- id: runsec.domain-input-validation.cwe-91-universal-xml-concat
|
|
1827
|
+
metadata:
|
|
1828
|
+
runsec_version: v1.0
|
|
1829
|
+
confidence: |-
|
|
1830
|
+
0.9
|
|
1831
|
+
exploit_scenario: |-
|
|
1832
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1833
|
+
fix_template: |-
|
|
1834
|
+
Строить XML через безопасные builder API и обязательно экранировать спецсимволы (<, >, &, ', ").
|
|
1835
|
+
pattern-either:
|
|
1836
|
+
- pattern: |-
|
|
1837
|
+
xml = "<root>" + user_input + "</root>"
|
|
1838
|
+
const x = "<tag>" + input + "</tag>"
|
|
1839
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-91\\-UNIVERSAL\\-XML\\-CONCAT\\b'
|
|
1840
|
+
message: |-
|
|
1841
|
+
RunSec Detection [CWE-91-UNIVERSAL-XML-CONCAT]: CWE Final Certification
|
|
1842
|
+
languages:
|
|
1843
|
+
- generic
|
|
1844
|
+
severity: WARNING
|
|
1845
|
+
- id: runsec.domain-input-validation.cwe-85-174-universal-once
|
|
1846
|
+
metadata:
|
|
1847
|
+
runsec_version: v1.0
|
|
1848
|
+
confidence: |-
|
|
1849
|
+
0.9
|
|
1850
|
+
exploit_scenario: |-
|
|
1851
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1852
|
+
fix_template: |-
|
|
1853
|
+
Выполнять нормализацию до фиксированной точки (loop until stable), затем строгую canonicalization-проверку и allowlist-валидацию итогового значения.
|
|
1854
|
+
pattern-either:
|
|
1855
|
+
- pattern: |-
|
|
1856
|
+
path = path.replace("../", "")
|
|
1857
|
+
clean = re.sub(r"<script>", "", payload)
|
|
1858
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-85\\-174\\-UNIVERSAL\\-ONCE\\b'
|
|
1859
|
+
message: |-
|
|
1860
|
+
RunSec Detection [CWE-85-174-UNIVERSAL-ONCE]: CWE Final Certification
|
|
1861
|
+
languages:
|
|
1862
|
+
- generic
|
|
1863
|
+
severity: WARNING
|
|
1864
|
+
- id: runsec.domain-input-validation.cwe-85-js-slash-filter
|
|
1865
|
+
metadata:
|
|
1866
|
+
runsec_version: v1.0
|
|
1867
|
+
confidence: |-
|
|
1868
|
+
0.9
|
|
1869
|
+
exploit_scenario: |-
|
|
1870
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1871
|
+
fix_template: |-
|
|
1872
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
1873
|
+
pattern-either:
|
|
1874
|
+
- pattern: |-
|
|
1875
|
+
if (url.includes("/")) reject()
|
|
1876
|
+
safe = input.replace("/", "")
|
|
1877
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-85\\-JS\\-SLASH\\-FILTER\\b'
|
|
1878
|
+
message: |-
|
|
1879
|
+
RunSec Detection [CWE-85-JS-SLASH-FILTER]: CWE Final Certification
|
|
1880
|
+
languages:
|
|
1881
|
+
- generic
|
|
1882
|
+
severity: WARNING
|
|
1883
|
+
- id: runsec.domain-input-validation.cwe-79-py-django-safe
|
|
1884
|
+
metadata:
|
|
1885
|
+
runsec_version: v1.0
|
|
1886
|
+
confidence: |-
|
|
1887
|
+
0.9
|
|
1888
|
+
exploit_scenario: |-
|
|
1889
|
+
Python
|
|
1890
|
+
fix_template: |-
|
|
1891
|
+
safe к данным пользователя; использовать autoescaping по умолчанию и серверную санитизацию trusted-allowlist подходом.
|
|
1892
|
+
pattern-either:
|
|
1893
|
+
- pattern: |-
|
|
1894
|
+
safe filter with request-controlled variables
|
|
1895
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-79\\-PY\\-DJANGO\\-SAFE\\b'
|
|
1896
|
+
message: |-
|
|
1897
|
+
RunSec Detection [CWE-79-PY-DJANGO-SAFE]: Не применять
|
|
1898
|
+
languages:
|
|
1899
|
+
- generic
|
|
1900
|
+
severity: WARNING
|
|
1901
|
+
- id: runsec.domain-input-validation.cwe-79-py-django-autoescape-off
|
|
1902
|
+
metadata:
|
|
1903
|
+
runsec_version: v1.0
|
|
1904
|
+
confidence: |-
|
|
1905
|
+
0.9
|
|
1906
|
+
exploit_scenario: |-
|
|
1907
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1908
|
+
fix_template: |-
|
|
1909
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
1910
|
+
pattern-either:
|
|
1911
|
+
- pattern: |-
|
|
1912
|
+
{% autoescape off %}{{ request.GET.msg }}{% endautoescape %}
|
|
1913
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-79\\-PY\\-DJANGO\\-AUTOESCAPE\\-OFF\\b'
|
|
1914
|
+
message: |-
|
|
1915
|
+
RunSec Detection [CWE-79-PY-DJANGO-AUTOESCAPE-OFF]: CWE Final Certification
|
|
1916
|
+
languages:
|
|
1917
|
+
- generic
|
|
1918
|
+
severity: WARNING
|
|
1919
|
+
- id: runsec.domain-input-validation.cwe-79-py-htmlresponse
|
|
1920
|
+
metadata:
|
|
1921
|
+
runsec_version: v1.0
|
|
1922
|
+
confidence: |-
|
|
1923
|
+
0.9
|
|
1924
|
+
exploit_scenario: |-
|
|
1925
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1926
|
+
fix_template: |-
|
|
1927
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
1928
|
+
pattern-either:
|
|
1929
|
+
- pattern: |-
|
|
1930
|
+
return HTMLResponse(f"<div>{user_input}</div>")
|
|
1931
|
+
return render_template_string("<p>"+name+"</p>")
|
|
1932
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-79\\-PY\\-HTMLRESPONSE\\b'
|
|
1933
|
+
message: |-
|
|
1934
|
+
RunSec Detection [CWE-79-PY-HTMLRESPONSE]: CWE Final Certification
|
|
1935
|
+
languages:
|
|
1936
|
+
- generic
|
|
1937
|
+
severity: WARNING
|
|
1938
|
+
- id: runsec.domain-input-validation.cwe-79-js-ssr-raw
|
|
1939
|
+
metadata:
|
|
1940
|
+
runsec_version: v1.0
|
|
1941
|
+
confidence: |-
|
|
1942
|
+
0.9
|
|
1943
|
+
exploit_scenario: |-
|
|
1944
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1945
|
+
fix_template: |-
|
|
1946
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
1947
|
+
pattern-either:
|
|
1948
|
+
- pattern: |-
|
|
1949
|
+
<%- userContent %>
|
|
1950
|
+
{{{comment}}}
|
|
1951
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-79\\-JS\\-SSR\\-RAW\\b'
|
|
1952
|
+
message: |-
|
|
1953
|
+
RunSec Detection [CWE-79-JS-SSR-RAW]: CWE Final Certification
|
|
1954
|
+
languages:
|
|
1955
|
+
- generic
|
|
1956
|
+
severity: WARNING
|
|
1957
|
+
- id: runsec.domain-input-validation.cwe-80-universal-nosniff
|
|
1958
|
+
metadata:
|
|
1959
|
+
runsec_version: v1.0
|
|
1960
|
+
confidence: |-
|
|
1961
|
+
0.9
|
|
1962
|
+
exploit_scenario: |-
|
|
1963
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1964
|
+
fix_template: |-
|
|
1965
|
+
Для динамических ответов всегда добавлять X-Content-Type-Options: nosniff и корректный Content-Type, исключая MIME sniffing.
|
|
1966
|
+
pattern-either:
|
|
1967
|
+
- pattern: |-
|
|
1968
|
+
res.send(dynamicContent) без X-Content-Type-Options
|
|
1969
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-80\\-UNIVERSAL\\-NOSNIFF\\b'
|
|
1970
|
+
message: |-
|
|
1971
|
+
RunSec Detection [CWE-80-UNIVERSAL-NOSNIFF]: CWE Final Certification
|
|
1972
|
+
languages:
|
|
1973
|
+
- generic
|
|
1974
|
+
severity: WARNING
|
|
1975
|
+
- id: runsec.domain-input-validation.cwe-1336-py-jinja2-rts
|
|
1976
|
+
metadata:
|
|
1977
|
+
runsec_version: v1.0
|
|
1978
|
+
confidence: |-
|
|
1979
|
+
0.9
|
|
1980
|
+
exploit_scenario: |-
|
|
1981
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
1982
|
+
fix_template: |-
|
|
1983
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
1984
|
+
pattern-either:
|
|
1985
|
+
- pattern: |-
|
|
1986
|
+
render_template_string(user_input)
|
|
1987
|
+
jinja2.Template(user_input)
|
|
1988
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-1336\\-PY\\-JINJA2\\-RTS\\b'
|
|
1989
|
+
message: |-
|
|
1990
|
+
RunSec Detection [CWE-1336-PY-JINJA2-RTS]: CWE Final Certification
|
|
1991
|
+
languages:
|
|
1992
|
+
- generic
|
|
1993
|
+
severity: WARNING
|
|
1994
|
+
- id: runsec.domain-input-validation.cwe-1336-py-mako-rts
|
|
1995
|
+
metadata:
|
|
1996
|
+
runsec_version: v1.0
|
|
1997
|
+
confidence: |-
|
|
1998
|
+
0.9
|
|
1999
|
+
exploit_scenario: |-
|
|
2000
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2001
|
+
fix_template: |-
|
|
2002
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
2003
|
+
pattern-either:
|
|
2004
|
+
- pattern: |-
|
|
2005
|
+
mako.template.Template(user_input)
|
|
2006
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-1336\\-PY\\-MAKO\\-RTS\\b'
|
|
2007
|
+
message: |-
|
|
2008
|
+
RunSec Detection [CWE-1336-PY-MAKO-RTS]: CWE Final Certification
|
|
2009
|
+
languages:
|
|
2010
|
+
- generic
|
|
2011
|
+
severity: WARNING
|
|
2012
|
+
- id: runsec.domain-input-validation.cwe-1336-js-pug-ejs-rts
|
|
2013
|
+
metadata:
|
|
2014
|
+
runsec_version: v1.0
|
|
2015
|
+
confidence: |-
|
|
2016
|
+
0.9
|
|
2017
|
+
exploit_scenario: |-
|
|
2018
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2019
|
+
fix_template: |-
|
|
2020
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
2021
|
+
pattern-either:
|
|
2022
|
+
- pattern: |-
|
|
2023
|
+
pug.compile(userInput)
|
|
2024
|
+
ejs.render(userInput)
|
|
2025
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-1336\\-JS\\-PUG\\-EJS\\-RTS\\b'
|
|
2026
|
+
message: |-
|
|
2027
|
+
RunSec Detection [CWE-1336-JS-PUG-EJS-RTS]: CWE Final Certification
|
|
2028
|
+
languages:
|
|
2029
|
+
- generic
|
|
2030
|
+
severity: WARNING
|
|
2031
|
+
- id: runsec.domain-input-validation.cwe-1336-js-lodash-template
|
|
2032
|
+
metadata:
|
|
2033
|
+
runsec_version: v1.0
|
|
2034
|
+
confidence: |-
|
|
2035
|
+
0.9
|
|
2036
|
+
exploit_scenario: |-
|
|
2037
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2038
|
+
fix_template: |-
|
|
2039
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
2040
|
+
pattern-either:
|
|
2041
|
+
- pattern: |-
|
|
2042
|
+
_.template(userInput)
|
|
2043
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-1336\\-JS\\-LODASH\\-TEMPLATE\\b'
|
|
2044
|
+
message: |-
|
|
2045
|
+
RunSec Detection [CWE-1336-JS-LODASH-TEMPLATE]: CWE Final Certification
|
|
2046
|
+
languages:
|
|
2047
|
+
- generic
|
|
2048
|
+
severity: WARNING
|
|
2049
|
+
- id: runsec.domain-input-validation.cwe-943-py-mongo-dict
|
|
2050
|
+
metadata:
|
|
2051
|
+
runsec_version: v1.0
|
|
2052
|
+
confidence: |-
|
|
2053
|
+
0.9
|
|
2054
|
+
exploit_scenario: |-
|
|
2055
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2056
|
+
fix_template: |-
|
|
2057
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
2058
|
+
pattern-either:
|
|
2059
|
+
- pattern: |-
|
|
2060
|
+
db.users.find(request.json)
|
|
2061
|
+
Model.objects(__raw__=request.json).update(**request.json)
|
|
2062
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-943\\-PY\\-MONGO\\-DICT\\b'
|
|
2063
|
+
message: |-
|
|
2064
|
+
RunSec Detection [CWE-943-PY-MONGO-DICT]: CWE Final Certification
|
|
2065
|
+
languages:
|
|
2066
|
+
- generic
|
|
2067
|
+
severity: WARNING
|
|
2068
|
+
- id: runsec.domain-input-validation.cwe-943-py-django-kwargs
|
|
2069
|
+
metadata:
|
|
2070
|
+
runsec_version: v1.0
|
|
2071
|
+
confidence: |-
|
|
2072
|
+
0.9
|
|
2073
|
+
exploit_scenario: |-
|
|
2074
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2075
|
+
fix_template: |-
|
|
2076
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
2077
|
+
pattern-either:
|
|
2078
|
+
- pattern: |-
|
|
2079
|
+
User.objects.filter(**request.GET.dict())
|
|
2080
|
+
User.objects.get(**payload)
|
|
2081
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-943\\-PY\\-DJANGO\\-KWARGS\\b'
|
|
2082
|
+
message: |-
|
|
2083
|
+
RunSec Detection [CWE-943-PY-DJANGO-KWARGS]: CWE Final Certification
|
|
2084
|
+
languages:
|
|
2085
|
+
- generic
|
|
2086
|
+
severity: WARNING
|
|
2087
|
+
- id: runsec.domain-input-validation.cwe-943-js-mongo-filter
|
|
2088
|
+
metadata:
|
|
2089
|
+
runsec_version: v1.0
|
|
2090
|
+
confidence: |-
|
|
2091
|
+
0.9
|
|
2092
|
+
exploit_scenario: |-
|
|
2093
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2094
|
+
fix_template: |-
|
|
2095
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
2096
|
+
pattern-either:
|
|
2097
|
+
- pattern: |-
|
|
2098
|
+
User.find(req.body)
|
|
2099
|
+
collection.find(req.query)
|
|
2100
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-943\\-JS\\-MONGO\\-FILTER\\b'
|
|
2101
|
+
message: |-
|
|
2102
|
+
RunSec Detection [CWE-943-JS-MONGO-FILTER]: CWE Final Certification
|
|
2103
|
+
languages:
|
|
2104
|
+
- generic
|
|
2105
|
+
severity: WARNING
|
|
2106
|
+
- id: runsec.domain-input-validation.cwe-943-js-sequelize-where
|
|
2107
|
+
metadata:
|
|
2108
|
+
runsec_version: v1.0
|
|
2109
|
+
confidence: |-
|
|
2110
|
+
0.9
|
|
2111
|
+
exploit_scenario: |-
|
|
2112
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2113
|
+
fix_template: |-
|
|
2114
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
2115
|
+
pattern-either:
|
|
2116
|
+
- pattern: |-
|
|
2117
|
+
User.findAll({ where: req.query })
|
|
2118
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-943\\-JS\\-SEQUELIZE\\-WHERE\\b'
|
|
2119
|
+
message: |-
|
|
2120
|
+
RunSec Detection [CWE-943-JS-SEQUELIZE-WHERE]: CWE Final Certification
|
|
2121
|
+
languages:
|
|
2122
|
+
- generic
|
|
2123
|
+
severity: WARNING
|
|
2124
|
+
- id: runsec.domain-input-validation.cwe-23-py-template-file
|
|
2125
|
+
metadata:
|
|
2126
|
+
runsec_version: v1.0
|
|
2127
|
+
confidence: |-
|
|
2128
|
+
0.9
|
|
2129
|
+
exploit_scenario: |-
|
|
2130
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2131
|
+
fix_template: |-
|
|
2132
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
2133
|
+
pattern-either:
|
|
2134
|
+
- pattern: |-
|
|
2135
|
+
render(request, request.GET["tpl"])
|
|
2136
|
+
send_file(request.args.get("path"))
|
|
2137
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-23\\-PY\\-TEMPLATE\\-FILE\\b'
|
|
2138
|
+
message: |-
|
|
2139
|
+
RunSec Detection [CWE-23-PY-TEMPLATE-FILE]: CWE Final Certification
|
|
2140
|
+
languages:
|
|
2141
|
+
- generic
|
|
2142
|
+
severity: WARNING
|
|
2143
|
+
- id: runsec.domain-input-validation.cwe-23-js-express-sendfile
|
|
2144
|
+
metadata:
|
|
2145
|
+
runsec_version: v1.0
|
|
2146
|
+
confidence: |-
|
|
2147
|
+
0.9
|
|
2148
|
+
exploit_scenario: |-
|
|
2149
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2150
|
+
fix_template: |-
|
|
2151
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
2152
|
+
pattern-either:
|
|
2153
|
+
- pattern: |-
|
|
2154
|
+
res.sendFile(req.query.path)
|
|
2155
|
+
res.render(req.params.view)
|
|
2156
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-23\\-JS\\-EXPRESS\\-SENDFILE\\b'
|
|
2157
|
+
message: |-
|
|
2158
|
+
RunSec Detection [CWE-23-JS-EXPRESS-SENDFILE]: CWE Final Certification
|
|
2159
|
+
languages:
|
|
2160
|
+
- generic
|
|
2161
|
+
severity: WARNING
|
|
2162
|
+
- id: runsec.domain-input-validation.cwe-23-js-dynamic-require
|
|
2163
|
+
metadata:
|
|
2164
|
+
runsec_version: v1.0
|
|
2165
|
+
confidence: |-
|
|
2166
|
+
0.9
|
|
2167
|
+
exploit_scenario: |-
|
|
2168
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2169
|
+
fix_template: |-
|
|
2170
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
2171
|
+
pattern-either:
|
|
2172
|
+
- pattern: |-
|
|
2173
|
+
require(req.query.module)
|
|
2174
|
+
await import(req.body.path)
|
|
2175
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-23\\-JS\\-DYNAMIC\\-REQUIRE\\b'
|
|
2176
|
+
message: |-
|
|
2177
|
+
RunSec Detection [CWE-23-JS-DYNAMIC-REQUIRE]: CWE Final Certification
|
|
2178
|
+
languages:
|
|
2179
|
+
- generic
|
|
2180
|
+
severity: WARNING
|
|
2181
|
+
- id: runsec.domain-input-validation.cwe-89-py-sqlalchemy-text
|
|
2182
|
+
metadata:
|
|
2183
|
+
runsec_version: v1.0
|
|
2184
|
+
confidence: |-
|
|
2185
|
+
0.9
|
|
2186
|
+
exploit_scenario: |-
|
|
2187
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2188
|
+
fix_template: |-
|
|
2189
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
2190
|
+
pattern-either:
|
|
2191
|
+
- pattern: |-
|
|
2192
|
+
session.execute(text("SELECT ... " + user_input))
|
|
2193
|
+
.filter(text("id=" + user_input))
|
|
2194
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-89\\-PY\\-SQLALCHEMY\\-TEXT\\b'
|
|
2195
|
+
message: |-
|
|
2196
|
+
RunSec Detection [CWE-89-PY-SQLALCHEMY-TEXT]: CWE Final Certification
|
|
2197
|
+
languages:
|
|
2198
|
+
- generic
|
|
2199
|
+
severity: WARNING
|
|
2200
|
+
- id: runsec.domain-input-validation.cwe-89-py-sqlalchemy-orderby
|
|
2201
|
+
metadata:
|
|
2202
|
+
runsec_version: v1.0
|
|
2203
|
+
confidence: |-
|
|
2204
|
+
0.9
|
|
2205
|
+
exploit_scenario: |-
|
|
2206
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2207
|
+
fix_template: |-
|
|
2208
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
2209
|
+
pattern-either:
|
|
2210
|
+
- pattern: |-
|
|
2211
|
+
query.order_by(user_input)
|
|
2212
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-89\\-PY\\-SQLALCHEMY\\-ORDERBY\\b'
|
|
2213
|
+
message: |-
|
|
2214
|
+
RunSec Detection [CWE-89-PY-SQLALCHEMY-ORDERBY]: CWE Final Certification
|
|
2215
|
+
languages:
|
|
2216
|
+
- generic
|
|
2217
|
+
severity: WARNING
|
|
2218
|
+
- id: runsec.domain-input-validation.cwe-89-js-orm-queryraw
|
|
2219
|
+
metadata:
|
|
2220
|
+
runsec_version: v1.0
|
|
2221
|
+
confidence: |-
|
|
2222
|
+
0.9
|
|
2223
|
+
exploit_scenario: |-
|
|
2224
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2225
|
+
fix_template: |-
|
|
2226
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
2227
|
+
pattern-either:
|
|
2228
|
+
- pattern: |-
|
|
2229
|
+
queryRaw("SELECT ... " + input)
|
|
2230
|
+
sequelize.literal("id=" + req.query.id)
|
|
2231
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-89\\-JS\\-ORM\\-QUERYRAW\\b'
|
|
2232
|
+
message: |-
|
|
2233
|
+
RunSec Detection [CWE-89-JS-ORM-QUERYRAW]: CWE Final Certification
|
|
2234
|
+
languages:
|
|
2235
|
+
- generic
|
|
2236
|
+
severity: WARNING
|
|
2237
|
+
- id: runsec.domain-input-validation.cwe-89-pg-copy-program
|
|
2238
|
+
metadata:
|
|
2239
|
+
runsec_version: v1.0
|
|
2240
|
+
confidence: |-
|
|
2241
|
+
0.9
|
|
2242
|
+
exploit_scenario: |-
|
|
2243
|
+
CWE Final Certification
|
|
2244
|
+
fix_template: |-
|
|
2245
|
+
Python/Node.js/PostgreSQL
|
|
2246
|
+
pattern-either:
|
|
2247
|
+
- pattern: |-
|
|
2248
|
+
COPY t FROM PROGRAM 'cat '
|
|
2249
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-89\\-PG\\-COPY\\-PROGRAM\\b'
|
|
2250
|
+
message: |-
|
|
2251
|
+
RunSec Detection [CWE-89-PG-COPY-PROGRAM]: Запретить динамические PROGRAM/file path из внешнего ввода, использовать fixed allowlist операций и параметризованные запросы без конкатенации.
|
|
2252
|
+
languages:
|
|
2253
|
+
- generic
|
|
2254
|
+
severity: WARNING
|
|
2255
|
+
- id: runsec.domain-input-validation.cwe-89-plpgsql-execute
|
|
2256
|
+
metadata:
|
|
2257
|
+
runsec_version: v1.0
|
|
2258
|
+
confidence: |-
|
|
2259
|
+
0.9
|
|
2260
|
+
exploit_scenario: |-
|
|
2261
|
+
CWE Final Certification
|
|
2262
|
+
fix_template: |-
|
|
2263
|
+
PostgreSQL/PLpgSQL
|
|
2264
|
+
pattern-either:
|
|
2265
|
+
- pattern: |-
|
|
2266
|
+
EXECUTE 'SELECT ... '
|
|
2267
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-89\\-PLPGSQL\\-EXECUTE\\b'
|
|
2268
|
+
message: |-
|
|
2269
|
+
RunSec Detection [CWE-89-PLPGSQL-EXECUTE]: В PL/pgSQL использовать quote_ident()/quote_literal() или format('%I/%L', ...), исключать прямую конкатенацию в dynamic SQL.
|
|
2270
|
+
languages:
|
|
2271
|
+
- generic
|
|
2272
|
+
severity: WARNING
|
|
2273
|
+
- id: runsec.domain-input-validation.cwe-943-redis-cmd
|
|
2274
|
+
metadata:
|
|
2275
|
+
runsec_version: v1.0
|
|
2276
|
+
confidence: |-
|
|
2277
|
+
0.9
|
|
2278
|
+
exploit_scenario: |-
|
|
2279
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2280
|
+
fix_template: |-
|
|
2281
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
2282
|
+
pattern-either:
|
|
2283
|
+
- pattern: |-
|
|
2284
|
+
redis.execute_command(req.body.cmd, ...)
|
|
2285
|
+
redis.send_command(req.query.cmd, ...)
|
|
2286
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-943\\-REDIS\\-CMD\\b'
|
|
2287
|
+
message: |-
|
|
2288
|
+
RunSec Detection [CWE-943-REDIS-CMD]: CWE Final Certification
|
|
2289
|
+
languages:
|
|
2290
|
+
- generic
|
|
2291
|
+
severity: WARNING
|
|
2292
|
+
- id: runsec.domain-input-validation.cwe-943-redis-lua-eval
|
|
2293
|
+
metadata:
|
|
2294
|
+
runsec_version: v1.0
|
|
2295
|
+
confidence: |-
|
|
2296
|
+
0.9
|
|
2297
|
+
exploit_scenario: |-
|
|
2298
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2299
|
+
fix_template: |-
|
|
2300
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
2301
|
+
pattern-either:
|
|
2302
|
+
- pattern: |-
|
|
2303
|
+
redis.eval("return " + user_input, ...)
|
|
2304
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-943\\-REDIS\\-LUA\\-EVAL\\b'
|
|
2305
|
+
message: |-
|
|
2306
|
+
RunSec Detection [CWE-943-REDIS-LUA-EVAL]: CWE Final Certification
|
|
2307
|
+
languages:
|
|
2308
|
+
- generic
|
|
2309
|
+
severity: WARNING
|
|
2310
|
+
- id: runsec.domain-input-validation.cwe-89-py-sqlalchemy-async-text
|
|
2311
|
+
metadata:
|
|
2312
|
+
runsec_version: v1.0
|
|
2313
|
+
confidence: |-
|
|
2314
|
+
0.9
|
|
2315
|
+
exploit_scenario: |-
|
|
2316
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2317
|
+
fix_template: |-
|
|
2318
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
2319
|
+
pattern-either:
|
|
2320
|
+
- pattern: |-
|
|
2321
|
+
await session.execute(text("SELECT ... " + user_input))
|
|
2322
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-89\\-PY\\-SQLALCHEMY\\-ASYNC\\-TEXT\\b'
|
|
2323
|
+
message: |-
|
|
2324
|
+
RunSec Detection [CWE-89-PY-SQLALCHEMY-ASYNC-TEXT]: CWE Final Certification
|
|
2325
|
+
languages:
|
|
2326
|
+
- generic
|
|
2327
|
+
severity: WARNING
|
|
2328
|
+
- id: runsec.domain-input-validation.cwe-943-redis-rq-iredis-cmd
|
|
2329
|
+
metadata:
|
|
2330
|
+
runsec_version: v1.0
|
|
2331
|
+
confidence: |-
|
|
2332
|
+
0.9
|
|
2333
|
+
exploit_scenario: |-
|
|
2334
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2335
|
+
fix_template: |-
|
|
2336
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
2337
|
+
pattern-either:
|
|
2338
|
+
- pattern: |-
|
|
2339
|
+
redis.execute_command(req.body.cmd, req.body.arg)
|
|
2340
|
+
ioredis.send_command(req.query.cmd, [...])
|
|
2341
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-943\\-REDIS\\-RQ\\-IREDIS\\-CMD\\b'
|
|
2342
|
+
message: |-
|
|
2343
|
+
RunSec Detection [CWE-943-REDIS-RQ-IREDIS-CMD]: CWE Final Certification
|
|
2344
|
+
languages:
|
|
2345
|
+
- generic
|
|
2346
|
+
severity: WARNING
|
|
2347
|
+
- id: runsec.domain-input-validation.cwe-943-redis-rq-iredis-eval
|
|
2348
|
+
metadata:
|
|
2349
|
+
runsec_version: v1.0
|
|
2350
|
+
confidence: |-
|
|
2351
|
+
0.9
|
|
2352
|
+
exploit_scenario: |-
|
|
2353
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2354
|
+
fix_template: |-
|
|
2355
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
2356
|
+
pattern-either:
|
|
2357
|
+
- pattern: |-
|
|
2358
|
+
redis.eval("return " + req.body.expr, 0)
|
|
2359
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-943\\-REDIS\\-RQ\\-IREDIS\\-EVAL\\b'
|
|
2360
|
+
message: |-
|
|
2361
|
+
RunSec Detection [CWE-943-REDIS-RQ-IREDIS-EVAL]: CWE Final Certification
|
|
2362
|
+
languages:
|
|
2363
|
+
- generic
|
|
2364
|
+
severity: WARNING
|
|
2365
|
+
- id: runsec.domain-input-validation.cwe-918-nextjs-axios-ssrf
|
|
2366
|
+
metadata:
|
|
2367
|
+
runsec_version: v1.0
|
|
2368
|
+
confidence: |-
|
|
2369
|
+
0.9
|
|
2370
|
+
exploit_scenario: |-
|
|
2371
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2372
|
+
fix_template: |-
|
|
2373
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
2374
|
+
pattern-either:
|
|
2375
|
+
- pattern: |-
|
|
2376
|
+
await axios.get(req.query.url)
|
|
2377
|
+
await axios.post(userInput, data)
|
|
2378
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-918\\-NEXTJS\\-AXIOS\\-SSRF\\b'
|
|
2379
|
+
message: |-
|
|
2380
|
+
RunSec Detection [CWE-918-NEXTJS-AXIOS-SSRF]: CWE Final Certification
|
|
2381
|
+
languages:
|
|
2382
|
+
- generic
|
|
2383
|
+
severity: WARNING
|
|
2384
|
+
- id: runsec.domain-input-validation.cwe-346-axios-withcredentials
|
|
2385
|
+
metadata:
|
|
2386
|
+
runsec_version: v1.0
|
|
2387
|
+
confidence: |-
|
|
2388
|
+
0.9
|
|
2389
|
+
exploit_scenario: |-
|
|
2390
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2391
|
+
fix_template: |-
|
|
2392
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
2393
|
+
pattern-either:
|
|
2394
|
+
- pattern: |-
|
|
2395
|
+
axios.defaults.withCredentials = true
|
|
2396
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-346\\-AXIOS\\-WITHCREDENTIALS\\b'
|
|
2397
|
+
message: |-
|
|
2398
|
+
RunSec Detection [CWE-346-AXIOS-WITHCREDENTIALS]: CWE Final Certification
|
|
2399
|
+
languages:
|
|
2400
|
+
- generic
|
|
2401
|
+
severity: WARNING
|
|
2402
|
+
- id: runsec.domain-input-validation.cwe-79-react-dangerouslysethtml
|
|
2403
|
+
metadata:
|
|
2404
|
+
runsec_version: v1.0
|
|
2405
|
+
confidence: |-
|
|
2406
|
+
0.9
|
|
2407
|
+
exploit_scenario: |-
|
|
2408
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2409
|
+
fix_template: |-
|
|
2410
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
2411
|
+
pattern-either:
|
|
2412
|
+
- pattern: |-
|
|
2413
|
+
<div dangerouslySetInnerHTML={{ __html: html }} />
|
|
2414
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-79\\-REACT\\-DANGEROUSLYSETHTML\\b'
|
|
2415
|
+
message: |-
|
|
2416
|
+
RunSec Detection [CWE-79-REACT-DANGEROUSLYSETHTML]: CWE Final Certification
|
|
2417
|
+
languages:
|
|
2418
|
+
- generic
|
|
2419
|
+
severity: WARNING
|
|
2420
|
+
- id: runsec.domain-input-validation.cwe-1321-ts-deepmerge
|
|
2421
|
+
metadata:
|
|
2422
|
+
runsec_version: v1.0
|
|
2423
|
+
confidence: |-
|
|
2424
|
+
0.9
|
|
2425
|
+
exploit_scenario: |-
|
|
2426
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2427
|
+
fix_template: |-
|
|
2428
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
2429
|
+
pattern-either:
|
|
2430
|
+
- pattern: |-
|
|
2431
|
+
deepMerge(target, source) без проверки опасных ключей
|
|
2432
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-1321\\-TS\\-DEEPMERGE\\b'
|
|
2433
|
+
message: |-
|
|
2434
|
+
RunSec Detection [CWE-1321-TS-DEEPMERGE]: CWE Final Certification
|
|
2435
|
+
languages:
|
|
2436
|
+
- generic
|
|
2437
|
+
severity: WARNING
|
|
2438
|
+
- id: runsec.domain-input-validation.cwe-94-openrouter-prompt-concat
|
|
2439
|
+
metadata:
|
|
2440
|
+
runsec_version: v1.0
|
|
2441
|
+
confidence: |-
|
|
2442
|
+
0.9
|
|
2443
|
+
exploit_scenario: |-
|
|
2444
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2445
|
+
fix_template: |-
|
|
2446
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
2447
|
+
pattern-either:
|
|
2448
|
+
- pattern: |-
|
|
2449
|
+
messages=[{"role":"user","content":"..."+user_input}]
|
|
2450
|
+
prompt = system + user_input
|
|
2451
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-94\\-OPENROUTER\\-PROMPT\\-CONCAT\\b'
|
|
2452
|
+
message: |-
|
|
2453
|
+
RunSec Detection [CWE-94-OPENROUTER-PROMPT-CONCAT]: CWE Final Certification
|
|
2454
|
+
languages:
|
|
2455
|
+
- generic
|
|
2456
|
+
severity: WARNING
|
|
2457
|
+
- id: runsec.domain-input-validation.cwe-116-llm-html-untrusted
|
|
2458
|
+
metadata:
|
|
2459
|
+
runsec_version: v1.0
|
|
2460
|
+
confidence: |-
|
|
2461
|
+
0.9
|
|
2462
|
+
exploit_scenario: |-
|
|
2463
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2464
|
+
fix_template: |-
|
|
2465
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
2466
|
+
pattern-either:
|
|
2467
|
+
- pattern: |-
|
|
2468
|
+
dangerouslySetInnerHTML={{__html: llmText}}
|
|
2469
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-116\\-LLM\\-HTML\\-UNTRUSTED\\b'
|
|
2470
|
+
message: |-
|
|
2471
|
+
RunSec Detection [CWE-116-LLM-HTML-UNTRUSTED]: CWE Final Certification
|
|
2472
|
+
languages:
|
|
2473
|
+
- generic
|
|
2474
|
+
severity: WARNING
|
|
2475
|
+
- id: runsec.domain-input-validation.cwe-915-node-assign-merge
|
|
2476
|
+
metadata:
|
|
2477
|
+
runsec_version: v1.0
|
|
2478
|
+
confidence: |-
|
|
2479
|
+
0.9
|
|
2480
|
+
exploit_scenario: |-
|
|
2481
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2482
|
+
fix_template: |-
|
|
2483
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
2484
|
+
pattern-either:
|
|
2485
|
+
- pattern: |-
|
|
2486
|
+
Object.assign(target, req.body)
|
|
2487
|
+
_.merge(config, req.body)
|
|
2488
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-915\\-NODE\\-ASSIGN\\-MERGE\\b'
|
|
2489
|
+
message: |-
|
|
2490
|
+
RunSec Detection [CWE-915-NODE-ASSIGN-MERGE]: CWE Final Certification
|
|
2491
|
+
languages:
|
|
2492
|
+
- generic
|
|
2493
|
+
severity: WARNING
|
|
2494
|
+
- id: runsec.domain-input-validation.cwe-915-sqlmodel-mass-assign
|
|
2495
|
+
metadata:
|
|
2496
|
+
runsec_version: v1.0
|
|
2497
|
+
confidence: |-
|
|
2498
|
+
0.9
|
|
2499
|
+
exploit_scenario: |-
|
|
2500
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2501
|
+
fix_template: |-
|
|
2502
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
2503
|
+
pattern-either:
|
|
2504
|
+
- pattern: |-
|
|
2505
|
+
User.model_validate(request.json())
|
|
2506
|
+
User.from_orm(payload)
|
|
2507
|
+
User(**request.json())
|
|
2508
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-915\\-SQLMODEL\\-MASS\\-ASSIGN\\b'
|
|
2509
|
+
message: |-
|
|
2510
|
+
RunSec Detection [CWE-915-SQLMODEL-MASS-ASSIGN]: CWE Final Certification
|
|
2511
|
+
languages:
|
|
2512
|
+
- generic
|
|
2513
|
+
severity: WARNING
|
|
2514
|
+
- id: runsec.domain-input-validation.cwe-89-sqlmodel-text-fstring
|
|
2515
|
+
metadata:
|
|
2516
|
+
runsec_version: v1.0
|
|
2517
|
+
confidence: |-
|
|
2518
|
+
0.9
|
|
2519
|
+
exploit_scenario: |-
|
|
2520
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2521
|
+
fix_template: |-
|
|
2522
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
2523
|
+
pattern-either:
|
|
2524
|
+
- pattern: |-
|
|
2525
|
+
select(User).where(text(f"id = {user_id}"))
|
|
2526
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-89\\-SQLMODEL\\-TEXT\\-FSTRING\\b'
|
|
2527
|
+
message: |-
|
|
2528
|
+
RunSec Detection [CWE-89-SQLMODEL-TEXT-FSTRING]: CWE Final Certification
|
|
2529
|
+
languages:
|
|
2530
|
+
- generic
|
|
2531
|
+
severity: WARNING
|
|
2532
|
+
- id: runsec.domain-input-validation.cwe-601-csh-process-start-url
|
|
2533
|
+
metadata:
|
|
2534
|
+
runsec_version: v1.0
|
|
2535
|
+
confidence: |-
|
|
2536
|
+
0.9
|
|
2537
|
+
exploit_scenario: |-
|
|
2538
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2539
|
+
fix_template: |-
|
|
2540
|
+
Use using/try-finally and safe .NET APIs; enforce strict allowlists for untrusted input.
|
|
2541
|
+
pattern-either:
|
|
2542
|
+
- pattern: |-
|
|
2543
|
+
Process.Start(userUrl)
|
|
2544
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-601\\-CSH\\-PROCESS\\-START\\-URL\\b'
|
|
2545
|
+
message: |-
|
|
2546
|
+
RunSec Detection [CWE-601-CSH-PROCESS-START-URL]: CWE Final Certification
|
|
2547
|
+
languages:
|
|
2548
|
+
- generic
|
|
2549
|
+
severity: WARNING
|
|
2550
|
+
- id: runsec.domain-input-validation.cwe-81-csh-webbrowser-xss
|
|
2551
|
+
metadata:
|
|
2552
|
+
runsec_version: v1.0
|
|
2553
|
+
confidence: |-
|
|
2554
|
+
0.9
|
|
2555
|
+
exploit_scenario: |-
|
|
2556
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2557
|
+
fix_template: |-
|
|
2558
|
+
Use using/try-finally and safe .NET APIs; enforce strict allowlists for untrusted input.
|
|
2559
|
+
pattern-either:
|
|
2560
|
+
- pattern: |-
|
|
2561
|
+
webBrowser.DocumentText = userHtml
|
|
2562
|
+
webBrowser.Document.InvokeScript("render", new[]{userInput})
|
|
2563
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-81\\-CSH\\-WEBBROWSER\\-XSS\\b'
|
|
2564
|
+
message: |-
|
|
2565
|
+
RunSec Detection [CWE-81-CSH-WEBBROWSER-XSS]: CWE Final Certification
|
|
2566
|
+
languages:
|
|
2567
|
+
- generic
|
|
2568
|
+
severity: WARNING
|
|
2569
|
+
- id: runsec.domain-input-validation.cwe-1321-csh-dynamic-expando
|
|
2570
|
+
metadata:
|
|
2571
|
+
runsec_version: v1.0
|
|
2572
|
+
confidence: |-
|
|
2573
|
+
0.9
|
|
2574
|
+
exploit_scenario: |-
|
|
2575
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2576
|
+
fix_template: |-
|
|
2577
|
+
Use using/try-finally and safe .NET APIs; enforce strict allowlists for untrusted input.
|
|
2578
|
+
pattern-either:
|
|
2579
|
+
- pattern: |-
|
|
2580
|
+
dynamic obj = JsonConvert.DeserializeObject<ExpandoObject>(json)
|
|
2581
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-1321\\-CSH\\-DYNAMIC\\-EXPANDO\\b'
|
|
2582
|
+
message: |-
|
|
2583
|
+
RunSec Detection [CWE-1321-CSH-DYNAMIC-EXPANDO]: CWE Final Certification
|
|
2584
|
+
languages:
|
|
2585
|
+
- generic
|
|
2586
|
+
severity: WARNING
|
|
2587
|
+
- id: runsec.domain-input-validation.cwe-749-csh-comvisible-dangerous
|
|
2588
|
+
metadata:
|
|
2589
|
+
runsec_version: v1.0
|
|
2590
|
+
confidence: |-
|
|
2591
|
+
0.9
|
|
2592
|
+
exploit_scenario: |-
|
|
2593
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2594
|
+
fix_template: |-
|
|
2595
|
+
Use using/try-finally and safe .NET APIs; enforce strict allowlists for untrusted input.
|
|
2596
|
+
pattern-either:
|
|
2597
|
+
- pattern: |-
|
|
2598
|
+
[ComVisible(true)] public void Run(string x){ Process.Start(x); }
|
|
2599
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-749\\-CSH\\-COMVISIBLE\\-DANGEROUS\\b'
|
|
2600
|
+
message: |-
|
|
2601
|
+
RunSec Detection [CWE-749-CSH-COMVISIBLE-DANGEROUS]: CWE Final Certification
|
|
2602
|
+
languages:
|
|
2603
|
+
- generic
|
|
2604
|
+
severity: WARNING
|
|
2605
|
+
- id: runsec.domain-input-validation.cwe-123-py-tempfile-toctou
|
|
2606
|
+
metadata:
|
|
2607
|
+
runsec_version: v1.0
|
|
2608
|
+
confidence: |-
|
|
2609
|
+
0.9
|
|
2610
|
+
exploit_scenario: |-
|
|
2611
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2612
|
+
fix_template: |-
|
|
2613
|
+
Атомарные temp API; для concurrent writes — file locks; валидировать path после mkstemp.
|
|
2614
|
+
pattern-either:
|
|
2615
|
+
- pattern: |-
|
|
2616
|
+
if os.path.exists(tmp):
|
|
2617
|
+
os.remove(tmp)
|
|
2618
|
+
open(tmp, "w").write(data)
|
|
2619
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-123\\-PY\\-TEMPFILE\\-TOCTOU\\b'
|
|
2620
|
+
message: |-
|
|
2621
|
+
RunSec Detection [CWE-123-PY-TEMPFILE-TOCTOU]: CWE-123
|
|
2622
|
+
languages:
|
|
2623
|
+
- generic
|
|
2624
|
+
severity: WARNING
|
|
2625
|
+
- id: runsec.domain-input-validation.cwe-124-js-arraybuffer-slice
|
|
2626
|
+
metadata:
|
|
2627
|
+
runsec_version: v1.0
|
|
2628
|
+
confidence: |-
|
|
2629
|
+
0.9
|
|
2630
|
+
exploit_scenario: |-
|
|
2631
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2632
|
+
fix_template: |-
|
|
2633
|
+
Проверять start/end против buffer.byteLength; отклонять отрицательные/NaN индексы; использовать typed array helpers с валидацией.
|
|
2634
|
+
pattern-either:
|
|
2635
|
+
- pattern: |-
|
|
2636
|
+
new Uint8Array(buf).subarray(userStart, userEnd) без clamp к byteLength
|
|
2637
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-124\\-JS\\-ARRAYBUFFER\\-SLICE\\b'
|
|
2638
|
+
message: |-
|
|
2639
|
+
RunSec Detection [CWE-124-JS-ARRAYBUFFER-SLICE]: CWE-124
|
|
2640
|
+
languages:
|
|
2641
|
+
- generic
|
|
2642
|
+
severity: WARNING
|
|
2643
|
+
- id: runsec.domain-input-validation.cwe-20-py-val-extra-01
|
|
2644
|
+
metadata:
|
|
2645
|
+
runsec_version: v1.0
|
|
2646
|
+
confidence: |-
|
|
2647
|
+
0.9
|
|
2648
|
+
exploit_scenario: |-
|
|
2649
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2650
|
+
fix_template: |-
|
|
2651
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
2652
|
+
pattern-either:
|
|
2653
|
+
- pattern: |-
|
|
2654
|
+
limit = float(request.query_params["limit"]) без upper bound
|
|
2655
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-20\\-PY\\-VAL\\-EXTRA\\-01\\b'
|
|
2656
|
+
message: |-
|
|
2657
|
+
RunSec Detection [CWE-20-PY-VAL-EXTRA-01]: CWE Final Certification
|
|
2658
|
+
languages:
|
|
2659
|
+
- generic
|
|
2660
|
+
severity: WARNING
|
|
2661
|
+
- id: runsec.domain-input-validation.cwe-20-py-val-extra-02
|
|
2662
|
+
metadata:
|
|
2663
|
+
runsec_version: v1.0
|
|
2664
|
+
confidence: |-
|
|
2665
|
+
0.9
|
|
2666
|
+
exploit_scenario: |-
|
|
2667
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2668
|
+
fix_template: |-
|
|
2669
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
2670
|
+
pattern-either:
|
|
2671
|
+
- pattern: |-
|
|
2672
|
+
p = (body.get("path") or "").strip() затем open(p) без deny empty
|
|
2673
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-20\\-PY\\-VAL\\-EXTRA\\-02\\b'
|
|
2674
|
+
message: |-
|
|
2675
|
+
RunSec Detection [CWE-20-PY-VAL-EXTRA-02]: CWE Final Certification
|
|
2676
|
+
languages:
|
|
2677
|
+
- generic
|
|
2678
|
+
severity: WARNING
|
|
2679
|
+
- id: runsec.domain-input-validation.cwe-20-js-val-extra-01
|
|
2680
|
+
metadata:
|
|
2681
|
+
runsec_version: v1.0
|
|
2682
|
+
confidence: |-
|
|
2683
|
+
0.9
|
|
2684
|
+
exploit_scenario: |-
|
|
2685
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2686
|
+
fix_template: |-
|
|
2687
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
2688
|
+
pattern-either:
|
|
2689
|
+
- pattern: |-
|
|
2690
|
+
const n = parseInt(req.query.depth)
|
|
2691
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-20\\-JS\\-VAL\\-EXTRA\\-01\\b'
|
|
2692
|
+
message: |-
|
|
2693
|
+
RunSec Detection [CWE-20-JS-VAL-EXTRA-01]: CWE Final Certification
|
|
2694
|
+
languages:
|
|
2695
|
+
- generic
|
|
2696
|
+
severity: WARNING
|
|
2697
|
+
- id: runsec.domain-input-validation.cwe-20-js-val-extra-02
|
|
2698
|
+
metadata:
|
|
2699
|
+
runsec_version: v1.0
|
|
2700
|
+
confidence: |-
|
|
2701
|
+
0.9
|
|
2702
|
+
exploit_scenario: |-
|
|
2703
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2704
|
+
fix_template: |-
|
|
2705
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
2706
|
+
pattern-either:
|
|
2707
|
+
- pattern: |-
|
|
2708
|
+
const cfg = JSON.parse(req.body) без schema
|
|
2709
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-20\\-JS\\-VAL\\-EXTRA\\-02\\b'
|
|
2710
|
+
message: |-
|
|
2711
|
+
RunSec Detection [CWE-20-JS-VAL-EXTRA-02]: CWE Final Certification
|
|
2712
|
+
languages:
|
|
2713
|
+
- generic
|
|
2714
|
+
severity: WARNING
|
|
2715
|
+
- id: runsec.domain-input-validation.cwe-89-py-val-extra-01
|
|
2716
|
+
metadata:
|
|
2717
|
+
runsec_version: v1.0
|
|
2718
|
+
confidence: |-
|
|
2719
|
+
0.9
|
|
2720
|
+
exploit_scenario: |-
|
|
2721
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2722
|
+
fix_template: |-
|
|
2723
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
2724
|
+
pattern-either:
|
|
2725
|
+
- pattern: |-
|
|
2726
|
+
ORDER BY {user_col} где user_col из query
|
|
2727
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-89\\-PY\\-VAL\\-EXTRA\\-01\\b'
|
|
2728
|
+
message: |-
|
|
2729
|
+
RunSec Detection [CWE-89-PY-VAL-EXTRA-01]: CWE Final Certification
|
|
2730
|
+
languages:
|
|
2731
|
+
- generic
|
|
2732
|
+
severity: WARNING
|
|
2733
|
+
- id: runsec.domain-input-validation.cwe-79-js-val-extra-01
|
|
2734
|
+
metadata:
|
|
2735
|
+
runsec_version: v1.0
|
|
2736
|
+
confidence: |-
|
|
2737
|
+
0.9
|
|
2738
|
+
exploit_scenario: |-
|
|
2739
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2740
|
+
fix_template: |-
|
|
2741
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
2742
|
+
pattern-either:
|
|
2743
|
+
- pattern: |-
|
|
2744
|
+
<a href={item.url}> без sanitizeUrl
|
|
2745
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-79\\-JS\\-VAL\\-EXTRA\\-01\\b'
|
|
2746
|
+
message: |-
|
|
2747
|
+
RunSec Detection [CWE-79-JS-VAL-EXTRA-01]: CWE Final Certification
|
|
2748
|
+
languages:
|
|
2749
|
+
- generic
|
|
2750
|
+
severity: WARNING
|
|
2751
|
+
- id: runsec.domain-input-validation.cwe-918-py-val-extra-01
|
|
2752
|
+
metadata:
|
|
2753
|
+
runsec_version: v1.0
|
|
2754
|
+
confidence: |-
|
|
2755
|
+
0.9
|
|
2756
|
+
exploit_scenario: |-
|
|
2757
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2758
|
+
fix_template: |-
|
|
2759
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
2760
|
+
pattern-either:
|
|
2761
|
+
- pattern: |-
|
|
2762
|
+
ipaddress.ip_address(host) затем socket.connect
|
|
2763
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-918\\-PY\\-VAL\\-EXTRA\\-01\\b'
|
|
2764
|
+
message: |-
|
|
2765
|
+
RunSec Detection [CWE-918-PY-VAL-EXTRA-01]: CWE Final Certification
|
|
2766
|
+
languages:
|
|
2767
|
+
- generic
|
|
2768
|
+
severity: WARNING
|
|
2769
|
+
- id: runsec.domain-input-validation.cwe-502-py-val-extra-01
|
|
2770
|
+
metadata:
|
|
2771
|
+
runsec_version: v1.0
|
|
2772
|
+
confidence: |-
|
|
2773
|
+
0.9
|
|
2774
|
+
exploit_scenario: |-
|
|
2775
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2776
|
+
fix_template: |-
|
|
2777
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
2778
|
+
pattern-either:
|
|
2779
|
+
- pattern: |-
|
|
2780
|
+
yaml.load(uploaded_text)
|
|
2781
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-502\\-PY\\-VAL\\-EXTRA\\-01\\b'
|
|
2782
|
+
message: |-
|
|
2783
|
+
RunSec Detection [CWE-502-PY-VAL-EXTRA-01]: CWE Final Certification
|
|
2784
|
+
languages:
|
|
2785
|
+
- generic
|
|
2786
|
+
severity: WARNING
|
|
2787
|
+
- id: runsec.domain-input-validation.cwe-611-py-val-extra-01
|
|
2788
|
+
metadata:
|
|
2789
|
+
runsec_version: v1.0
|
|
2790
|
+
confidence: |-
|
|
2791
|
+
0.9
|
|
2792
|
+
exploit_scenario: |-
|
|
2793
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2794
|
+
fix_template: |-
|
|
2795
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
2796
|
+
pattern-either:
|
|
2797
|
+
- pattern: |-
|
|
2798
|
+
lxml.etree.fromstring(ext_xml) без resolve_entities=False
|
|
2799
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-611\\-PY\\-VAL\\-EXTRA\\-01\\b'
|
|
2800
|
+
message: |-
|
|
2801
|
+
RunSec Detection [CWE-611-PY-VAL-EXTRA-01]: CWE Final Certification
|
|
2802
|
+
languages:
|
|
2803
|
+
- generic
|
|
2804
|
+
severity: WARNING
|
|
2805
|
+
- id: runsec.domain-input-validation.cwe-20-py-val-extra-03
|
|
2806
|
+
metadata:
|
|
2807
|
+
runsec_version: v1.0
|
|
2808
|
+
confidence: |-
|
|
2809
|
+
0.9
|
|
2810
|
+
exploit_scenario: |-
|
|
2811
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2812
|
+
fix_template: |-
|
|
2813
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
2814
|
+
pattern-either:
|
|
2815
|
+
- pattern: |-
|
|
2816
|
+
int(request.form["chunk_index"]) без range check
|
|
2817
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-20\\-PY\\-VAL\\-EXTRA\\-03\\b'
|
|
2818
|
+
message: |-
|
|
2819
|
+
RunSec Detection [CWE-20-PY-VAL-EXTRA-03]: CWE Final Certification
|
|
2820
|
+
languages:
|
|
2821
|
+
- generic
|
|
2822
|
+
severity: WARNING
|
|
2823
|
+
- id: runsec.domain-input-validation.cwe-1268-py-ipc-channel
|
|
2824
|
+
metadata:
|
|
2825
|
+
runsec_version: v1.0
|
|
2826
|
+
confidence: |-
|
|
2827
|
+
0.9
|
|
2828
|
+
exploit_scenario: |-
|
|
2829
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2830
|
+
fix_template: |-
|
|
2831
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
2832
|
+
pattern-either:
|
|
2833
|
+
- pattern: |-
|
|
2834
|
+
sock.connect((host, port)) где host из конфига без pinning
|
|
2835
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-1268\\-PY\\-IPC\\-CHANNEL\\b'
|
|
2836
|
+
message: |-
|
|
2837
|
+
RunSec Detection [CWE-1268-PY-IPC-CHANNEL]: CWE-1268
|
|
2838
|
+
languages:
|
|
2839
|
+
- generic
|
|
2840
|
+
severity: WARNING
|
|
2841
|
+
- id: runsec.domain-input-validation.cwe-1271-py-signed-err
|
|
2842
|
+
metadata:
|
|
2843
|
+
runsec_version: v1.0
|
|
2844
|
+
confidence: |-
|
|
2845
|
+
0.9
|
|
2846
|
+
exploit_scenario: |-
|
|
2847
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2848
|
+
fix_template: |-
|
|
2849
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
2850
|
+
pattern-either:
|
|
2851
|
+
- pattern: |-
|
|
2852
|
+
verify_sig(blob) or True
|
|
2853
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-1271\\-PY\\-SIGNED\\-ERR\\b'
|
|
2854
|
+
message: |-
|
|
2855
|
+
RunSec Detection [CWE-1271-PY-SIGNED-ERR]: CWE-1271
|
|
2856
|
+
languages:
|
|
2857
|
+
- generic
|
|
2858
|
+
severity: WARNING
|
|
2859
|
+
- id: runsec.domain-input-validation.cwe-1280-py-mark-critical
|
|
2860
|
+
metadata:
|
|
2861
|
+
runsec_version: v1.0
|
|
2862
|
+
confidence: |-
|
|
2863
|
+
0.9
|
|
2864
|
+
exploit_scenario: |-
|
|
2865
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2866
|
+
fix_template: |-
|
|
2867
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
2868
|
+
pattern-either:
|
|
2869
|
+
- pattern: |-
|
|
2870
|
+
if optional: skip_tls_check()
|
|
2871
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-1280\\-PY\\-MARK\\-CRITICAL\\b'
|
|
2872
|
+
message: |-
|
|
2873
|
+
RunSec Detection [CWE-1280-PY-MARK-CRITICAL]: CWE-1280
|
|
2874
|
+
languages:
|
|
2875
|
+
- generic
|
|
2876
|
+
severity: WARNING
|
|
2877
|
+
- id: runsec.domain-input-validation.cwe-1285-py-negotiation
|
|
2878
|
+
metadata:
|
|
2879
|
+
runsec_version: v1.0
|
|
2880
|
+
confidence: |-
|
|
2881
|
+
0.9
|
|
2882
|
+
exploit_scenario: |-
|
|
2883
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
2884
|
+
fix_template: |-
|
|
2885
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
2886
|
+
pattern-either:
|
|
2887
|
+
- pattern: |-
|
|
2888
|
+
if not tls: use_http()
|
|
2889
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-1285\\-PY\\-NEGOTIATION\\b'
|
|
2890
|
+
message: |-
|
|
2891
|
+
RunSec Detection [CWE-1285-PY-NEGOTIATION]: CWE-1285
|
|
2892
|
+
languages:
|
|
2893
|
+
- generic
|
|
2894
|
+
severity: WARNING
|