@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,1715 @@
1
+ rules:
2
+ - id: runsec.domain-platform-hardening.mob-001
3
+ metadata:
4
+ runsec_version: v1.0
5
+ confidence: |-
6
+ 0.9
7
+ exploit_scenario: |-
8
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
9
+ fix_template: |-
10
+ Удалить bypass, включить pinning/strict TLS validation.
11
+ pattern-either:
12
+ - pattern: |-
13
+ badCertificateCallback => true
14
+ - pattern-regex: 'Vulnerable:\\s*MOB\\-001\\b'
15
+ message: |-
16
+ RunSec Detection [MOB-001]: Mobile SAR
17
+ languages:
18
+ - generic
19
+ severity: WARNING
20
+ - id: runsec.domain-platform-hardening.mob-010
21
+ metadata:
22
+ runsec_version: v1.0
23
+ confidence: |-
24
+ 0.9
25
+ exploit_scenario: |-
26
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
27
+ fix_template: |-
28
+ Никогда не печатать токены, даже в debug.
29
+ pattern-either:
30
+ - pattern: |-
31
+ print('token - $token')
32
+ - pattern-regex: 'Vulnerable:\\s*MOB\\-010\\b'
33
+ message: |-
34
+ RunSec Detection [MOB-010]: Mobile SAR
35
+ languages:
36
+ - generic
37
+ severity: WARNING
38
+ - id: runsec.domain-platform-hardening.mob-021
39
+ metadata:
40
+ runsec_version: v1.0
41
+ confidence: |-
42
+ 0.9
43
+ exploit_scenario: |-
44
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
45
+ fix_template: |-
46
+ Включить FLAG_SECURE на чувствительных экранах.
47
+ pattern-either:
48
+ - pattern: |-
49
+ Нет FLAG_SECURE в Android activity
50
+ - pattern-regex: 'Vulnerable:\\s*MOB\\-021\\b'
51
+ message: |-
52
+ RunSec Detection [MOB-021]: Mobile SAR
53
+ languages:
54
+ - generic
55
+ severity: WARNING
56
+ - id: runsec.domain-platform-hardening.dsk-100
57
+ metadata:
58
+ runsec_version: v1.0
59
+ confidence: |-
60
+ 0.9
61
+ exploit_scenario: |-
62
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
63
+ fix_template: |-
64
+ Запрет string-exec, передача данных через безопасный IPC.
65
+ pattern-either:
66
+ - pattern: |-
67
+ executeJavaScript(...userInput...)
68
+ - pattern-regex: 'Vulnerable:\\s*DSK\\-100\\b'
69
+ message: |-
70
+ RunSec Detection [DSK-100]: Desktop SAR
71
+ languages:
72
+ - generic
73
+ severity: WARNING
74
+ - id: runsec.domain-platform-hardening.dsk-105
75
+ metadata:
76
+ runsec_version: v1.0
77
+ confidence: |-
78
+ 0.9
79
+ exploit_scenario: |-
80
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
81
+ fix_template: |-
82
+ Использовать ipcMain.handle + schema validation + authz.
83
+ pattern-either:
84
+ - pattern: |-
85
+ ipcMain.on(...) на критическом канале
86
+ - pattern-regex: 'Vulnerable:\\s*DSK\\-105\\b'
87
+ message: |-
88
+ RunSec Detection [DSK-105]: Desktop SAR
89
+ languages:
90
+ - generic
91
+ severity: WARNING
92
+ - id: runsec.domain-platform-hardening.dsk-110
93
+ metadata:
94
+ runsec_version: v1.0
95
+ confidence: |-
96
+ 0.9
97
+ exploit_scenario: |-
98
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
99
+ fix_template: |-
100
+ Обновление зависимости + hardening bootstrap.
101
+ pattern-either:
102
+ - pattern: |-
103
+ xlsx ниже безопасной версии
104
+ - pattern-regex: 'Vulnerable:\\s*DSK\\-110\\b'
105
+ message: |-
106
+ RunSec Detection [DSK-110]: Desktop SAR
107
+ languages:
108
+ - generic
109
+ severity: WARNING
110
+ - id: runsec.domain-platform-hardening.njs-017
111
+ metadata:
112
+ runsec_version: v1.0
113
+ confidence: |-
114
+ 0.9
115
+ exploit_scenario: |-
116
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
117
+ fix_template: |-
118
+ Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
119
+ pattern-either:
120
+ - pattern: |-
121
+ git dep без lock/integrity
122
+ - pattern-regex: 'Vulnerable:\\s*NJS\\-017\\b'
123
+ message: |-
124
+ RunSec Detection [NJS-017]: Supply Chain
125
+ languages:
126
+ - generic
127
+ severity: WARNING
128
+ - id: runsec.domain-platform-hardening.njs-018
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
+ X-Powered-By открыт
140
+ - pattern-regex: 'Vulnerable:\\s*NJS\\-018\\b'
141
+ message: |-
142
+ RunSec Detection [NJS-018]: HTTP Hardening
143
+ languages:
144
+ - generic
145
+ severity: WARNING
146
+ - id: runsec.domain-platform-hardening.njs-033
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
+ rejectUnauthorized: false
158
+ - pattern-regex: 'Vulnerable:\\s*NJS\\-033\\b'
159
+ message: |-
160
+ RunSec Detection [NJS-033]: TLS Hardening
161
+ languages:
162
+ - generic
163
+ severity: WARNING
164
+ - id: runsec.domain-platform-hardening.inf-200
165
+ metadata:
166
+ runsec_version: v1.0
167
+ confidence: |-
168
+ 0.9
169
+ exploit_scenario: |-
170
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
171
+ fix_template: |-
172
+ Вынести персоналии в защищенный справочник и role mapping.
173
+ pattern-either:
174
+ - pattern: |-
175
+ В коде зашиты ФИО/логины сотрудников
176
+ - pattern-regex: 'Vulnerable:\\s*INF\\-200\\b'
177
+ message: |-
178
+ RunSec Detection [INF-200]: Infra Risk Report
179
+ languages:
180
+ - generic
181
+ severity: WARNING
182
+ - id: runsec.domain-platform-hardening.inf-201
183
+ metadata:
184
+ runsec_version: v1.0
185
+ confidence: |-
186
+ 0.9
187
+ exploit_scenario: |-
188
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
189
+ fix_template: |-
190
+ Обязательные CPU requests/limits по профилю сервиса.
191
+ pattern-either:
192
+ - pattern: |-
193
+ Pod/container без resources.limits.cpu
194
+ - pattern-regex: 'Vulnerable:\\s*INF\\-201\\b'
195
+ message: |-
196
+ RunSec Detection [INF-201]: Infra Risk Report
197
+ languages:
198
+ - generic
199
+ severity: WARNING
200
+ - id: runsec.domain-platform-hardening.inf-202
201
+ metadata:
202
+ runsec_version: v1.0
203
+ confidence: |-
204
+ 0.9
205
+ exploit_scenario: |-
206
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
207
+ fix_template: |-
208
+ Обязательные memory requests/limits и OOM policy.
209
+ pattern-either:
210
+ - pattern: |-
211
+ Pod/container без resources.limits.memory
212
+ - pattern-regex: 'Vulnerable:\\s*INF\\-202\\b'
213
+ message: |-
214
+ RunSec Detection [INF-202]: Infra Risk Report
215
+ languages:
216
+ - generic
217
+ severity: WARNING
218
+ - id: runsec.domain-platform-hardening.inf-203
219
+ metadata:
220
+ runsec_version: v1.0
221
+ confidence: |-
222
+ 0.9
223
+ exploit_scenario: |-
224
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
225
+ fix_template: |-
226
+ Вводить maxReplicas + circuit breaker на upstream.
227
+ pattern-either:
228
+ - pattern: |-
229
+ HPA без upper bound
230
+ - pattern-regex: 'Vulnerable:\\s*INF\\-203\\b'
231
+ message: |-
232
+ RunSec Detection [INF-203]: Infra Risk Report
233
+ languages:
234
+ - generic
235
+ severity: WARNING
236
+ - id: runsec.domain-platform-hardening.inf-204
237
+ metadata:
238
+ runsec_version: v1.0
239
+ confidence: |-
240
+ 0.9
241
+ exploit_scenario: |-
242
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
243
+ fix_template: |-
244
+ Добавить PDB для сохранения SLO при обновлениях/сбоях.
245
+ pattern-either:
246
+ - pattern: |-
247
+ Отсутствует PDB для критических сервисов
248
+ - pattern-regex: 'Vulnerable:\\s*INF\\-204\\b'
249
+ message: |-
250
+ RunSec Detection [INF-204]: Infra Risk Report
251
+ languages:
252
+ - generic
253
+ severity: WARNING
254
+ - id: runsec.domain-platform-hardening.inf-205
255
+ metadata:
256
+ runsec_version: v1.0
257
+ confidence: |-
258
+ 0.9
259
+ exploit_scenario: |-
260
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
261
+ fix_template: |-
262
+ Настроить readiness/liveness/startup probes.
263
+ pattern-either:
264
+ - pattern: |-
265
+ Нет readiness probe
266
+ - pattern-regex: 'Vulnerable:\\s*INF\\-205\\b'
267
+ message: |-
268
+ RunSec Detection [INF-205]: Infra Risk Report
269
+ languages:
270
+ - generic
271
+ severity: WARNING
272
+ - id: runsec.domain-platform-hardening.inf-206
273
+ metadata:
274
+ runsec_version: v1.0
275
+ confidence: |-
276
+ 0.9
277
+ exploit_scenario: |-
278
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
279
+ fix_template: |-
280
+ Добавить startup probe с корректным timeout window.
281
+ pattern-either:
282
+ - pattern: |-
283
+ Сервис стартует долго без startup probe
284
+ - pattern-regex: 'Vulnerable:\\s*INF\\-206\\b'
285
+ message: |-
286
+ RunSec Detection [INF-206]: Infra Risk Report
287
+ languages:
288
+ - generic
289
+ severity: WARNING
290
+ - id: runsec.domain-platform-hardening.inf-207
291
+ metadata:
292
+ runsec_version: v1.0
293
+ confidence: |-
294
+ 0.9
295
+ exploit_scenario: |-
296
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
297
+ fix_template: |-
298
+ Egress allowlist через NetworkPolicy/egress proxy.
299
+ pattern-either:
300
+ - pattern: |-
301
+ workload может ходить куда угодно
302
+ - pattern-regex: 'Vulnerable:\\s*INF\\-207\\b'
303
+ message: |-
304
+ RunSec Detection [INF-207]: Infra Risk Report
305
+ languages:
306
+ - generic
307
+ severity: WARNING
308
+ - id: runsec.domain-platform-hardening.inf-208
309
+ metadata:
310
+ runsec_version: v1.0
311
+ confidence: |-
312
+ 0.9
313
+ exploit_scenario: |-
314
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
315
+ fix_template: |-
316
+ Использовать digest pinning + controlled updates.
317
+ pattern-either:
318
+ - pattern: |-
319
+ image: app:latest
320
+ - pattern-regex: 'Vulnerable:\\s*INF\\-208\\b'
321
+ message: |-
322
+ RunSec Detection [INF-208]: Infra Risk Report
323
+ languages:
324
+ - generic
325
+ severity: WARNING
326
+ - id: runsec.domain-platform-hardening.inf-209
327
+ metadata:
328
+ runsec_version: v1.0
329
+ confidence: |-
330
+ 0.9
331
+ exploit_scenario: |-
332
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
333
+ fix_template: |-
334
+ Генерировать и хранить SBOM + provenance attestation.
335
+ pattern-either:
336
+ - pattern: |-
337
+ Нет SBOM к артефактам
338
+ - pattern-regex: 'Vulnerable:\\s*INF\\-209\\b'
339
+ message: |-
340
+ RunSec Detection [INF-209]: Infra Risk Report
341
+ languages:
342
+ - generic
343
+ severity: WARNING
344
+ - id: runsec.domain-platform-hardening.inf-210
345
+ metadata:
346
+ runsec_version: v1.0
347
+ confidence: |-
348
+ 0.9
349
+ exploit_scenario: |-
350
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
351
+ fix_template: |-
352
+ Включить service mesh mTLS/PKI policy.
353
+ pattern-either:
354
+ - pattern: |-
355
+ mTLS не включен между сервисами
356
+ - pattern-regex: 'Vulnerable:\\s*INF\\-210\\b'
357
+ message: |-
358
+ RunSec Detection [INF-210]: Infra Risk Report
359
+ languages:
360
+ - generic
361
+ severity: WARNING
362
+ - id: runsec.domain-platform-hardening.inf-211
363
+ metadata:
364
+ runsec_version: v1.0
365
+ confidence: |-
366
+ 0.9
367
+ exploit_scenario: |-
368
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
369
+ fix_template: |-
370
+ Политика ротации и автоматический rollover.
371
+ pattern-either:
372
+ - pattern: |-
373
+ Секреты живут бессрочно
374
+ - pattern-regex: 'Vulnerable:\\s*INF\\-211\\b'
375
+ message: |-
376
+ RunSec Detection [INF-211]: Infra Risk Report
377
+ languages:
378
+ - generic
379
+ severity: WARNING
380
+ - id: runsec.domain-platform-hardening.inf-212
381
+ metadata:
382
+ runsec_version: v1.0
383
+ confidence: |-
384
+ 0.9
385
+ exploit_scenario: |-
386
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
387
+ fix_template: |-
388
+ Запрет privileged debug в prod namespace.
389
+ pattern-either:
390
+ - pattern: |-
391
+ Debug pod с расширенными правами
392
+ - pattern-regex: 'Vulnerable:\\s*INF\\-212\\b'
393
+ message: |-
394
+ RunSec Detection [INF-212]: Infra Risk Report
395
+ languages:
396
+ - generic
397
+ severity: WARNING
398
+ - id: runsec.domain-platform-hardening.inf-213
399
+ metadata:
400
+ runsec_version: v1.0
401
+ confidence: |-
402
+ 0.9
403
+ exploit_scenario: |-
404
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
405
+ fix_template: |-
406
+ Immutable config + signed deployment pipeline.
407
+ pattern-either:
408
+ - pattern: |-
409
+ Runtime правит config map в обход CI
410
+ - pattern-regex: 'Vulnerable:\\s*INF\\-213\\b'
411
+ message: |-
412
+ RunSec Detection [INF-213]: Infra Risk Report
413
+ languages:
414
+ - generic
415
+ severity: WARNING
416
+ - id: runsec.domain-platform-hardening.inf-214
417
+ metadata:
418
+ runsec_version: v1.0
419
+ confidence: |-
420
+ 0.9
421
+ exploit_scenario: |-
422
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
423
+ fix_template: |-
424
+ Ввести ResourceQuota и LimitRange.
425
+ pattern-either:
426
+ - pattern: |-
427
+ Namespace без quota
428
+ - pattern-regex: 'Vulnerable:\\s*INF\\-214\\b'
429
+ message: |-
430
+ RunSec Detection [INF-214]: Infra Risk Report
431
+ languages:
432
+ - generic
433
+ severity: WARNING
434
+ - id: runsec.domain-platform-hardening.inf-215
435
+ metadata:
436
+ runsec_version: v1.0
437
+ confidence: |-
438
+ 0.9
439
+ exploit_scenario: |-
440
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
441
+ fix_template: |-
442
+ Политика хранения/архивации security logs.
443
+ pattern-either:
444
+ - pattern: |-
445
+ Audit logs без retention SLA
446
+ - pattern-regex: 'Vulnerable:\\s*INF\\-215\\b'
447
+ message: |-
448
+ RunSec Detection [INF-215]: Infra Risk Report
449
+ languages:
450
+ - generic
451
+ severity: WARNING
452
+ - id: runsec.domain-platform-hardening.inf-216
453
+ metadata:
454
+ runsec_version: v1.0
455
+ confidence: |-
456
+ 0.9
457
+ exploit_scenario: |-
458
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
459
+ fix_template: |-
460
+ Canary + auto rollback on SLO breach.
461
+ pattern-either:
462
+ - pattern: |-
463
+ Deploy без canary/rollback trigger
464
+ - pattern-regex: 'Vulnerable:\\s*INF\\-216\\b'
465
+ message: |-
466
+ RunSec Detection [INF-216]: Infra Risk Report
467
+ languages:
468
+ - generic
469
+ severity: WARNING
470
+ - id: runsec.domain-platform-hardening.inf-217
471
+ metadata:
472
+ runsec_version: v1.0
473
+ confidence: |-
474
+ 0.9
475
+ exploit_scenario: |-
476
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
477
+ fix_template: |-
478
+ mTLS + authn/authz даже во внутреннем контуре.
479
+ pattern-either:
480
+ - pattern: |-
481
+ /admin endpoint внутри сети без auth
482
+ - pattern-regex: 'Vulnerable:\\s*INF\\-217\\b'
483
+ message: |-
484
+ RunSec Detection [INF-217]: Infra Risk Report
485
+ languages:
486
+ - generic
487
+ severity: WARNING
488
+ - id: runsec.domain-platform-hardening.inf-218
489
+ metadata:
490
+ runsec_version: v1.0
491
+ confidence: |-
492
+ 0.9
493
+ exploit_scenario: |-
494
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
495
+ fix_template: |-
496
+ Применить baseline профили на namespace/service.
497
+ pattern-either:
498
+ - pattern: |-
499
+ Workload без seccomp/AppArmor profile
500
+ - pattern-regex: 'Vulnerable:\\s*INF\\-218\\b'
501
+ message: |-
502
+ RunSec Detection [INF-218]: Infra Risk Report
503
+ languages:
504
+ - generic
505
+ severity: WARNING
506
+ - id: runsec.domain-platform-hardening.inf-219
507
+ metadata:
508
+ runsec_version: v1.0
509
+ confidence: |-
510
+ 0.9
511
+ exploit_scenario: |-
512
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
513
+ fix_template: |-
514
+ Изоляция узлов через taints/tolerations/nodeSelector.
515
+ pattern-either:
516
+ - pattern: |-
517
+ Sensitive workload на общих нодах
518
+ - pattern-regex: 'Vulnerable:\\s*INF\\-219\\b'
519
+ message: |-
520
+ RunSec Detection [INF-219]: Infra Risk Report
521
+ languages:
522
+ - generic
523
+ severity: WARNING
524
+ - id: runsec.domain-platform-hardening.inf-220
525
+ metadata:
526
+ runsec_version: v1.0
527
+ confidence: |-
528
+ 0.9
529
+ exploit_scenario: |-
530
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
531
+ fix_template: |-
532
+ Ввести dedup/throttle и escalation policy.
533
+ pattern-either:
534
+ - pattern: |-
535
+ Alert storm без throttling
536
+ - pattern-regex: 'Vulnerable:\\s*INF\\-220\\b'
537
+ message: |-
538
+ RunSec Detection [INF-220]: Infra Risk Report
539
+ languages:
540
+ - generic
541
+ severity: WARNING
542
+ - id: runsec.domain-platform-hardening.py-024
543
+ metadata:
544
+ runsec_version: v1.0
545
+ confidence: |-
546
+ 0.9
547
+ exploit_scenario: |-
548
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
549
+ fix_template: |-
550
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
551
+ pattern-either:
552
+ - pattern: |-
553
+ httpx.Client(verify=False)
554
+ - pattern-regex: 'Vulnerable:\\s*PY\\-024\\b'
555
+ message: |-
556
+ RunSec Detection [PY-024]: TLS hardening
557
+ languages:
558
+ - generic
559
+ severity: WARNING
560
+ - id: runsec.domain-platform-hardening.py-027
561
+ metadata:
562
+ runsec_version: v1.0
563
+ confidence: |-
564
+ 0.9
565
+ exploit_scenario: |-
566
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
567
+ fix_template: |-
568
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
569
+ pattern-either:
570
+ - pattern: |-
571
+ limit = int(request.args["limit"]) no cap
572
+ - pattern-regex: 'Vulnerable:\\s*PY\\-027\\b'
573
+ message: |-
574
+ RunSec Detection [PY-027]: Resource abuse prevention
575
+ languages:
576
+ - generic
577
+ severity: WARNING
578
+ - id: runsec.domain-platform-hardening.njs-021
579
+ metadata:
580
+ runsec_version: v1.0
581
+ confidence: |-
582
+ 0.9
583
+ exploit_scenario: |-
584
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
585
+ fix_template: |-
586
+ Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
587
+ pattern-either:
588
+ - pattern: |-
589
+ app.use(express.json()) (без limit)
590
+ - pattern-regex: 'Vulnerable:\\s*NJS\\-021\\b'
591
+ message: |-
592
+ RunSec Detection [NJS-021]: OWASP API4 Resource Consumption
593
+ languages:
594
+ - generic
595
+ severity: WARNING
596
+ - id: runsec.domain-platform-hardening.njs-030
597
+ metadata:
598
+ runsec_version: v1.0
599
+ confidence: |-
600
+ 0.9
601
+ exploit_scenario: |-
602
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
603
+ fix_template: |-
604
+ Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
605
+ pattern-either:
606
+ - pattern: |-
607
+ app.use(bodyParser.json()) без limit и depth checks
608
+ - pattern-regex: 'Vulnerable:\\s*NJS\\-030\\b'
609
+ message: |-
610
+ RunSec Detection [NJS-030]: API Resource Consumption Defense
611
+ languages:
612
+ - generic
613
+ severity: WARNING
614
+ - id: runsec.domain-platform-hardening.fts-009
615
+ metadata:
616
+ runsec_version: v1.0
617
+ confidence: |-
618
+ 0.9
619
+ exploit_scenario: |-
620
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
621
+ fix_template: |-
622
+ Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
623
+ pattern-either:
624
+ - pattern: |-
625
+ <script src="https://cdn.example.com/lib.js"></script>
626
+ - pattern-regex: 'Vulnerable:\\s*FTS\\-009\\b'
627
+ message: |-
628
+ RunSec Detection [FTS-009]: Subresource Integrity (SRI)
629
+ languages:
630
+ - generic
631
+ severity: WARNING
632
+ - id: runsec.domain-platform-hardening.cwe-400-py
633
+ metadata:
634
+ runsec_version: v1.0
635
+ confidence: |-
636
+ 0.9
637
+ exploit_scenario: |-
638
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
639
+ fix_template: |-
640
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
641
+ pattern-either:
642
+ - pattern: |-
643
+ re.search(r"(a+)+$", user_input)
644
+ re.match(pattern, user_input)
645
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-400\\-PY\\b'
646
+ message: |-
647
+ RunSec Detection [CWE-400-PY]: CWE Compliance
648
+ languages:
649
+ - generic
650
+ severity: WARNING
651
+ - id: runsec.domain-platform-hardening.cwe-670-py
652
+ metadata:
653
+ runsec_version: v1.0
654
+ confidence: |-
655
+ 0.9
656
+ exploit_scenario: |-
657
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
658
+ fix_template: |-
659
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
660
+ pattern-either:
661
+ - pattern: |-
662
+ temp_path = "/tmp/report.txt"
663
+ open(temp_path, "w")
664
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-670\\-PY\\b'
665
+ message: |-
666
+ RunSec Detection [CWE-670-PY]: CWE Compliance
667
+ languages:
668
+ - generic
669
+ severity: WARNING
670
+ - id: runsec.domain-platform-hardening.cwe-400-js
671
+ metadata:
672
+ runsec_version: v1.0
673
+ confidence: |-
674
+ 0.9
675
+ exploit_scenario: |-
676
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
677
+ fix_template: |-
678
+ Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
679
+ pattern-either:
680
+ - pattern: |-
681
+ const re = /(a+)+$/;
682
+ re.test(userInput)
683
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-400\\-JS\\b'
684
+ message: |-
685
+ RunSec Detection [CWE-400-JS]: CWE Compliance
686
+ languages:
687
+ - generic
688
+ severity: WARNING
689
+ - id: runsec.domain-platform-hardening.cwe-670-js
690
+ metadata:
691
+ runsec_version: v1.0
692
+ confidence: |-
693
+ 0.9
694
+ exploit_scenario: |-
695
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
696
+ fix_template: |-
697
+ Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
698
+ pattern-either:
699
+ - pattern: |-
700
+ const p = "/tmp/" + Date.now() + ".txt";
701
+ fs.writeFileSync(p, data)
702
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-670\\-JS\\b'
703
+ message: |-
704
+ RunSec Detection [CWE-670-JS]: CWE Compliance
705
+ languages:
706
+ - generic
707
+ severity: WARNING
708
+ - id: runsec.domain-platform-hardening.cwe-755-js
709
+ metadata:
710
+ runsec_version: v1.0
711
+ confidence: |-
712
+ 0.9
713
+ exploit_scenario: |-
714
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
715
+ fix_template: |-
716
+ Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
717
+ pattern-either:
718
+ - pattern: |-
719
+ ipcMain.handle("x", async () => { await doCritical(); return ok; })
720
+ doWork().then(saveResult)
721
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-755\\-JS\\b'
722
+ message: |-
723
+ RunSec Detection [CWE-755-JS]: CWE Compliance
724
+ languages:
725
+ - generic
726
+ severity: WARNING
727
+ - id: runsec.domain-platform-hardening.cwe-295-py
728
+ metadata:
729
+ runsec_version: v1.0
730
+ confidence: |-
731
+ 0.9
732
+ exploit_scenario: |-
733
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
734
+ fix_template: |-
735
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
736
+ pattern-either:
737
+ - pattern: |-
738
+ ctx = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
739
+ ctx.check_hostname = False
740
+ ctx.verify_mode = ssl.CERT_NONE
741
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-295\\-PY\\b'
742
+ message: |-
743
+ RunSec Detection [CWE-295-PY]: CWE Compliance - Transport Layer
744
+ languages:
745
+ - generic
746
+ severity: WARNING
747
+ - id: runsec.domain-platform-hardening.cwe-297-py
748
+ metadata:
749
+ runsec_version: v1.0
750
+ confidence: |-
751
+ 0.9
752
+ exploit_scenario: |-
753
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
754
+ fix_template: |-
755
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
756
+ pattern-either:
757
+ - pattern: |-
758
+ ssl.SSLContext(ssl.PROTOCOL_TLSv1)
759
+ ssl.SSLContext(ssl.PROTOCOL_SSLv3)
760
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-297\\-PY\\b'
761
+ message: |-
762
+ RunSec Detection [CWE-297-PY]: CWE Compliance - Transport Layer
763
+ languages:
764
+ - generic
765
+ severity: WARNING
766
+ - id: runsec.domain-platform-hardening.cwe-295-js-env
767
+ metadata:
768
+ runsec_version: v1.0
769
+ confidence: |-
770
+ 0.9
771
+ exploit_scenario: |-
772
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
773
+ fix_template: |-
774
+ Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
775
+ pattern-either:
776
+ - pattern: |-
777
+ process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"
778
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-295\\-JS\\-ENV\\b'
779
+ message: |-
780
+ RunSec Detection [CWE-295-JS-ENV]: CWE Compliance - Transport Layer
781
+ languages:
782
+ - generic
783
+ severity: WARNING
784
+ - id: runsec.domain-platform-hardening.cwe-295-js-req
785
+ metadata:
786
+ runsec_version: v1.0
787
+ confidence: |-
788
+ 0.9
789
+ exploit_scenario: |-
790
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
791
+ fix_template: |-
792
+ Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
793
+ pattern-either:
794
+ - pattern: |-
795
+ https.request({ host, rejectUnauthorized: false })
796
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-295\\-JS\\-REQ\\b'
797
+ message: |-
798
+ RunSec Detection [CWE-295-JS-REQ]: CWE Compliance - Transport Layer
799
+ languages:
800
+ - generic
801
+ severity: WARNING
802
+ - id: runsec.domain-platform-hardening.cwe-451-py
803
+ metadata:
804
+ runsec_version: v1.0
805
+ confidence: |-
806
+ 0.9
807
+ exploit_scenario: |-
808
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
809
+ fix_template: |-
810
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
811
+ pattern-either:
812
+ - pattern: |-
813
+ Отсутствует django.middleware.clickjacking.XFrameOptionsMiddleware в MIDDLEWARE
814
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-451\\-PY\\b'
815
+ message: |-
816
+ RunSec Detection [CWE-451-PY]: CWE Compliance Final
817
+ languages:
818
+ - generic
819
+ severity: WARNING
820
+ - id: runsec.domain-platform-hardening.cwe-1321-js-json
821
+ metadata:
822
+ runsec_version: v1.0
823
+ confidence: |-
824
+ 0.9
825
+ exploit_scenario: |-
826
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
827
+ fix_template: |-
828
+ Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
829
+ pattern-either:
830
+ - pattern: |-
831
+ const obj = JSON.parse(untrusted) без schema validation
832
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-1321\\-JS\\-JSON\\b'
833
+ message: |-
834
+ RunSec Detection [CWE-1321-JS-JSON]: CWE Compliance Final
835
+ languages:
836
+ - generic
837
+ severity: WARNING
838
+ - id: runsec.domain-platform-hardening.cwe-362-py
839
+ metadata:
840
+ runsec_version: v1.0
841
+ confidence: |-
842
+ 0.9
843
+ exploit_scenario: |-
844
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
845
+ fix_template: |-
846
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
847
+ pattern-either:
848
+ - pattern: |-
849
+ balance = get_balance(); await external(); set_balance(balance-amount)
850
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-362\\-PY\\b'
851
+ message: |-
852
+ RunSec Detection [CWE-362-PY]: CWE Final Certification
853
+ languages:
854
+ - generic
855
+ severity: WARNING
856
+ - id: runsec.domain-platform-hardening.cwe-362-js
857
+ metadata:
858
+ runsec_version: v1.0
859
+ confidence: |-
860
+ 0.9
861
+ exploit_scenario: |-
862
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
863
+ fix_template: |-
864
+ Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
865
+ pattern-either:
866
+ - pattern: |-
867
+ const x = cache.get(k); await op(); cache.set(k, x-1)
868
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-362\\-JS\\b'
869
+ message: |-
870
+ RunSec Detection [CWE-362-JS]: CWE Final Certification
871
+ languages:
872
+ - generic
873
+ severity: WARNING
874
+ - id: runsec.domain-platform-hardening.cwe-451-js
875
+ metadata:
876
+ runsec_version: v1.0
877
+ confidence: |-
878
+ 0.9
879
+ exploit_scenario: |-
880
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
881
+ fix_template: |-
882
+ Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
883
+ pattern-either:
884
+ - pattern: |-
885
+ Нет Content-Security-Policy и X-Frame-Options в ответах
886
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-451\\-JS\\b'
887
+ message: |-
888
+ RunSec Detection [CWE-451-JS]: CWE Final Certification
889
+ languages:
890
+ - generic
891
+ severity: WARNING
892
+ - id: runsec.domain-platform-hardening.cwe-400-py-resource
893
+ metadata:
894
+ runsec_version: v1.0
895
+ confidence: |-
896
+ 0.9
897
+ exploit_scenario: |-
898
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
899
+ fix_template: |-
900
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
901
+ pattern-either:
902
+ - pattern: |-
903
+ for item in items: f = open(path)
904
+ for row in stream(): sock = socket.socket()
905
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-400\\-PY\\-RESOURCE\\b'
906
+ message: |-
907
+ RunSec Detection [CWE-400-PY-RESOURCE]: CWE Compliance Final
908
+ languages:
909
+ - generic
910
+ severity: WARNING
911
+ - id: runsec.domain-platform-hardening.cwe-772-js-buffer
912
+ metadata:
913
+ runsec_version: v1.0
914
+ confidence: |-
915
+ 0.9
916
+ exploit_scenario: |-
917
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
918
+ fix_template: |-
919
+ Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
920
+ pattern-either:
921
+ - pattern: |-
922
+ const buf = Buffer.allocUnsafe(1024)
923
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-772\\-JS\\-BUFFER\\b'
924
+ message: |-
925
+ RunSec Detection [CWE-772-JS-BUFFER]: CWE Compliance Final
926
+ languages:
927
+ - generic
928
+ severity: WARNING
929
+ - id: runsec.domain-platform-hardening.cwe-174-py-canonical
930
+ metadata:
931
+ runsec_version: v1.0
932
+ confidence: |-
933
+ 0.9
934
+ exploit_scenario: |-
935
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
936
+ fix_template: |-
937
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
938
+ pattern-either:
939
+ - pattern: |-
940
+ p = p.replace("../","")
941
+ p = normalize(p)
942
+ open(base + "/" + p)
943
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-174\\-PY\\-CANONICAL\\b'
944
+ message: |-
945
+ RunSec Detection [CWE-174-PY-CANONICAL]: CWE Final Certification
946
+ languages:
947
+ - generic
948
+ severity: WARNING
949
+ - id: runsec.domain-platform-hardening.cwe-174-js-canonical
950
+ metadata:
951
+ runsec_version: v1.0
952
+ confidence: |-
953
+ 0.9
954
+ exploit_scenario: |-
955
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
956
+ fix_template: |-
957
+ Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
958
+ pattern-either:
959
+ - pattern: |-
960
+ value = value.replace("../","")
961
+ value = value.replace("//","/")
962
+ fs.readFile(base + "/" + value)
963
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-174\\-JS\\-CANONICAL\\b'
964
+ message: |-
965
+ RunSec Detection [CWE-174-JS-CANONICAL]: CWE Final Certification
966
+ languages:
967
+ - generic
968
+ severity: WARNING
969
+ - id: runsec.domain-platform-hardening.cwe-116-py-partial-escape
970
+ metadata:
971
+ runsec_version: v1.0
972
+ confidence: |-
973
+ 0.9
974
+ exploit_scenario: |-
975
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
976
+ fix_template: |-
977
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
978
+ pattern-either:
979
+ - pattern: |-
980
+ safe = html.replace("<","&lt;").replace(">","&gt;")
981
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-116\\-PY\\-PARTIAL\\-ESCAPE\\b'
982
+ message: |-
983
+ RunSec Detection [CWE-116-PY-PARTIAL-ESCAPE]: CWE Final Certification
984
+ languages:
985
+ - generic
986
+ severity: WARNING
987
+ - id: runsec.domain-platform-hardening.cwe-116-js-partial-escape
988
+ metadata:
989
+ runsec_version: v1.0
990
+ confidence: |-
991
+ 0.9
992
+ exploit_scenario: |-
993
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
994
+ fix_template: |-
995
+ Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
996
+ pattern-either:
997
+ - pattern: |-
998
+ safe = input.replace(/</g,"&lt;").replace(/>/g,"&gt;")
999
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-116\\-JS\\-PARTIAL\\-ESCAPE\\b'
1000
+ message: |-
1001
+ RunSec Detection [CWE-116-JS-PARTIAL-ESCAPE]: CWE Final Certification
1002
+ languages:
1003
+ - generic
1004
+ severity: WARNING
1005
+ - id: runsec.domain-platform-hardening.cwe-94-universal-no-sandbox-template
1006
+ metadata:
1007
+ runsec_version: v1.0
1008
+ confidence: |-
1009
+ 0.9
1010
+ exploit_scenario: |-
1011
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1012
+ fix_template: |-
1013
+ Для динамического рендеринга избегать исполнения шаблонного кода: использовать статические шаблоны из доверенного каталога и передавать только данные через контекст.
1014
+ pattern-either:
1015
+ - pattern: |-
1016
+ templateEngine.render(userTemplate, data) без sandbox policy
1017
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-94\\-UNIVERSAL\\-NO\\-SANDBOX\\-TEMPLATE\\b'
1018
+ message: |-
1019
+ RunSec Detection [CWE-94-UNIVERSAL-NO-SANDBOX-TEMPLATE]: CWE Final Certification
1020
+ languages:
1021
+ - generic
1022
+ severity: WARNING
1023
+ - id: runsec.domain-platform-hardening.cwe-20-universal-type-confusion
1024
+ metadata:
1025
+ runsec_version: v1.0
1026
+ confidence: |-
1027
+ 0.9
1028
+ exploit_scenario: |-
1029
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1030
+ fix_template: |-
1031
+ Для query-параметров всегда выполнять явное приведение к ожидаемому примитиву (string/number/boolean) и отклонять объекты/операторы.
1032
+ pattern-either:
1033
+ - pattern: |-
1034
+ find(req.body)
1035
+ where: req.query (объекты принимаются как есть)
1036
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-20\\-UNIVERSAL\\-TYPE\\-CONFUSION\\b'
1037
+ message: |-
1038
+ RunSec Detection [CWE-20-UNIVERSAL-TYPE-CONFUSION]: CWE Final Certification
1039
+ languages:
1040
+ - generic
1041
+ severity: WARNING
1042
+ - id: runsec.domain-platform-hardening.cwe-98-universal-file-infra-control
1043
+ metadata:
1044
+ runsec_version: v1.0
1045
+ confidence: |-
1046
+ 0.9
1047
+ exploit_scenario: |-
1048
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1049
+ fix_template: |-
1050
+ Не давать внешнему параметру напрямую выбирать файл/модуль; применять фиксированный маппинг ID -> Filename и deny-by-default для неизвестных значений.
1051
+ pattern-either:
1052
+ - pattern: |-
1053
+ module = req.query.name; load(module)
1054
+ template = request.GET["tpl"]; render(template)
1055
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-98\\-UNIVERSAL\\-FILE\\-INFRA\\-CONTROL\\b'
1056
+ message: |-
1057
+ RunSec Detection [CWE-98-UNIVERSAL-FILE-INFRA-CONTROL]: CWE Final Certification
1058
+ languages:
1059
+ - generic
1060
+ severity: WARNING
1061
+ - id: runsec.domain-platform-hardening.cwe-942-playwright-websec
1062
+ metadata:
1063
+ runsec_version: v1.0
1064
+ confidence: |-
1065
+ 0.9
1066
+ exploit_scenario: |-
1067
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1068
+ fix_template: |-
1069
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
1070
+ pattern-either:
1071
+ - pattern: |-
1072
+ chromium.launch(args=["--disable-web-security"])
1073
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-942\\-PLAYWRIGHT\\-WEBSEC\\b'
1074
+ message: |-
1075
+ RunSec Detection [CWE-942-PLAYWRIGHT-WEBSEC]: CWE Final Certification
1076
+ languages:
1077
+ - generic
1078
+ severity: WARNING
1079
+ - id: runsec.domain-platform-hardening.cwe-295-playwright-https
1080
+ metadata:
1081
+ runsec_version: v1.0
1082
+ confidence: |-
1083
+ 0.9
1084
+ exploit_scenario: |-
1085
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1086
+ fix_template: |-
1087
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
1088
+ pattern-either:
1089
+ - pattern: |-
1090
+ browser.new_context(ignoreHTTPSErrors=True)
1091
+ newContext({ ignoreHTTPSErrors: true })
1092
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-295\\-PLAYWRIGHT\\-HTTPS\\b'
1093
+ message: |-
1094
+ RunSec Detection [CWE-295-PLAYWRIGHT-HTTPS]: CWE Final Certification
1095
+ languages:
1096
+ - generic
1097
+ severity: WARNING
1098
+ - id: runsec.domain-platform-hardening.cwe-295-s3-minio-verify
1099
+ metadata:
1100
+ runsec_version: v1.0
1101
+ confidence: |-
1102
+ 0.9
1103
+ exploit_scenario: |-
1104
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1105
+ fix_template: |-
1106
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
1107
+ pattern-either:
1108
+ - pattern: |-
1109
+ boto3.client("s3", verify=False)
1110
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-295\\-S3\\-MINIO\\-VERIFY\\b'
1111
+ message: |-
1112
+ RunSec Detection [CWE-295-S3-MINIO-VERIFY]: CWE Final Certification
1113
+ languages:
1114
+ - generic
1115
+ severity: WARNING
1116
+ - id: runsec.domain-platform-hardening.cwe-942-s3-public-acl
1117
+ metadata:
1118
+ runsec_version: v1.0
1119
+ confidence: |-
1120
+ 0.9
1121
+ exploit_scenario: |-
1122
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1123
+ fix_template: |-
1124
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
1125
+ pattern-either:
1126
+ - pattern: |-
1127
+ put_object(..., ACL="public-read")
1128
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-942\\-S3\\-PUBLIC\\-ACL\\b'
1129
+ message: |-
1130
+ RunSec Detection [CWE-942-S3-PUBLIC-ACL]: CWE Final Certification
1131
+ languages:
1132
+ - generic
1133
+ severity: WARNING
1134
+ - id: runsec.domain-platform-hardening.cwe-400-gigaam-upload-limits
1135
+ metadata:
1136
+ runsec_version: v1.0
1137
+ confidence: |-
1138
+ 0.9
1139
+ exploit_scenario: |-
1140
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1141
+ fix_template: |-
1142
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
1143
+ pattern-either:
1144
+ - pattern: |-
1145
+ audio = request.files["audio"] без проверки размера
1146
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-400\\-GIGAAM\\-UPLOAD\\-LIMITS\\b'
1147
+ message: |-
1148
+ RunSec Detection [CWE-400-GIGAAM-UPLOAD-LIMITS]: CWE Final Certification
1149
+ languages:
1150
+ - generic
1151
+ severity: WARNING
1152
+ - id: runsec.domain-platform-hardening.cwe-400-gigaam-httpx-timeout
1153
+ metadata:
1154
+ runsec_version: v1.0
1155
+ confidence: |-
1156
+ 0.9
1157
+ exploit_scenario: |-
1158
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1159
+ fix_template: |-
1160
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
1161
+ pattern-either:
1162
+ - pattern: |-
1163
+ httpx.post(transcribe_url, files=...) без timeout
1164
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-400\\-GIGAAM\\-HTTPX\\-TIMEOUT\\b'
1165
+ message: |-
1166
+ RunSec Detection [CWE-400-GIGAAM-HTTPX-TIMEOUT]: CWE Final Certification
1167
+ languages:
1168
+ - generic
1169
+ severity: WARNING
1170
+ - id: runsec.domain-platform-hardening.cwe-94-electron-webprefs
1171
+ metadata:
1172
+ runsec_version: v1.0
1173
+ confidence: |-
1174
+ 0.9
1175
+ exploit_scenario: |-
1176
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1177
+ fix_template: |-
1178
+ Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
1179
+ pattern-either:
1180
+ - pattern: |-
1181
+ new BrowserWindow({ webPreferences: { nodeIntegration: true, contextIsolation: false }})
1182
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-94\\-ELECTRON\\-WEBPREFS\\b'
1183
+ message: |-
1184
+ RunSec Detection [CWE-94-ELECTRON-WEBPREFS]: CWE Final Certification
1185
+ languages:
1186
+ - generic
1187
+ severity: WARNING
1188
+ - id: runsec.domain-platform-hardening.cwe-250-electron-remote
1189
+ metadata:
1190
+ runsec_version: v1.0
1191
+ confidence: |-
1192
+ 0.9
1193
+ exploit_scenario: |-
1194
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1195
+ fix_template: |-
1196
+ Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
1197
+ pattern-either:
1198
+ - pattern: |-
1199
+ const { remote } = require("electron")
1200
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-250\\-ELECTRON\\-REMOTE\\b'
1201
+ message: |-
1202
+ RunSec Detection [CWE-250-ELECTRON-REMOTE]: CWE Final Certification
1203
+ languages:
1204
+ - generic
1205
+ severity: WARNING
1206
+ - id: runsec.domain-platform-hardening.cwe-94-node-exec-concat
1207
+ metadata:
1208
+ runsec_version: v1.0
1209
+ confidence: |-
1210
+ 0.9
1211
+ exploit_scenario: |-
1212
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1213
+ fix_template: |-
1214
+ Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
1215
+ pattern-either:
1216
+ - pattern: |-
1217
+ exec("cmd " + userInput)
1218
+ spawn("sh", ["-c", base + user])
1219
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-94\\-NODE\\-EXEC\\-CONCAT\\b'
1220
+ message: |-
1221
+ RunSec Detection [CWE-94-NODE-EXEC-CONCAT]: CWE Final Certification
1222
+ languages:
1223
+ - generic
1224
+ severity: WARNING
1225
+ - id: runsec.domain-platform-hardening.cwe-295-boto3-verify-false
1226
+ metadata:
1227
+ runsec_version: v1.0
1228
+ confidence: |-
1229
+ 0.9
1230
+ exploit_scenario: |-
1231
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1232
+ fix_template: |-
1233
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
1234
+ pattern-either:
1235
+ - pattern: |-
1236
+ boto3.client("s3", verify=False)
1237
+ session.client("s3", verify=False)
1238
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-295\\-BOTO3\\-VERIFY\\-FALSE\\b'
1239
+ message: |-
1240
+ RunSec Detection [CWE-295-BOTO3-VERIFY-FALSE]: CWE Final Certification
1241
+ languages:
1242
+ - generic
1243
+ severity: WARNING
1244
+ - id: runsec.domain-platform-hardening.cwe-284-boto3-public-acl
1245
+ metadata:
1246
+ runsec_version: v1.0
1247
+ confidence: |-
1248
+ 0.9
1249
+ exploit_scenario: |-
1250
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1251
+ fix_template: |-
1252
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
1253
+ pattern-either:
1254
+ - pattern: |-
1255
+ create_bucket(..., ACL="public-read")
1256
+ put_bucket_acl(ACL="public-read-write")
1257
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-284\\-BOTO3\\-PUBLIC\\-ACL\\b'
1258
+ message: |-
1259
+ RunSec Detection [CWE-284-BOTO3-PUBLIC-ACL]: CWE Final Certification
1260
+ languages:
1261
+ - generic
1262
+ severity: WARNING
1263
+ - id: runsec.domain-platform-hardening.cwe-295-boto3-presigned-ttl
1264
+ metadata:
1265
+ runsec_version: v1.0
1266
+ confidence: |-
1267
+ 0.9
1268
+ exploit_scenario: |-
1269
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1270
+ fix_template: |-
1271
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
1272
+ pattern-either:
1273
+ - pattern: |-
1274
+ generate_presigned_url(..., ExpiresIn=86400)
1275
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-295\\-BOTO3\\-PRESIGNED\\-TTL\\b'
1276
+ message: |-
1277
+ RunSec Detection [CWE-295-BOTO3-PRESIGNED-TTL]: CWE Final Certification
1278
+ languages:
1279
+ - generic
1280
+ severity: WARNING
1281
+ - id: runsec.domain-platform-hardening.cwe-114-csh-process-start-relative
1282
+ metadata:
1283
+ runsec_version: v1.0
1284
+ confidence: |-
1285
+ 0.9
1286
+ exploit_scenario: |-
1287
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1288
+ fix_template: |-
1289
+ Use using/try-finally and safe .NET APIs; enforce strict allowlists for untrusted input.
1290
+ pattern-either:
1291
+ - pattern: |-
1292
+ Process.Start("app.exe")
1293
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-114\\-CSH\\-PROCESS\\-START\\-RELATIVE\\b'
1294
+ message: |-
1295
+ RunSec Detection [CWE-114-CSH-PROCESS-START-RELATIVE]: CWE Final Certification
1296
+ languages:
1297
+ - generic
1298
+ severity: WARNING
1299
+ - id: runsec.domain-platform-hardening.cwe-497-csh-sensitive-log
1300
+ metadata:
1301
+ runsec_version: v1.0
1302
+ confidence: |-
1303
+ 0.9
1304
+ exploit_scenario: |-
1305
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1306
+ fix_template: |-
1307
+ Use using/try-finally and safe .NET APIs; enforce strict allowlists for untrusted input.
1308
+ pattern-either:
1309
+ - pattern: |-
1310
+ logger.Info(Environment.GetEnvironmentVariables())
1311
+ logger.Error(ex.ToString()) в публичные логи
1312
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-497\\-CSH\\-SENSITIVE\\-LOG\\b'
1313
+ message: |-
1314
+ RunSec Detection [CWE-497-CSH-SENSITIVE-LOG]: CWE Final Certification
1315
+ languages:
1316
+ - generic
1317
+ severity: WARNING
1318
+ - id: runsec.domain-platform-hardening.cwe-606-csh-untrusted-loop-bound
1319
+ metadata:
1320
+ runsec_version: v1.0
1321
+ confidence: |-
1322
+ 0.9
1323
+ exploit_scenario: |-
1324
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1325
+ fix_template: |-
1326
+ Use using/try-finally and safe .NET APIs; enforce strict allowlists for untrusted input.
1327
+ pattern-either:
1328
+ - pattern: |-
1329
+ for (int i=0; i<userCount; i++) в unsafe блоке
1330
+ while (n-- > 0) Marshal.Copy(...)
1331
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-606\\-CSH\\-UNTRUSTED\\-LOOP\\-BOUND\\b'
1332
+ message: |-
1333
+ RunSec Detection [CWE-606-CSH-UNTRUSTED-LOOP-BOUND]: CWE Final Certification
1334
+ languages:
1335
+ - generic
1336
+ severity: WARNING
1337
+ - id: runsec.domain-platform-hardening.cwe-114-csh-dll-search-order
1338
+ metadata:
1339
+ runsec_version: v1.0
1340
+ confidence: |-
1341
+ 0.9
1342
+ exploit_scenario: |-
1343
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1344
+ fix_template: |-
1345
+ Use using/try-finally and safe .NET APIs; enforce strict allowlists for untrusted input.
1346
+ pattern-either:
1347
+ - pattern: |-
1348
+ ThisAddIn_Startup без вызова hardening API
1349
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-114\\-CSH\\-DLL\\-SEARCH\\-ORDER\\b'
1350
+ message: |-
1351
+ RunSec Detection [CWE-114-CSH-DLL-SEARCH-ORDER]: CWE Final Certification
1352
+ languages:
1353
+ - generic
1354
+ severity: WARNING
1355
+ - id: runsec.domain-platform-hardening.cwe-362-csh-static-async-race
1356
+ metadata:
1357
+ runsec_version: v1.0
1358
+ confidence: |-
1359
+ 0.9
1360
+ exploit_scenario: |-
1361
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1362
+ fix_template: |-
1363
+ Use using/try-finally and safe .NET APIs; enforce strict allowlists for untrusted input.
1364
+ pattern-either:
1365
+ - pattern: |-
1366
+ static int counter;
1367
+ counter++ в async методе/обработчике
1368
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-362\\-CSH\\-STATIC\\-ASYNC\\-RACE\\b'
1369
+ message: |-
1370
+ RunSec Detection [CWE-362-CSH-STATIC-ASYNC-RACE]: CWE Final Certification
1371
+ languages:
1372
+ - generic
1373
+ severity: WARNING
1374
+ - id: runsec.domain-platform-hardening.cwe-583-csh-metadata-acl-trust
1375
+ metadata:
1376
+ runsec_version: v1.0
1377
+ confidence: |-
1378
+ 0.9
1379
+ exploit_scenario: |-
1380
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1381
+ fix_template: |-
1382
+ Use using/try-finally and safe .NET APIs; enforce strict allowlists for untrusted input.
1383
+ pattern-either:
1384
+ - pattern: |-
1385
+ if (doc.BuiltInDocumentProperties["Category"] == "Admin") ...
1386
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-583\\-CSH\\-METADATA\\-ACL\\-TRUST\\b'
1387
+ message: |-
1388
+ RunSec Detection [CWE-583-CSH-METADATA-ACL-TRUST]: CWE Final Certification
1389
+ languages:
1390
+ - generic
1391
+ severity: WARNING
1392
+ - id: runsec.domain-platform-hardening.cwe-912-csh-anti-debug-auth
1393
+ metadata:
1394
+ runsec_version: v1.0
1395
+ confidence: |-
1396
+ 0.9
1397
+ exploit_scenario: |-
1398
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1399
+ fix_template: |-
1400
+ Use using/try-finally and safe .NET APIs; enforce strict allowlists for untrusted input.
1401
+ pattern-either:
1402
+ - pattern: |-
1403
+ if (Debugger.IsAttached) bypassAuth = true
1404
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-912\\-CSH\\-ANTI\\-DEBUG\\-AUTH\\b'
1405
+ message: |-
1406
+ RunSec Detection [CWE-912-CSH-ANTI-DEBUG-AUTH]: CWE Final Certification
1407
+ languages:
1408
+ - generic
1409
+ severity: WARNING
1410
+ - id: runsec.domain-platform-hardening.cwe-749-csh-singleton-public-hooks
1411
+ metadata:
1412
+ runsec_version: v1.0
1413
+ confidence: |-
1414
+ 0.9
1415
+ exploit_scenario: |-
1416
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1417
+ fix_template: |-
1418
+ Use using/try-finally and safe .NET APIs; enforce strict allowlists for untrusted input.
1419
+ pattern-either:
1420
+ - pattern: |-
1421
+ public event Action OnBypass; в singleton
1422
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-749\\-CSH\\-SINGLETON\\-PUBLIC\\-HOOKS\\b'
1423
+ message: |-
1424
+ RunSec Detection [CWE-749-CSH-SINGLETON-PUBLIC-HOOKS]: CWE Final Certification
1425
+ languages:
1426
+ - generic
1427
+ severity: WARNING
1428
+ - id: runsec.domain-platform-hardening.plt-001
1429
+ metadata:
1430
+ runsec_version: v1.0
1431
+ confidence: |-
1432
+ 0.9
1433
+ exploit_scenario: |-
1434
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1435
+ fix_template: |-
1436
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
1437
+ pattern-either:
1438
+ - pattern: |-
1439
+ open("/tmp/report-" + user_id + ".txt", "w")
1440
+ - pattern-regex: 'Vulnerable:\\s*PLT\\-001\\b'
1441
+ message: |-
1442
+ RunSec Detection [PLT-001]: CWE-379
1443
+ languages:
1444
+ - generic
1445
+ severity: WARNING
1446
+ - id: runsec.domain-platform-hardening.plt-002
1447
+ metadata:
1448
+ runsec_version: v1.0
1449
+ confidence: |-
1450
+ 0.9
1451
+ exploit_scenario: |-
1452
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1453
+ fix_template: |-
1454
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
1455
+ pattern-either:
1456
+ - pattern: |-
1457
+ ptr = libc.malloc(n); ptr = libc.malloc(n);
1458
+ - pattern-regex: 'Vulnerable:\\s*PLT\\-002\\b'
1459
+ message: |-
1460
+ RunSec Detection [PLT-002]: CWE-401
1461
+ languages:
1462
+ - generic
1463
+ severity: WARNING
1464
+ - id: runsec.domain-platform-hardening.plt-003
1465
+ metadata:
1466
+ runsec_version: v1.0
1467
+ confidence: |-
1468
+ 0.9
1469
+ exploit_scenario: |-
1470
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1471
+ fix_template: |-
1472
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
1473
+ pattern-either:
1474
+ - pattern: |-
1475
+ free(p); free(p);
1476
+ - pattern-regex: 'Vulnerable:\\s*PLT\\-003\\b'
1477
+ message: |-
1478
+ RunSec Detection [PLT-003]: CWE-415
1479
+ languages:
1480
+ - generic
1481
+ severity: WARNING
1482
+ - id: runsec.domain-platform-hardening.plt-004
1483
+ metadata:
1484
+ runsec_version: v1.0
1485
+ confidence: |-
1486
+ 0.9
1487
+ exploit_scenario: |-
1488
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1489
+ fix_template: |-
1490
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
1491
+ pattern-either:
1492
+ - pattern: |-
1493
+ cb = lambda: use(ptr); schedule(cb); free(ptr)
1494
+ - pattern-regex: 'Vulnerable:\\s*PLT\\-004\\b'
1495
+ message: |-
1496
+ RunSec Detection [PLT-004]: CWE-416
1497
+ languages:
1498
+ - generic
1499
+ severity: WARNING
1500
+ - id: runsec.domain-platform-hardening.plt-005
1501
+ metadata:
1502
+ runsec_version: v1.0
1503
+ confidence: |-
1504
+ 0.9
1505
+ exploit_scenario: |-
1506
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1507
+ fix_template: |-
1508
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
1509
+ pattern-either:
1510
+ - pattern: |-
1511
+ SecurityContext.Admin = plugin.GetSingleton()
1512
+ - pattern-regex: 'Vulnerable:\\s*PLT\\-005\\b'
1513
+ message: |-
1514
+ RunSec Detection [PLT-005]: CWE-668
1515
+ languages:
1516
+ - generic
1517
+ severity: WARNING
1518
+ - id: runsec.domain-platform-hardening.plt-006
1519
+ metadata:
1520
+ runsec_version: v1.0
1521
+ confidence: |-
1522
+ 0.9
1523
+ exploit_scenario: |-
1524
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1525
+ fix_template: |-
1526
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
1527
+ pattern-either:
1528
+ - pattern: |-
1529
+ fd = os.open(path, os.O_RDWR); assert os.access(path, os.W_OK)
1530
+ - pattern-regex: 'Vulnerable:\\s*PLT\\-006\\b'
1531
+ message: |-
1532
+ RunSec Detection [PLT-006]: CWE-403
1533
+ languages:
1534
+ - generic
1535
+ severity: WARNING
1536
+ - id: runsec.domain-platform-hardening.plt-007
1537
+ metadata:
1538
+ runsec_version: v1.0
1539
+ confidence: |-
1540
+ 0.9
1541
+ exploit_scenario: |-
1542
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1543
+ fix_template: |-
1544
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
1545
+ pattern-either:
1546
+ - pattern: |-
1547
+ while True: chunk += sock.recv(1024*1024) без лимита размера
1548
+ - pattern-regex: 'Vulnerable:\\s*PLT\\-007\\b'
1549
+ message: |-
1550
+ RunSec Detection [PLT-007]: CWE-405
1551
+ languages:
1552
+ - generic
1553
+ severity: WARNING
1554
+ - id: runsec.domain-platform-hardening.plt-008
1555
+ metadata:
1556
+ runsec_version: v1.0
1557
+ confidence: |-
1558
+ 0.9
1559
+ exploit_scenario: |-
1560
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1561
+ fix_template: |-
1562
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
1563
+ pattern-either:
1564
+ - pattern: |-
1565
+ if int(user_role) == 1: где user_role="1abc"
1566
+ - pattern-regex: 'Vulnerable:\\s*PLT\\-008\\b'
1567
+ message: |-
1568
+ RunSec Detection [PLT-008]: CWE-704
1569
+ languages:
1570
+ - generic
1571
+ severity: WARNING
1572
+ - id: runsec.domain-platform-hardening.plt-009
1573
+ metadata:
1574
+ runsec_version: v1.0
1575
+ confidence: |-
1576
+ 0.9
1577
+ exploit_scenario: |-
1578
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1579
+ fix_template: |-
1580
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
1581
+ pattern-either:
1582
+ - pattern: |-
1583
+ struct.unpack_from(fmt, blob, user_offset) без проверки границ
1584
+ - pattern-regex: 'Vulnerable:\\s*PLT\\-009\\b'
1585
+ message: |-
1586
+ RunSec Detection [PLT-009]: CWE-125
1587
+ languages:
1588
+ - generic
1589
+ severity: WARNING
1590
+ - id: runsec.domain-platform-hardening.plt-010
1591
+ metadata:
1592
+ runsec_version: v1.0
1593
+ confidence: |-
1594
+ 0.9
1595
+ exploit_scenario: |-
1596
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1597
+ fix_template: |-
1598
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
1599
+ pattern-either:
1600
+ - pattern: |-
1601
+ if verify_sig(blob) == False: pass
1602
+ - pattern-regex: 'Vulnerable:\\s*PLT\\-010\\b'
1603
+ message: |-
1604
+ RunSec Detection [PLT-010]: CWE-390
1605
+ languages:
1606
+ - generic
1607
+ severity: WARNING
1608
+ - id: runsec.domain-platform-hardening.plt-011
1609
+ metadata:
1610
+ runsec_version: v1.0
1611
+ confidence: |-
1612
+ 0.9
1613
+ exploit_scenario: |-
1614
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1615
+ fix_template: |-
1616
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
1617
+ pattern-either:
1618
+ - pattern: |-
1619
+ if user: ... else: raise "unknown user" timing
1620
+ - pattern-regex: 'Vulnerable:\\s*PLT\\-011\\b'
1621
+ message: |-
1622
+ RunSec Detection [PLT-011]: CWE-203
1623
+ languages:
1624
+ - generic
1625
+ severity: WARNING
1626
+ - id: runsec.domain-platform-hardening.plt-012
1627
+ metadata:
1628
+ runsec_version: v1.0
1629
+ confidence: |-
1630
+ 0.9
1631
+ exploit_scenario: |-
1632
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1633
+ fix_template: |-
1634
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
1635
+ pattern-either:
1636
+ - pattern: |-
1637
+ items = [None] * (count * row_size) без проверки произведения
1638
+ - pattern-regex: 'Vulnerable:\\s*PLT\\-012\\b'
1639
+ message: |-
1640
+ RunSec Detection [PLT-012]: CWE-189
1641
+ languages:
1642
+ - generic
1643
+ severity: WARNING
1644
+ - id: runsec.domain-platform-hardening.plt-013
1645
+ metadata:
1646
+ runsec_version: v1.0
1647
+ confidence: |-
1648
+ 0.9
1649
+ exploit_scenario: |-
1650
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1651
+ fix_template: |-
1652
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
1653
+ pattern-either:
1654
+ - pattern: |-
1655
+ subprocess.call("tools\\migrate " + arg, shell=True)
1656
+ - pattern-regex: 'Vulnerable:\\s*PLT\\-013\\b'
1657
+ message: |-
1658
+ RunSec Detection [PLT-013]: CWE-428
1659
+ languages:
1660
+ - generic
1661
+ severity: WARNING
1662
+ - id: runsec.domain-platform-hardening.plt-014
1663
+ metadata:
1664
+ runsec_version: v1.0
1665
+ confidence: |-
1666
+ 0.9
1667
+ exploit_scenario: |-
1668
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1669
+ fix_template: |-
1670
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
1671
+ pattern-either:
1672
+ - pattern: |-
1673
+ if p: use(p); use(p) где p обнулён между вызовами
1674
+ - pattern-regex: 'Vulnerable:\\s*PLT\\-014\\b'
1675
+ message: |-
1676
+ RunSec Detection [PLT-014]: CWE-476
1677
+ languages:
1678
+ - generic
1679
+ severity: WARNING
1680
+ - id: runsec.domain-platform-hardening.plt-015
1681
+ metadata:
1682
+ runsec_version: v1.0
1683
+ confidence: |-
1684
+ 0.9
1685
+ exploit_scenario: |-
1686
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1687
+ fix_template: |-
1688
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
1689
+ pattern-either:
1690
+ - pattern: |-
1691
+ if secret == token: для byte buffers
1692
+ - pattern-regex: 'Vulnerable:\\s*PLT\\-015\\b'
1693
+ message: |-
1694
+ RunSec Detection [PLT-015]: CWE-581
1695
+ languages:
1696
+ - generic
1697
+ severity: WARNING
1698
+ - id: runsec.domain-platform-hardening.plt-016
1699
+ metadata:
1700
+ runsec_version: v1.0
1701
+ confidence: |-
1702
+ 0.9
1703
+ exploit_scenario: |-
1704
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1705
+ fix_template: |-
1706
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
1707
+ pattern-either:
1708
+ - pattern: |-
1709
+ open("app.conf","w").write(secrets) без chmod
1710
+ - pattern-regex: 'Vulnerable:\\s*PLT\\-016\\b'
1711
+ message: |-
1712
+ RunSec Detection [PLT-016]: CWE-276
1713
+ languages:
1714
+ - generic
1715
+ severity: WARNING