@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.
Files changed (40) hide show
  1. package/dist/index.js +578 -0
  2. package/package.json +43 -0
  3. package/src/rules/data/rule-compliance-map.json +43563 -0
  4. package/src/rules/data/semgrep-rules/README-taint-overlays.md +21 -0
  5. package/src/rules/data/semgrep-rules/advanced-agent-cloud.yaml +802 -0
  6. package/src/rules/data/semgrep-rules/app-logic.yaml +445 -0
  7. package/src/rules/data/semgrep-rules/auth-keycloak.yaml +831 -0
  8. package/src/rules/data/semgrep-rules/browser-agent.yaml +260 -0
  9. package/src/rules/data/semgrep-rules/cloud-secrets.yaml +316 -0
  10. package/src/rules/data/semgrep-rules/csharp-dotnet.yaml +4864 -0
  11. package/src/rules/data/semgrep-rules/desktop-electron-pro.yaml +30 -0
  12. package/src/rules/data/semgrep-rules/desktop-vsto-suite.yaml +2759 -0
  13. package/src/rules/data/semgrep-rules/devops-security.yaml +393 -0
  14. package/src/rules/data/semgrep-rules/domain-access-management.yaml +1023 -0
  15. package/src/rules/data/semgrep-rules/domain-data-privacy.yaml +852 -0
  16. package/src/rules/data/semgrep-rules/domain-input-validation.yaml +2894 -0
  17. package/src/rules/data/semgrep-rules/domain-platform-hardening.yaml +1715 -0
  18. package/src/rules/data/semgrep-rules/ds-ml-security.yaml +2431 -0
  19. package/src/rules/data/semgrep-rules/fastapi-async.yaml +5953 -0
  20. package/src/rules/data/semgrep-rules/frontend-react.yaml +4035 -0
  21. package/src/rules/data/semgrep-rules/frontend-security.yaml +200 -0
  22. package/src/rules/data/semgrep-rules/go-core.yaml +4959 -0
  23. package/src/rules/data/semgrep-rules/hft-cpp-security.yaml +631 -0
  24. package/src/rules/data/semgrep-rules/infra-k8s-helm.yaml +4968 -0
  25. package/src/rules/data/semgrep-rules/integration-security.yaml +2362 -0
  26. package/src/rules/data/semgrep-rules/java-enterprise.yaml +14756 -0
  27. package/src/rules/data/semgrep-rules/java-spring.yaml +397 -0
  28. package/src/rules/data/semgrep-rules/license-compliance.yaml +186 -0
  29. package/src/rules/data/semgrep-rules/mobile-flutter.yaml +37 -0
  30. package/src/rules/data/semgrep-rules/mobile-security.yaml +721 -0
  31. package/src/rules/data/semgrep-rules/nodejs-nestjs.yaml +5164 -0
  32. package/src/rules/data/semgrep-rules/nodejs-security.yaml +326 -0
  33. package/src/rules/data/semgrep-rules/observability.yaml +381 -0
  34. package/src/rules/data/semgrep-rules/php-security.yaml +3601 -0
  35. package/src/rules/data/semgrep-rules/python-backend-pro.yaml +30 -0
  36. package/src/rules/data/semgrep-rules/python-django.yaml +181 -0
  37. package/src/rules/data/semgrep-rules/python-security.yaml +284 -0
  38. package/src/rules/data/semgrep-rules/ru-regulatory.yaml +496 -0
  39. package/src/rules/data/semgrep-rules/ruby-rails.yaml +3078 -0
  40. 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