@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,1023 @@
1
+ rules:
2
+ - id: runsec.domain-access-management.py-100
3
+ metadata:
4
+ runsec_version: v1.0
5
+ confidence: |-
6
+ 0.9
7
+ exploit_scenario: |-
8
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
9
+ fix_template: |-
10
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
11
+ pattern-either:
12
+ - pattern: |-
13
+ if token == os.getenv("CHAT_TOKEN")
14
+ - pattern-regex: 'Vulnerable:\\s*PY\\-100\\b'
15
+ message: |-
16
+ RunSec Detection [PY-100]: Access Control SAR
17
+ languages:
18
+ - generic
19
+ severity: WARNING
20
+ - id: runsec.domain-access-management.py-105
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
+ return Message.objects.all()
32
+ - pattern-regex: 'Vulnerable:\\s*PY\\-105\\b'
33
+ message: |-
34
+ RunSec Detection [PY-105]: Access Control SAR
35
+ languages:
36
+ - generic
37
+ severity: WARNING
38
+ - id: runsec.domain-access-management.njs-009
39
+ metadata:
40
+ runsec_version: v1.0
41
+ confidence: |-
42
+ 0.9
43
+ exploit_scenario: |-
44
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
45
+ fix_template: |-
46
+ Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
47
+ pattern-either:
48
+ - pattern: |-
49
+ jwt.verify(token, secret)
50
+ - pattern-regex: 'Vulnerable:\\s*NJS\\-009\\b'
51
+ message: |-
52
+ RunSec Detection [NJS-009]: JWT Governance
53
+ languages:
54
+ - generic
55
+ severity: WARNING
56
+ - id: runsec.domain-access-management.njs-016
57
+ metadata:
58
+ runsec_version: v1.0
59
+ confidence: |-
60
+ 0.9
61
+ exploit_scenario: |-
62
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
63
+ fix_template: |-
64
+ Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
65
+ pattern-either:
66
+ - pattern: |-
67
+ repo.findById(req.params.id)
68
+ - pattern-regex: 'Vulnerable:\\s*NJS\\-016\\b'
69
+ message: |-
70
+ RunSec Detection [NJS-016]: OWASP API1
71
+ languages:
72
+ - generic
73
+ severity: WARNING
74
+ - id: runsec.domain-access-management.njs-024
75
+ metadata:
76
+ runsec_version: v1.0
77
+ confidence: |-
78
+ 0.9
79
+ exploit_scenario: |-
80
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
81
+ fix_template: |-
82
+ Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
83
+ pattern-either:
84
+ - pattern: |-
85
+ res.cookie("sid", sid)
86
+ - pattern-regex: 'Vulnerable:\\s*NJS\\-024\\b'
87
+ message: |-
88
+ RunSec Detection [NJS-024]: Session Hardening
89
+ languages:
90
+ - generic
91
+ severity: WARNING
92
+ - id: runsec.domain-access-management.njs-026
93
+ metadata:
94
+ runsec_version: v1.0
95
+ confidence: |-
96
+ 0.9
97
+ exploit_scenario: |-
98
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
99
+ fix_template: |-
100
+ Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
101
+ pattern-either:
102
+ - pattern: |-
103
+ User.create(req.body)
104
+ - pattern-regex: 'Vulnerable:\\s*NJS\\-026\\b'
105
+ message: |-
106
+ RunSec Detection [NJS-026]: OWASP Mass Assignment
107
+ languages:
108
+ - generic
109
+ severity: WARNING
110
+ - id: runsec.domain-access-management.py-011
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
+ decode(token, key) without allowlist
122
+ - pattern-regex: 'Vulnerable:\\s*PY\\-011\\b'
123
+ message: |-
124
+ RunSec Detection [PY-011]: Auth Baseline
125
+ languages:
126
+ - generic
127
+ severity: WARNING
128
+ - id: runsec.domain-access-management.py-013
129
+ metadata:
130
+ runsec_version: v1.0
131
+ confidence: |-
132
+ 0.9
133
+ exploit_scenario: |-
134
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
135
+ fix_template: |-
136
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
137
+ pattern-either:
138
+ - pattern: |-
139
+ Model(**request.json())
140
+ - pattern-regex: 'Vulnerable:\\s*PY\\-013\\b'
141
+ message: |-
142
+ RunSec Detection [PY-013]: AuthZ Baseline
143
+ languages:
144
+ - generic
145
+ severity: WARNING
146
+ - id: runsec.domain-access-management.fts-018
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
+ display:none вместо server-side ACL
158
+ - pattern-regex: 'Vulnerable:\\s*FTS\\-018\\b'
159
+ message: |-
160
+ RunSec Detection [FTS-018]: Client Auth Safety
161
+ languages:
162
+ - generic
163
+ severity: WARNING
164
+ - id: runsec.domain-access-management.fts-019
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
+ role == "admin"
176
+ - pattern-regex: 'Vulnerable:\\s*FTS\\-019\\b'
177
+ message: |-
178
+ RunSec Detection [FTS-019]: JS Auth Safety
179
+ languages:
180
+ - generic
181
+ severity: WARNING
182
+ - id: runsec.domain-access-management.app-100
183
+ metadata:
184
+ runsec_version: v1.0
185
+ confidence: |-
186
+ 0.9
187
+ exploit_scenario: |-
188
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
189
+ fix_template: |-
190
+ Вводить idempotency-key и single-flight для token issue.
191
+ pattern-either:
192
+ - pattern: |-
193
+ Повторная выдача токена на один challenge
194
+ - pattern-regex: 'Vulnerable:\\s*APP\\-100\\b'
195
+ message: |-
196
+ RunSec Detection [APP-100]: Architecture Risks
197
+ languages:
198
+ - generic
199
+ severity: WARNING
200
+ - id: runsec.domain-access-management.app-101
201
+ metadata:
202
+ runsec_version: v1.0
203
+ confidence: |-
204
+ 0.9
205
+ exploit_scenario: |-
206
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
207
+ fix_template: |-
208
+ Обязательный timeout + retry budget + circuit breaker.
209
+ pattern-either:
210
+ - pattern: |-
211
+ HTTP-клиент без timeout
212
+ - pattern-regex: 'Vulnerable:\\s*APP\\-101\\b'
213
+ message: |-
214
+ RunSec Detection [APP-101]: Architecture Risks
215
+ languages:
216
+ - generic
217
+ severity: WARNING
218
+ - id: runsec.domain-access-management.app-102
219
+ metadata:
220
+ runsec_version: v1.0
221
+ confidence: |-
222
+ 0.9
223
+ exploit_scenario: |-
224
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
225
+ fix_template: |-
226
+ Fail-closed при ошибке внешнего IdP.
227
+ pattern-either:
228
+ - pattern: |-
229
+ except: allow()
230
+ - pattern-regex: 'Vulnerable:\\s*APP\\-102\\b'
231
+ message: |-
232
+ RunSec Detection [APP-102]: Architecture Risks
233
+ languages:
234
+ - generic
235
+ severity: WARNING
236
+ - id: runsec.domain-access-management.app-103
237
+ metadata:
238
+ runsec_version: v1.0
239
+ confidence: |-
240
+ 0.9
241
+ exploit_scenario: |-
242
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
243
+ fix_template: |-
244
+ Привязка токена к nonce/device/session fingerprint.
245
+ pattern-either:
246
+ - pattern: |-
247
+ Токен не связан с устройством/контекстом
248
+ - pattern-regex: 'Vulnerable:\\s*APP\\-103\\b'
249
+ message: |-
250
+ RunSec Detection [APP-103]: Architecture Risks
251
+ languages:
252
+ - generic
253
+ severity: WARNING
254
+ - id: runsec.domain-access-management.app-104
255
+ metadata:
256
+ runsec_version: v1.0
257
+ confidence: |-
258
+ 0.9
259
+ exploit_scenario: |-
260
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
261
+ fix_template: |-
262
+ Обязательный MFA gate для high-risk операций.
263
+ pattern-either:
264
+ - pattern: |-
265
+ Step-up не проверяется
266
+ - pattern-regex: 'Vulnerable:\\s*APP\\-104\\b'
267
+ message: |-
268
+ RunSec Detection [APP-104]: Architecture Risks
269
+ languages:
270
+ - generic
271
+ severity: WARNING
272
+ - id: runsec.domain-access-management.app-105
273
+ metadata:
274
+ runsec_version: v1.0
275
+ confidence: |-
276
+ 0.9
277
+ exploit_scenario: |-
278
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
279
+ fix_template: |-
280
+ Re-auth/step-up перед привилегированными операциями.
281
+ pattern-either:
282
+ - pattern: |-
283
+ Долгая сессия без повторной верификации
284
+ - pattern-regex: 'Vulnerable:\\s*APP\\-105\\b'
285
+ message: |-
286
+ RunSec Detection [APP-105]: Architecture Risks
287
+ languages:
288
+ - generic
289
+ severity: WARNING
290
+ - id: runsec.domain-access-management.app-106
291
+ metadata:
292
+ runsec_version: v1.0
293
+ confidence: |-
294
+ 0.9
295
+ exploit_scenario: |-
296
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
297
+ fix_template: |-
298
+ Явный least-privilege allowlist ролей.
299
+ pattern-either:
300
+ - pattern: |-
301
+ role in ["*"]
302
+ - pattern-regex: 'Vulnerable:\\s*APP\\-106\\b'
303
+ message: |-
304
+ RunSec Detection [APP-106]: Architecture Risks
305
+ languages:
306
+ - generic
307
+ severity: WARNING
308
+ - id: runsec.domain-access-management.app-107
309
+ metadata:
310
+ runsec_version: v1.0
311
+ confidence: |-
312
+ 0.9
313
+ exploit_scenario: |-
314
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
315
+ fix_template: |-
316
+ Scope-bound short-lived tokens per service.
317
+ pattern-either:
318
+ - pattern: |-
319
+ Один service-token для разных сервисов
320
+ - pattern-regex: 'Vulnerable:\\s*APP\\-107\\b'
321
+ message: |-
322
+ RunSec Detection [APP-107]: Architecture Risks
323
+ languages:
324
+ - generic
325
+ severity: WARNING
326
+ - id: runsec.domain-access-management.app-108
327
+ metadata:
328
+ runsec_version: v1.0
329
+ confidence: |-
330
+ 0.9
331
+ exploit_scenario: |-
332
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
333
+ fix_template: |-
334
+ Central revocation + backchannel logout.
335
+ pattern-either:
336
+ - pattern: |-
337
+ Logout не инвалидирует downstream-сессии
338
+ - pattern-regex: 'Vulnerable:\\s*APP\\-108\\b'
339
+ message: |-
340
+ RunSec Detection [APP-108]: Architecture Risks
341
+ languages:
342
+ - generic
343
+ severity: WARNING
344
+ - id: runsec.domain-access-management.app-109
345
+ metadata:
346
+ runsec_version: v1.0
347
+ confidence: |-
348
+ 0.9
349
+ exploit_scenario: |-
350
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
351
+ fix_template: |-
352
+ Использовать POST/PUT/PATCH + CSRF guards.
353
+ pattern-either:
354
+ - pattern: |-
355
+ Изменение состояния через GET endpoint
356
+ - pattern-regex: 'Vulnerable:\\s*APP\\-109\\b'
357
+ message: |-
358
+ RunSec Detection [APP-109]: Architecture Risks
359
+ languages:
360
+ - generic
361
+ severity: WARNING
362
+ - id: runsec.domain-access-management.app-110
363
+ metadata:
364
+ runsec_version: v1.0
365
+ confidence: |-
366
+ 0.9
367
+ exploit_scenario: |-
368
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
369
+ fix_template: |-
370
+ Проверять subject/scope до исполнения job.
371
+ pattern-either:
372
+ - pattern: |-
373
+ Worker выполняет команду без ACL
374
+ - pattern-regex: 'Vulnerable:\\s*APP\\-110\\b'
375
+ message: |-
376
+ RunSec Detection [APP-110]: Architecture Risks
377
+ languages:
378
+ - generic
379
+ severity: WARNING
380
+ - id: runsec.domain-access-management.app-111
381
+ metadata:
382
+ runsec_version: v1.0
383
+ confidence: |-
384
+ 0.9
385
+ exploit_scenario: |-
386
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
387
+ fix_template: |-
388
+ Ротация по SLA + автоотзыв компрометированных ключей.
389
+ pattern-either:
390
+ - pattern: |-
391
+ Неограниченный lifetime ключей
392
+ - pattern-regex: 'Vulnerable:\\s*APP\\-111\\b'
393
+ message: |-
394
+ RunSec Detection [APP-111]: Architecture Risks
395
+ languages:
396
+ - generic
397
+ severity: WARNING
398
+ - id: runsec.domain-access-management.app-112
399
+ metadata:
400
+ runsec_version: v1.0
401
+ confidence: |-
402
+ 0.9
403
+ exploit_scenario: |-
404
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
405
+ fix_template: |-
406
+ Rate-limit + progressive delay + lockout.
407
+ pattern-either:
408
+ - pattern: |-
409
+ Бесконечные попытки входа
410
+ - pattern-regex: 'Vulnerable:\\s*APP\\-112\\b'
411
+ message: |-
412
+ RunSec Detection [APP-112]: Architecture Risks
413
+ languages:
414
+ - generic
415
+ severity: WARNING
416
+ - id: runsec.domain-access-management.app-113
417
+ metadata:
418
+ runsec_version: v1.0
419
+ confidence: |-
420
+ 0.9
421
+ exploit_scenario: |-
422
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
423
+ fix_template: |-
424
+ Включать tenant claim + enforce в policy layer.
425
+ pattern-either:
426
+ - pattern: |-
427
+ token не содержит tenant context
428
+ - pattern-regex: 'Vulnerable:\\s*APP\\-113\\b'
429
+ message: |-
430
+ RunSec Detection [APP-113]: Architecture Risks
431
+ languages:
432
+ - generic
433
+ severity: WARNING
434
+ - id: runsec.domain-access-management.app-114
435
+ metadata:
436
+ runsec_version: v1.0
437
+ confidence: |-
438
+ 0.9
439
+ exploit_scenario: |-
440
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
441
+ fix_template: |-
442
+ Централизованный security audit log.
443
+ pattern-either:
444
+ - pattern: |-
445
+ Нет событий login/privilege escalation
446
+ - pattern-regex: 'Vulnerable:\\s*APP\\-114\\b'
447
+ message: |-
448
+ RunSec Detection [APP-114]: Architecture Risks
449
+ languages:
450
+ - generic
451
+ severity: WARNING
452
+ - id: runsec.domain-access-management.app-115
453
+ metadata:
454
+ runsec_version: v1.0
455
+ confidence: |-
456
+ 0.9
457
+ exploit_scenario: |-
458
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
459
+ fix_template: |-
460
+ Signed delegation token + bounded TTL + audit.
461
+ pattern-either:
462
+ - pattern: |-
463
+ Админ-имперсонация без traceability
464
+ - pattern-regex: 'Vulnerable:\\s*APP\\-115\\b'
465
+ message: |-
466
+ RunSec Detection [APP-115]: Architecture Risks
467
+ languages:
468
+ - generic
469
+ severity: WARNING
470
+ - id: runsec.domain-access-management.app-116
471
+ metadata:
472
+ runsec_version: v1.0
473
+ confidence: |-
474
+ 0.9
475
+ exploit_scenario: |-
476
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
477
+ fix_template: |-
478
+ Явная обработка ошибок + forced re-auth.
479
+ pattern-either:
480
+ - pattern: |-
481
+ Ошибки refresh маскируются
482
+ - pattern-regex: 'Vulnerable:\\s*APP\\-116\\b'
483
+ message: |-
484
+ RunSec Detection [APP-116]: Architecture Risks
485
+ languages:
486
+ - generic
487
+ severity: WARNING
488
+ - id: runsec.domain-access-management.app-117
489
+ metadata:
490
+ runsec_version: v1.0
491
+ confidence: |-
492
+ 0.9
493
+ exploit_scenario: |-
494
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
495
+ fix_template: |-
496
+ Risk-based controls, captcha/behavioral checks.
497
+ pattern-either:
498
+ - pattern: |-
499
+ Нет device/risk checks
500
+ - pattern-regex: 'Vulnerable:\\s*APP\\-117\\b'
501
+ message: |-
502
+ RunSec Detection [APP-117]: Architecture Risks
503
+ languages:
504
+ - generic
505
+ severity: WARNING
506
+ - id: runsec.domain-access-management.app-118
507
+ metadata:
508
+ runsec_version: v1.0
509
+ confidence: |-
510
+ 0.9
511
+ exploit_scenario: |-
512
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
513
+ fix_template: |-
514
+ Явный consent prompt + least-scope default.
515
+ pattern-either:
516
+ - pattern: |-
517
+ Делегированные scope без подтверждения
518
+ - pattern-regex: 'Vulnerable:\\s*APP\\-118\\b'
519
+ message: |-
520
+ RunSec Detection [APP-118]: Architecture Risks
521
+ languages:
522
+ - generic
523
+ severity: WARNING
524
+ - id: runsec.domain-access-management.app-119
525
+ metadata:
526
+ runsec_version: v1.0
527
+ confidence: |-
528
+ 0.9
529
+ exploit_scenario: |-
530
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
531
+ fix_template: |-
532
+ Cache key по subject+scope+tenant+ttl.
533
+ pattern-either:
534
+ - pattern: |-
535
+ Кэш auth-решений без key scoping
536
+ - pattern-regex: 'Vulnerable:\\s*APP\\-119\\b'
537
+ message: |-
538
+ RunSec Detection [APP-119]: Architecture Risks
539
+ languages:
540
+ - generic
541
+ severity: WARNING
542
+ - id: runsec.domain-access-management.py-010
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
+ random.random() for token
554
+ - pattern-regex: 'Vulnerable:\\s*PY\\-010\\b'
555
+ message: |-
556
+ RunSec Detection [PY-010]: Python secrets guidance
557
+ languages:
558
+ - generic
559
+ severity: WARNING
560
+ - id: runsec.domain-access-management.py-012
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
+ session.execute(f"SELECT * FROM t WHERE id={id}")
572
+ - pattern-regex: 'Vulnerable:\\s*PY\\-012\\b'
573
+ message: |-
574
+ RunSec Detection [PY-012]: CWE-89
575
+ languages:
576
+ - generic
577
+ severity: WARNING
578
+ - id: runsec.domain-access-management.py-017
579
+ metadata:
580
+ runsec_version: v1.0
581
+ confidence: |-
582
+ 0.9
583
+ exploit_scenario: |-
584
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
585
+ fix_template: |-
586
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
587
+ pattern-either:
588
+ - pattern: |-
589
+ @app.post("/login") without limiter
590
+ - pattern-regex: 'Vulnerable:\\s*PY\\-017\\b'
591
+ message: |-
592
+ RunSec Detection [PY-017]: OWASP API4
593
+ languages:
594
+ - generic
595
+ severity: WARNING
596
+ - id: runsec.domain-access-management.py-023
597
+ metadata:
598
+ runsec_version: v1.0
599
+ confidence: |-
600
+ 0.9
601
+ exploit_scenario: |-
602
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
603
+ fix_template: |-
604
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
605
+ pattern-either:
606
+ - pattern: |-
607
+ browser.new_page() reused globally
608
+ - pattern-regex: 'Vulnerable:\\s*PY\\-023\\b'
609
+ message: |-
610
+ RunSec Detection [PY-023]: Playwright isolation
611
+ languages:
612
+ - generic
613
+ severity: WARNING
614
+ - id: runsec.domain-access-management.py-026
615
+ metadata:
616
+ runsec_version: v1.0
617
+ confidence: |-
618
+ 0.9
619
+ exploit_scenario: |-
620
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
621
+ fix_template: |-
622
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
623
+ pattern-either:
624
+ - pattern: |-
625
+ logger.info("token=%s", token)
626
+ - pattern-regex: 'Vulnerable:\\s*PY\\-026\\b'
627
+ message: |-
628
+ RunSec Detection [PY-026]: OWASP Logging
629
+ languages:
630
+ - generic
631
+ severity: WARNING
632
+ - id: runsec.domain-access-management.py-028
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
+ state change endpoint without CSRF check
644
+ - pattern-regex: 'Vulnerable:\\s*PY\\-028\\b'
645
+ message: |-
646
+ RunSec Detection [PY-028]: OWASP CSRF
647
+ languages:
648
+ - generic
649
+ severity: WARNING
650
+ - id: runsec.domain-access-management.dja-007
651
+ metadata:
652
+ runsec_version: v1.0
653
+ confidence: |-
654
+ 0.9
655
+ exploit_scenario: |-
656
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
657
+ fix_template: |-
658
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
659
+ pattern-either:
660
+ - pattern: |-
661
+ SESSION_COOKIE_SECURE = False
662
+ CSRF_COOKIE_SECURE = False
663
+ - pattern-regex: 'Vulnerable:\\s*DJA\\-007\\b'
664
+ message: |-
665
+ RunSec Detection [DJA-007]: CWE-614
666
+ languages:
667
+ - generic
668
+ severity: WARNING
669
+ - id: runsec.domain-access-management.dja-012
670
+ metadata:
671
+ runsec_version: v1.0
672
+ confidence: |-
673
+ 0.9
674
+ exploit_scenario: |-
675
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
676
+ fix_template: |-
677
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
678
+ pattern-either:
679
+ - pattern: |-
680
+ SESSION_SERIALIZER = "django.contrib.sessions.serializers.PickleSerializer"
681
+ - pattern-regex: 'Vulnerable:\\s*DJA\\-012\\b'
682
+ message: |-
683
+ RunSec Detection [DJA-012]: CWE-502
684
+ languages:
685
+ - generic
686
+ severity: WARNING
687
+ - id: runsec.domain-access-management.dja-014
688
+ metadata:
689
+ runsec_version: v1.0
690
+ confidence: |-
691
+ 0.9
692
+ exploit_scenario: |-
693
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
694
+ fix_template: |-
695
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
696
+ pattern-either:
697
+ - pattern: |-
698
+ PASSWORD_HASHERS = ["django.contrib.auth.hashers.MD5PasswordHasher"]
699
+ - pattern-regex: 'Vulnerable:\\s*DJA\\-014\\b'
700
+ message: |-
701
+ RunSec Detection [DJA-014]: CWE-330
702
+ languages:
703
+ - generic
704
+ severity: WARNING
705
+ - id: runsec.domain-access-management.mob-010
706
+ metadata:
707
+ runsec_version: v1.0
708
+ confidence: |-
709
+ 0.9
710
+ exploit_scenario: |-
711
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
712
+ fix_template: |-
713
+ Исключить вывод токенов даже в debug-режиме, применять редактирование/маскирование чувствительных данных в логах.
714
+ pattern-either:
715
+ - pattern: |-
716
+ if (kDebugMode) {
717
+ print('token - $token');
718
+ }
719
+ - pattern-regex: 'Vulnerable:\\s*MOB\\-010\\b'
720
+ message: |-
721
+ RunSec Detection [MOB-010]: Silk Mobile SAR
722
+ languages:
723
+ - generic
724
+ severity: WARNING
725
+ - id: runsec.domain-access-management.dsk-105
726
+ metadata:
727
+ runsec_version: v1.0
728
+ confidence: |-
729
+ 0.9
730
+ exploit_scenario: |-
731
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
732
+ fix_template: |-
733
+ Для чувствительных операций использовать ipcMain.handle + строгую валидацию payload и проверку источника/role.
734
+ pattern-either:
735
+ - pattern: |-
736
+ ipcMain.on("export-secrets", (event, payload) => { ... })
737
+ - pattern-regex: 'Vulnerable:\\s*DSK\\-105\\b'
738
+ message: |-
739
+ RunSec Detection [DSK-105]: Insight SAR
740
+ languages:
741
+ - generic
742
+ severity: WARNING
743
+ - id: runsec.domain-access-management.njs-032
744
+ metadata:
745
+ runsec_version: v1.0
746
+ confidence: |-
747
+ 0.9
748
+ exploit_scenario: |-
749
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
750
+ fix_template: |-
751
+ Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
752
+ pattern-either:
753
+ - pattern: |-
754
+ const secret = process.env.JWT_SECRET
755
+ - pattern-regex: 'Vulnerable:\\s*NJS\\-032\\b'
756
+ message: |-
757
+ RunSec Detection [NJS-032]: JWT Secret Management
758
+ languages:
759
+ - generic
760
+ severity: WARNING
761
+ - id: runsec.domain-access-management.njs-033
762
+ metadata:
763
+ runsec_version: v1.0
764
+ confidence: |-
765
+ 0.9
766
+ exploit_scenario: |-
767
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
768
+ fix_template: |-
769
+ Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
770
+ pattern-either:
771
+ - pattern: |-
772
+ https.request({ rejectUnauthorized: false })
773
+ - pattern-regex: 'Vulnerable:\\s*NJS\\-033\\b'
774
+ message: |-
775
+ RunSec Detection [NJS-033]: TLS/mTLS Hardening
776
+ languages:
777
+ - generic
778
+ severity: WARNING
779
+ - id: runsec.domain-access-management.fts-002
780
+ metadata:
781
+ runsec_version: v1.0
782
+ confidence: |-
783
+ 0.9
784
+ exploit_scenario: |-
785
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
786
+ fix_template: |-
787
+ Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
788
+ pattern-either:
789
+ - pattern: |-
790
+ localStorage.setItem("jwt", token)
791
+ sessionStorage.setItem("snils", value)
792
+ - pattern-regex: 'Vulnerable:\\s*FTS\\-002\\b'
793
+ message: |-
794
+ RunSec Detection [FTS-002]: OWASP ASVS Session Management
795
+ languages:
796
+ - generic
797
+ severity: WARNING
798
+ - id: runsec.domain-access-management.fts-003
799
+ metadata:
800
+ runsec_version: v1.0
801
+ confidence: |-
802
+ 0.9
803
+ exploit_scenario: |-
804
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
805
+ fix_template: |-
806
+ Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
807
+ pattern-either:
808
+ - pattern: |-
809
+ console.log("token", token)
810
+ console.error("user profile", profile)
811
+ - pattern-regex: 'Vulnerable:\\s*FTS\\-003\\b'
812
+ message: |-
813
+ RunSec Detection [FTS-003]: OWASP Logging Cheat Sheet
814
+ languages:
815
+ - generic
816
+ severity: WARNING
817
+ - id: runsec.domain-access-management.fts-005
818
+ metadata:
819
+ runsec_version: v1.0
820
+ confidence: |-
821
+ 0.9
822
+ exploit_scenario: |-
823
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
824
+ fix_template: |-
825
+ Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
826
+ pattern-either:
827
+ - pattern: |-
828
+ if (user.role === "admin") price = 0
829
+ if (clientAmount < limit) approve()
830
+ - pattern-regex: 'Vulnerable:\\s*FTS\\-005\\b'
831
+ message: |-
832
+ RunSec Detection [FTS-005]: OWASP Top 10 A04 Insecure Design
833
+ languages:
834
+ - generic
835
+ severity: WARNING
836
+ - id: runsec.domain-access-management.fts-014
837
+ metadata:
838
+ runsec_version: v1.0
839
+ confidence: |-
840
+ 0.9
841
+ exploit_scenario: |-
842
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
843
+ fix_template: |-
844
+ Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
845
+ pattern-either:
846
+ - pattern: |-
847
+ const token = Math.random().toString(36)
848
+ - pattern-regex: 'Vulnerable:\\s*FTS\\-014\\b'
849
+ message: |-
850
+ RunSec Detection [FTS-014]: Web Crypto API Guidance
851
+ languages:
852
+ - generic
853
+ severity: WARNING
854
+ - id: runsec.domain-access-management.cwe-755-py
855
+ metadata:
856
+ runsec_version: v1.0
857
+ confidence: |-
858
+ 0.9
859
+ exploit_scenario: |-
860
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
861
+ fix_template: |-
862
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
863
+ pattern-either:
864
+ - pattern: |-
865
+ def verify_token(token):
866
+ try:
867
+ return decode_token(token)
868
+ except Exception:
869
+ logger.error("auth failed")
870
+ return True
871
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-755\\-PY\\b'
872
+ message: |-
873
+ RunSec Detection [CWE-755-PY]: CWE Compliance
874
+ languages:
875
+ - generic
876
+ severity: WARNING
877
+ - id: runsec.domain-access-management.cwe-384-py
878
+ metadata:
879
+ runsec_version: v1.0
880
+ confidence: |-
881
+ 0.9
882
+ exploit_scenario: |-
883
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
884
+ fix_template: |-
885
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
886
+ pattern-either:
887
+ - pattern: |-
888
+ login(request, user) без request.session.cycle_key()
889
+ # no rotate_token(request)
890
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-384\\-PY\\b'
891
+ message: |-
892
+ RunSec Detection [CWE-384-PY]: CWE Compliance - Logic/Resources
893
+ languages:
894
+ - generic
895
+ severity: WARNING
896
+ - id: runsec.domain-access-management.cwe-613-py
897
+ metadata:
898
+ runsec_version: v1.0
899
+ confidence: |-
900
+ 0.9
901
+ exploit_scenario: |-
902
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
903
+ fix_template: |-
904
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
905
+ pattern-either:
906
+ - pattern: |-
907
+ SESSION_COOKIE_AGE = 60*60*24*30
908
+ # no idle timeout / absolute timeout
909
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-613\\-PY\\b'
910
+ message: |-
911
+ RunSec Detection [CWE-613-PY]: CWE Final Certification
912
+ languages:
913
+ - generic
914
+ severity: WARNING
915
+ - id: runsec.domain-access-management.cwe-770-py
916
+ metadata:
917
+ runsec_version: v1.0
918
+ confidence: |-
919
+ 0.9
920
+ exploit_scenario: |-
921
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
922
+ fix_template: |-
923
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
924
+ pattern-either:
925
+ - pattern: |-
926
+ @app.post("/login") без limiter/throttle
927
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-770\\-PY\\b'
928
+ message: |-
929
+ RunSec Detection [CWE-770-PY]: CWE Final Certification
930
+ languages:
931
+ - generic
932
+ severity: WARNING
933
+ - id: runsec.domain-access-management.cwe-770-js
934
+ metadata:
935
+ runsec_version: v1.0
936
+ confidence: |-
937
+ 0.9
938
+ exploit_scenario: |-
939
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
940
+ fix_template: |-
941
+ Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
942
+ pattern-either:
943
+ - pattern: |-
944
+ app.post("/login", handler) без limiter middleware
945
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-770\\-JS\\b'
946
+ message: |-
947
+ RunSec Detection [CWE-770-JS]: CWE Final Certification
948
+ languages:
949
+ - generic
950
+ severity: WARNING
951
+ - id: runsec.domain-access-management.cwe-20-orm-mass-assign
952
+ metadata:
953
+ runsec_version: v1.0
954
+ confidence: |-
955
+ 0.9
956
+ exploit_scenario: |-
957
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
958
+ fix_template: |-
959
+ Для create/update использовать явный whitelist полей (DTO/pick), блокировать системные/привилегированные атрибуты и валидировать типы.
960
+ pattern-either:
961
+ - pattern: |-
962
+ Model(**request.json)
963
+ Model.create(req.body)
964
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-20\\-ORM\\-MASS\\-ASSIGN\\b'
965
+ message: |-
966
+ RunSec Detection [CWE-20-ORM-MASS-ASSIGN]: CWE Final Certification
967
+ languages:
968
+ - generic
969
+ severity: WARNING
970
+ - id: runsec.domain-access-management.cwe-287-keycloak-jwt-aud-iss
971
+ metadata:
972
+ runsec_version: v1.0
973
+ confidence: |-
974
+ 0.9
975
+ exploit_scenario: |-
976
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
977
+ fix_template: |-
978
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
979
+ pattern-either:
980
+ - pattern: |-
981
+ jwt.decode(token, key, algorithms=["RS256"]) без audience/issuer
982
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-287\\-KEYCLOAK\\-JWT\\-AUD\\-ISS\\b'
983
+ message: |-
984
+ RunSec Detection [CWE-287-KEYCLOAK-JWT-AUD-ISS]: CWE Final Certification
985
+ languages:
986
+ - generic
987
+ severity: WARNING
988
+ - id: runsec.domain-access-management.cwe-613-keycloak-session-checks
989
+ metadata:
990
+ runsec_version: v1.0
991
+ confidence: |-
992
+ 0.9
993
+ exploit_scenario: |-
994
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
995
+ fix_template: |-
996
+ Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
997
+ pattern-either:
998
+ - pattern: |-
999
+ Проверка JWT без контроля exp/nbf и политики сессии realm/client
1000
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-613\\-KEYCLOAK\\-SESSION\\-CHECKS\\b'
1001
+ message: |-
1002
+ RunSec Detection [CWE-613-KEYCLOAK-SESSION-CHECKS]: CWE Final Certification
1003
+ languages:
1004
+ - generic
1005
+ severity: WARNING
1006
+ - id: runsec.domain-access-management.cwe-862-nextjs-server-action
1007
+ metadata:
1008
+ runsec_version: v1.0
1009
+ confidence: |-
1010
+ 0.9
1011
+ exploit_scenario: |-
1012
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
1013
+ fix_template: |-
1014
+ Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
1015
+ pattern-either:
1016
+ - pattern: |-
1017
+ "use server" функция без getServerSession(...)/auth() в начале
1018
+ - pattern-regex: 'Vulnerable:\\s*CWE\\-862\\-NEXTJS\\-SERVER\\-ACTION\\b'
1019
+ message: |-
1020
+ RunSec Detection [CWE-862-NEXTJS-SERVER-ACTION]: CWE Final Certification
1021
+ languages:
1022
+ - generic
1023
+ severity: WARNING