@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,496 @@
1
+ rules:
2
+ - id: runsec.ru-regulatory.rrc-001
3
+ metadata:
4
+ runsec_version: v1.0
5
+ confidence: |-
6
+ 0.9
7
+ exploit_scenario: |-
8
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
9
+ fix_template: |-
10
+ Использовать редактирование/маскирование до логирования (например, redact_email, redact_snils), а также уровень логов без PII по умолчанию.
11
+ pattern-either:
12
+ - pattern: |-
13
+ print(f"user={user.email}")
14
+ logger.info("pii", extra={"fio": fio, "snils": snils, "email": email})
15
+ - pattern-regex: 'Vulnerable:\\s*RRC\\-001\\b'
16
+ message: |-
17
+ RunSec Detection [RRC-001]: 152-ФЗ (PII in logs)
18
+ languages:
19
+ - generic
20
+ severity: WARNING
21
+ - id: runsec.ru-regulatory.rrc-002
22
+ metadata:
23
+ runsec_version: v1.0
24
+ confidence: |-
25
+ 0.9
26
+ exploit_scenario: |-
27
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
28
+ fix_template: |-
29
+ Обезличить/агрегировать ПДн перед отправкой, отделить идентификаторы и payload, добавить контроль/аудит передачи данных.
30
+ pattern-either:
31
+ - pattern: |-
32
+ requests.post("https://api.openai.com", json={"text": pii})
33
+ fetch("https://api.anthropic.com", { body: pii })
34
+ - pattern-regex: 'Vulnerable:\\s*RRC\\-002\\b'
35
+ message: |-
36
+ RunSec Detection [RRC-002]: RU policy: residency & anonymization
37
+ languages:
38
+ - generic
39
+ severity: WARNING
40
+ - id: runsec.ru-regulatory.rrc-003
41
+ metadata:
42
+ runsec_version: v1.0
43
+ confidence: |-
44
+ 0.9
45
+ exploit_scenario: |-
46
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
47
+ fix_template: |-
48
+ Использовать сертифицированные средства криптографии / GOST-совместимые библиотеки, соответствующие требованиям контура КИИ.
49
+ pattern-either:
50
+ - pattern: |-
51
+ from cryptography.hazmat.primitives.ciphers import Cipher
52
+ import Crypto.Cipher
53
+ - pattern-regex: 'Vulnerable:\\s*RRC\\-003\\b'
54
+ message: |-
55
+ RunSec Detection [RRC-003]: RU KII: certified crypto requirement
56
+ languages:
57
+ - generic
58
+ severity: WARNING
59
+ - id: runsec.ru-regulatory.rrc-004
60
+ metadata:
61
+ runsec_version: v1.0
62
+ confidence: |-
63
+ 0.9
64
+ exploit_scenario: |-
65
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
66
+ fix_template: |-
67
+ Уйти от hardcoded metadata: использовать абстракции конфигурации/переменные окружения и единый механизм discovery для целевого облака.
68
+ pattern-either:
69
+ - pattern: |-
70
+ http://169.254.169.254/latest/meta-data/
71
+ AWS_INSTANCE_ID (или запросы к IMDS)
72
+ - pattern-regex: 'Vulnerable:\\s*RRC\\-004\\b'
73
+ message: |-
74
+ RunSec Detection [RRC-004]: Import substitution: portability risk
75
+ languages:
76
+ - generic
77
+ severity: WARNING
78
+ - id: runsec.ru-regulatory.rrc-005
79
+ metadata:
80
+ runsec_version: v1.0
81
+ confidence: |-
82
+ 0.9
83
+ exploit_scenario: |-
84
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
85
+ fix_template: |-
86
+ Использовать российские или внутренние корпоративные DNS/NTP резолверы (например, 10.0.0.53, ntp.local).
87
+ pattern-either:
88
+ - pattern: |-
89
+ nameserver 8.8.8.8
90
+ server pool.ntp.org iburst
91
+ - pattern-regex: 'Vulnerable:\\s*RRC\\-005\\b'
92
+ message: |-
93
+ RunSec Detection [RRC-005]: FSTEC/FSB hardening: trusted infra dependencies
94
+ languages:
95
+ - generic
96
+ severity: WARNING
97
+ - id: runsec.ru-regulatory.rrc-006
98
+ metadata:
99
+ runsec_version: v1.0
100
+ confidence: |-
101
+ 0.9
102
+ exploit_scenario: |-
103
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
104
+ fix_template: |-
105
+ В CI/CD разрешать только доверенные внутренние зеркала/репозитории артефактов (Nexus/Artifactory/internal registry).
106
+ pattern-either:
107
+ - pattern: |-
108
+ pip install -i https://pypi.org/simple ...
109
+ npm config set registry https://registry.npmjs.org/
110
+ - pattern-regex: 'Vulnerable:\\s*RRC\\-006\\b'
111
+ message: |-
112
+ RunSec Detection [RRC-006]: Supply-chain policy: trusted mirrors only
113
+ languages:
114
+ - generic
115
+ severity: WARNING
116
+ - id: runsec.ru-regulatory.rrc-007
117
+ metadata:
118
+ runsec_version: v1.0
119
+ confidence: |-
120
+ 0.9
121
+ exploit_scenario: |-
122
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
123
+ fix_template: |-
124
+ Возвращать обобщенное сообщение пользователю; детали и stacktrace писать только во внутренние журналы.
125
+ pattern-either:
126
+ - pattern: |-
127
+ return {"error": str(e), "stack": traceback.format_exc()}
128
+ - pattern-regex: 'Vulnerable:\\s*RRC\\-007\\b'
129
+ message: |-
130
+ RunSec Detection [RRC-007]: Secure error handling policy
131
+ languages:
132
+ - generic
133
+ severity: WARNING
134
+ - id: runsec.ru-regulatory.rrc-008
135
+ metadata:
136
+ runsec_version: v1.0
137
+ confidence: |-
138
+ 0.9
139
+ exploit_scenario: |-
140
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
141
+ fix_template: |-
142
+ Централизованно логировать неудачные входы, смену паролей и чувствительные события безопасности (SIEM/audit bus).
143
+ pattern-either:
144
+ - pattern: |-
145
+ except AuthError:
146
+ return {"ok": False}
147
+ - pattern-regex: 'Vulnerable:\\s*RRC\\-008\\b'
148
+ message: |-
149
+ RunSec Detection [RRC-008]: Security audit logging requirement
150
+ languages:
151
+ - generic
152
+ severity: WARNING
153
+ - id: runsec.ru-regulatory.rrc-009
154
+ metadata:
155
+ runsec_version: v1.0
156
+ confidence: |-
157
+ 0.9
158
+ exploit_scenario: |-
159
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
160
+ fix_template: |-
161
+ Перед запуском проверять цифровую подпись/доверенную цепочку и хэш (особенно на критических узлах).
162
+ pattern-either:
163
+ - pattern: |-
164
+ subprocess.run(["/opt/bin/tool"])
165
+ - pattern-regex: 'Vulnerable:\\s*RRC\\-009\\b'
166
+ message: |-
167
+ RunSec Detection [RRC-009]: Critical node integrity policy
168
+ languages:
169
+ - generic
170
+ severity: WARNING
171
+ - id: runsec.ru-regulatory.rrc-010
172
+ metadata:
173
+ runsec_version: v1.0
174
+ confidence: |-
175
+ 0.9
176
+ exploit_scenario: |-
177
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
178
+ fix_template: |-
179
+ Перед удалением перезаписать файл нулями/случайными данными, затем удалить (fsync + remove) с учетом политики хранения.
180
+ pattern-either:
181
+ - pattern: |-
182
+ os.remove(pii_file)
183
+ - pattern-regex: 'Vulnerable:\\s*RRC\\-010\\b'
184
+ message: |-
185
+ RunSec Detection [RRC-010]: CWE-226
186
+ languages:
187
+ - generic
188
+ severity: WARNING
189
+ - id: runsec.ru-regulatory.rrc-011
190
+ metadata:
191
+ runsec_version: v1.0
192
+ confidence: |-
193
+ 0.9
194
+ exploit_scenario: |-
195
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
196
+ fix_template: |-
197
+ Использовать subprocess.run([...], shell=False, check=True) с фиксированным whitelist аргументов.
198
+ pattern-either:
199
+ - pattern: |-
200
+ os.system(user_cmd)
201
+ subprocess.Popen(user_cmd, shell=True)
202
+ - pattern-regex: 'Vulnerable:\\s*RRC\\-011\\b'
203
+ message: |-
204
+ RunSec Detection [RRC-011]: CWE-676
205
+ languages:
206
+ - generic
207
+ severity: WARNING
208
+ - id: runsec.ru-regulatory.rrc-012
209
+ metadata:
210
+ runsec_version: v1.0
211
+ confidence: |-
212
+ 0.9
213
+ exploit_scenario: |-
214
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
215
+ fix_template: |-
216
+ Проверять SHA-256/HMAC целостность конфигурации при старте; при mismatch — fail closed и аудит-событие.
217
+ pattern-either:
218
+ - pattern: |-
219
+ settings = json.load(open("config.json"))
220
+ - pattern-regex: 'Vulnerable:\\s*RRC\\-012\\b'
221
+ message: |-
222
+ RunSec Detection [RRC-012]: CWE-353
223
+ languages:
224
+ - generic
225
+ severity: WARNING
226
+ - id: runsec.ru-regulatory.rrc-013
227
+ metadata:
228
+ runsec_version: v1.0
229
+ confidence: |-
230
+ 0.9
231
+ exploit_scenario: |-
232
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
233
+ fix_template: |-
234
+ Использовать токены УДИ/УДА (OIDC/OAuth2, client credentials, mTLS-bound tokens), запрет static user/pass в интеграциях и сервис-аккаунтах.
235
+ pattern-either:
236
+ - pattern: |-
237
+ KEYCLOAK_USER=admin
238
+ KEYCLOAK_PASSWORD=admin123
239
+ auth = {"user": "...", "pass": "..."}
240
+ - pattern-regex: 'Vulnerable:\\s*RRC\\-013\\b'
241
+ message: |-
242
+ RunSec Detection [RRC-013]: ГОСТ 57580.1, требования ЦБ по ИАМ/идентификации
243
+ languages:
244
+ - generic
245
+ severity: WARNING
246
+ - id: runsec.ru-regulatory.rrc-014
247
+ metadata:
248
+ runsec_version: v1.0
249
+ confidence: |-
250
+ 0.9
251
+ exploit_scenario: |-
252
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
253
+ fix_template: |-
254
+ Обязательная короткоживущая токен-модель, ротация, revoke/introspection, аудит выдачи и использования токенов.
255
+ pattern-either:
256
+ - pattern: |-
257
+ token = "hardcoded-long-lived"
258
+ expires_in = 99999999
259
+ - pattern-regex: 'Vulnerable:\\s*RRC\\-014\\b'
260
+ message: |-
261
+ RunSec Detection [RRC-014]: Внутренние стандарты ЦБ ИБ (токены и жизненный цикл)
262
+ languages:
263
+ - generic
264
+ severity: WARNING
265
+ - id: runsec.ru-regulatory.rrc-015
266
+ metadata:
267
+ runsec_version: v1.0
268
+ confidence: |-
269
+ 0.9
270
+ exploit_scenario: |-
271
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
272
+ fix_template: |-
273
+ Использовать Authorization Code Flow + PKCE, а для межсервисного взаимодействия включать mTLS (client cert/key) и проверку FAPI-профиля.
274
+ pattern-either:
275
+ - pattern: |-
276
+ response_type=token
277
+ grant_type=implicit
278
+ curl https://idp/token (без mTLS client cert)
279
+ - pattern-regex: 'Vulnerable:\\s*RRC\\-015\\b'
280
+ message: |-
281
+ RunSec Detection [RRC-015]: FAPI Security Profile, ГОСТ 57580.1
282
+ languages:
283
+ - generic
284
+ severity: WARNING
285
+ - id: runsec.ru-regulatory.rrc-016
286
+ metadata:
287
+ runsec_version: v1.0
288
+ confidence: |-
289
+ 0.9
290
+ exploit_scenario: |-
291
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
292
+ fix_template: |-
293
+ Явно создавать непривилегированного пользователя и переключаться на него (RUN useradd -m appuser, USER appuser).
294
+ pattern-either:
295
+ - pattern: |-
296
+ # Dockerfile
297
+ FROM python:3.11
298
+ USER root или отсутствие USER
299
+ - pattern-regex: 'Vulnerable:\\s*RRC\\-016\\b'
300
+ message: |-
301
+ RunSec Detection [RRC-016]: Docker CIS + ГОСТ 57580.1 hardening
302
+ languages:
303
+ - generic
304
+ severity: WARNING
305
+ - id: runsec.ru-regulatory.rrc-017
306
+ metadata:
307
+ runsec_version: v1.0
308
+ confidence: |-
309
+ 0.9
310
+ exploit_scenario: |-
311
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
312
+ fix_template: |-
313
+ Использовать kind: ExternalSecret (ESO) + backend Vault; исключить plaintext секреты в Git/YAML.
314
+ pattern-either:
315
+ - pattern: |-
316
+ kind: Secret
317
+ stringData:
318
+ password: plain-text
319
+ - pattern-regex: 'Vulnerable:\\s*RRC\\-017\\b'
320
+ message: |-
321
+ RunSec Detection [RRC-017]: Vault policy + ESO + ГОСТ 57580.1
322
+ languages:
323
+ - generic
324
+ severity: WARNING
325
+ - id: runsec.ru-regulatory.rrc-018
326
+ metadata:
327
+ runsec_version: v1.0
328
+ confidence: |-
329
+ 0.9
330
+ exploit_scenario: |-
331
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
332
+ fix_template: |-
333
+ Для новых микросервисов использовать поддерживаемый стек (Python >= 3.10, без legacy PHP), фиксировать baseline в архитектурном стандарте.
334
+ pattern-either:
335
+ - pattern: |-
336
+ FROM python:3.9
337
+ php:7.4-fpm
338
+ - pattern-regex: 'Vulnerable:\\s*RRC\\-018\\b'
339
+ message: |-
340
+ RunSec Detection [RRC-018]: Internal tech baseline / Клинкер
341
+ languages:
342
+ - generic
343
+ severity: WARNING
344
+ - id: runsec.ru-regulatory.rrc-019
345
+ metadata:
346
+ runsec_version: v1.0
347
+ confidence: |-
348
+ 0.9
349
+ exploit_scenario: |-
350
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
351
+ fix_template: |-
352
+ Все внутренние API должны проходить через middleware аутентификации Keycloak (VerifyToken/аналог), deny-by-default.
353
+ pattern-either:
354
+ - pattern: |-
355
+ @app.get("/internal/payments")
356
+ def handler(): ... (без VerifyToken)
357
+ - pattern-regex: 'Vulnerable:\\s*RRC\\-019\\b'
358
+ message: |-
359
+ RunSec Detection [RRC-019]: Keycloak middleware policy / Клинкер / ГОСТ 57580.1
360
+ languages:
361
+ - generic
362
+ severity: WARNING
363
+ - id: runsec.ru-regulatory.rrc-020
364
+ metadata:
365
+ runsec_version: v1.0
366
+ confidence: |-
367
+ 0.9
368
+ exploit_scenario: |-
369
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
370
+ fix_template: |-
371
+ Перед запуском проверять SHA-256/ГОСТ-хэш исполняемого файла и критичных конфигов; при mismatch — fail closed и аудит-событие (Приказ 239).
372
+ pattern-either:
373
+ - pattern: |-
374
+ app = load_binary("/opt/bin/service")
375
+ config = open("/etc/service/config.yaml").read()
376
+ - pattern-regex: 'Vulnerable:\\s*RRC\\-020\\b'
377
+ message: |-
378
+ RunSec Detection [RRC-020]: Приказ ФСТЭК №239, ГОСТ Р 56939
379
+ languages:
380
+ - generic
381
+ severity: WARNING
382
+ - id: runsec.ru-regulatory.rrc-021
383
+ metadata:
384
+ runsec_version: v1.0
385
+ confidence: |-
386
+ 0.9
387
+ exploit_scenario: |-
388
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
389
+ fix_template: |-
390
+ Перед запуском проверять наличие и работоспособность СЗИ (антивирус, IDS/IPS, EDR агент), логировать статус и блокировать старт при критическом отказе.
391
+ pattern-either:
392
+ - pattern: |-
393
+ start_service()
394
+ # no AV/IDS health check
395
+ - pattern-regex: 'Vulnerable:\\s*RRC\\-021\\b'
396
+ message: |-
397
+ RunSec Detection [RRC-021]: Приказ ФСТЭК №235/239
398
+ languages:
399
+ - generic
400
+ severity: WARNING
401
+ - id: runsec.ru-regulatory.rrc-022
402
+ metadata:
403
+ runsec_version: v1.0
404
+ confidence: |-
405
+ 0.9
406
+ exploit_scenario: |-
407
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
408
+ fix_template: |-
409
+ Обязательная фиксация результатов SAST/SCA в артефактах CI (лог/отчет), подпись и хранение для аудита SDL по ГОСТ Р 56939.
410
+ pattern-either:
411
+ - pattern: |-
412
+ ci_stage("build")
413
+ run_semgrep()
414
+ # result not persisted
415
+ - pattern-regex: 'Vulnerable:\\s*RRC\\-022\\b'
416
+ message: |-
417
+ RunSec Detection [RRC-022]: ГОСТ Р 56939, ФСТЭК SDL practice
418
+ languages:
419
+ - generic
420
+ severity: WARNING
421
+ - id: runsec.ru-regulatory.rrc-023
422
+ metadata:
423
+ runsec_version: v1.0
424
+ confidence: |-
425
+ 0.9
426
+ exploit_scenario: |-
427
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
428
+ fix_template: |-
429
+ Для криптографических ключей задать и контролировать rotation_period, автоматическую ротацию и журналировать события смены ключей.
430
+ pattern-either:
431
+ - pattern: |-
432
+ key_policy = {"name": "payments-key"}
433
+ # no rotation_period
434
+ - pattern-regex: 'Vulnerable:\\s*RRC\\-023\\b'
435
+ message: |-
436
+ RunSec Detection [RRC-023]: NIST SP 800-57, ЦБ 683-П
437
+ languages:
438
+ - generic
439
+ severity: WARNING
440
+ - id: runsec.ru-regulatory.rrc-024
441
+ metadata:
442
+ runsec_version: v1.0
443
+ confidence: |-
444
+ 0.9
445
+ exploit_scenario: |-
446
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
447
+ fix_template: |-
448
+ Включить строгий CSP, SRI для внешних скриптов и проверки целостности DOM/critical forms для защиты ДБО от overlay/injection атак.
449
+ pattern-either:
450
+ - pattern: |-
451
+ <script src="https://cdn.example.com/widget.js"></script>
452
+ # no Content-Security-Policy
453
+ - pattern-regex: 'Vulnerable:\\s*RRC\\-024\\b'
454
+ message: |-
455
+ RunSec Detection [RRC-024]: ЦБ 683-П
456
+ languages:
457
+ - generic
458
+ severity: WARNING
459
+ - id: runsec.ru-regulatory.rrc-025
460
+ metadata:
461
+ runsec_version: v1.0
462
+ confidence: |-
463
+ 0.9
464
+ exploit_scenario: |-
465
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
466
+ fix_template: |-
467
+ Фиксировать hash реквизитов на этапе create и сравнивать перед sign/submit; при несовпадении — reject + audit event.
468
+ pattern-either:
469
+ - pattern: |-
470
+ payment.amount = req.amount
471
+ sign(payment)
472
+ # payload can change before signing
473
+ - pattern-regex: 'Vulnerable:\\s*RRC\\-025\\b'
474
+ message: |-
475
+ RunSec Detection [RRC-025]: ЦБ 719-П
476
+ languages:
477
+ - generic
478
+ severity: WARNING
479
+ - id: runsec.ru-regulatory.rrc-026
480
+ metadata:
481
+ runsec_version: v1.0
482
+ confidence: |-
483
+ 0.9
484
+ exploit_scenario: |-
485
+ Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
486
+ fix_template: |-
487
+ Вести инвентаризацию криптопримитивов, план гибридных схем и процедуру миграции ключей/сертификатов под PQ-ready профиль.
488
+ pattern-either:
489
+ - pattern: |-
490
+ crypto_profile = "rsa2048-only"
491
+ - pattern-regex: 'Vulnerable:\\s*RRC\\-026\\b'
492
+ message: |-
493
+ RunSec Detection [RRC-026]: NIST SP 800-57 migration guidance
494
+ languages:
495
+ - generic
496
+ severity: WARNING