@runsec/mcp 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +578 -0
- package/package.json +43 -0
- package/src/rules/data/rule-compliance-map.json +43563 -0
- package/src/rules/data/semgrep-rules/README-taint-overlays.md +21 -0
- package/src/rules/data/semgrep-rules/advanced-agent-cloud.yaml +802 -0
- package/src/rules/data/semgrep-rules/app-logic.yaml +445 -0
- package/src/rules/data/semgrep-rules/auth-keycloak.yaml +831 -0
- package/src/rules/data/semgrep-rules/browser-agent.yaml +260 -0
- package/src/rules/data/semgrep-rules/cloud-secrets.yaml +316 -0
- package/src/rules/data/semgrep-rules/csharp-dotnet.yaml +4864 -0
- package/src/rules/data/semgrep-rules/desktop-electron-pro.yaml +30 -0
- package/src/rules/data/semgrep-rules/desktop-vsto-suite.yaml +2759 -0
- package/src/rules/data/semgrep-rules/devops-security.yaml +393 -0
- package/src/rules/data/semgrep-rules/domain-access-management.yaml +1023 -0
- package/src/rules/data/semgrep-rules/domain-data-privacy.yaml +852 -0
- package/src/rules/data/semgrep-rules/domain-input-validation.yaml +2894 -0
- package/src/rules/data/semgrep-rules/domain-platform-hardening.yaml +1715 -0
- package/src/rules/data/semgrep-rules/ds-ml-security.yaml +2431 -0
- package/src/rules/data/semgrep-rules/fastapi-async.yaml +5953 -0
- package/src/rules/data/semgrep-rules/frontend-react.yaml +4035 -0
- package/src/rules/data/semgrep-rules/frontend-security.yaml +200 -0
- package/src/rules/data/semgrep-rules/go-core.yaml +4959 -0
- package/src/rules/data/semgrep-rules/hft-cpp-security.yaml +631 -0
- package/src/rules/data/semgrep-rules/infra-k8s-helm.yaml +4968 -0
- package/src/rules/data/semgrep-rules/integration-security.yaml +2362 -0
- package/src/rules/data/semgrep-rules/java-enterprise.yaml +14756 -0
- package/src/rules/data/semgrep-rules/java-spring.yaml +397 -0
- package/src/rules/data/semgrep-rules/license-compliance.yaml +186 -0
- package/src/rules/data/semgrep-rules/mobile-flutter.yaml +37 -0
- package/src/rules/data/semgrep-rules/mobile-security.yaml +721 -0
- package/src/rules/data/semgrep-rules/nodejs-nestjs.yaml +5164 -0
- package/src/rules/data/semgrep-rules/nodejs-security.yaml +326 -0
- package/src/rules/data/semgrep-rules/observability.yaml +381 -0
- package/src/rules/data/semgrep-rules/php-security.yaml +3601 -0
- package/src/rules/data/semgrep-rules/python-backend-pro.yaml +30 -0
- package/src/rules/data/semgrep-rules/python-django.yaml +181 -0
- package/src/rules/data/semgrep-rules/python-security.yaml +284 -0
- package/src/rules/data/semgrep-rules/ru-regulatory.yaml +496 -0
- package/src/rules/data/semgrep-rules/ruby-rails.yaml +3078 -0
- package/src/rules/data/semgrep-rules/rust-security.yaml +2701 -0
|
@@ -0,0 +1,852 @@
|
|
|
1
|
+
rules:
|
|
2
|
+
- id: runsec.domain-data-privacy.fts-002
|
|
3
|
+
metadata:
|
|
4
|
+
runsec_version: v1.0
|
|
5
|
+
confidence: |-
|
|
6
|
+
0.9
|
|
7
|
+
exploit_scenario: |-
|
|
8
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
9
|
+
fix_template: |-
|
|
10
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
11
|
+
pattern-either:
|
|
12
|
+
- pattern: |-
|
|
13
|
+
localStorage.setItem("jwt", token)
|
|
14
|
+
- pattern-regex: 'Vulnerable:\\s*FTS\\-002\\b'
|
|
15
|
+
message: |-
|
|
16
|
+
RunSec Detection [FTS-002]: Privacy Controls
|
|
17
|
+
languages:
|
|
18
|
+
- generic
|
|
19
|
+
severity: WARNING
|
|
20
|
+
- id: runsec.domain-data-privacy.fts-003
|
|
21
|
+
metadata:
|
|
22
|
+
runsec_version: v1.0
|
|
23
|
+
confidence: |-
|
|
24
|
+
0.9
|
|
25
|
+
exploit_scenario: |-
|
|
26
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
27
|
+
fix_template: |-
|
|
28
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
29
|
+
pattern-either:
|
|
30
|
+
- pattern: |-
|
|
31
|
+
console.log("token", token)
|
|
32
|
+
- pattern-regex: 'Vulnerable:\\s*FTS\\-003\\b'
|
|
33
|
+
message: |-
|
|
34
|
+
RunSec Detection [FTS-003]: Privacy Controls
|
|
35
|
+
languages:
|
|
36
|
+
- generic
|
|
37
|
+
severity: WARNING
|
|
38
|
+
- id: runsec.domain-data-privacy.fts-008
|
|
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
|
+
Публичные .map файлы в production
|
|
50
|
+
- pattern-regex: 'Vulnerable:\\s*FTS\\-008\\b'
|
|
51
|
+
message: |-
|
|
52
|
+
RunSec Detection [FTS-008]: Privacy Controls
|
|
53
|
+
languages:
|
|
54
|
+
- generic
|
|
55
|
+
severity: WARNING
|
|
56
|
+
- id: runsec.domain-data-privacy.py-002
|
|
57
|
+
metadata:
|
|
58
|
+
runsec_version: v1.0
|
|
59
|
+
confidence: |-
|
|
60
|
+
0.9
|
|
61
|
+
exploit_scenario: |-
|
|
62
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
63
|
+
fix_template: |-
|
|
64
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
65
|
+
pattern-either:
|
|
66
|
+
- pattern: |-
|
|
67
|
+
except Exception as e:
|
|
68
|
+
return {"error": str(e)}
|
|
69
|
+
- pattern-regex: 'Vulnerable:\\s*PY\\-002\\b'
|
|
70
|
+
message: |-
|
|
71
|
+
RunSec Detection [PY-002]: Privacy Controls
|
|
72
|
+
languages:
|
|
73
|
+
- generic
|
|
74
|
+
severity: WARNING
|
|
75
|
+
- id: runsec.domain-data-privacy.py-009
|
|
76
|
+
metadata:
|
|
77
|
+
runsec_version: v1.0
|
|
78
|
+
confidence: |-
|
|
79
|
+
0.9
|
|
80
|
+
exploit_scenario: |-
|
|
81
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
82
|
+
fix_template: |-
|
|
83
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
84
|
+
pattern-either:
|
|
85
|
+
- pattern: |-
|
|
86
|
+
SECRET_KEY = "dev-secret"
|
|
87
|
+
- pattern-regex: 'Vulnerable:\\s*PY\\-009\\b'
|
|
88
|
+
message: |-
|
|
89
|
+
RunSec Detection [PY-009]: Privacy Controls
|
|
90
|
+
languages:
|
|
91
|
+
- generic
|
|
92
|
+
severity: WARNING
|
|
93
|
+
- id: runsec.domain-data-privacy.py-026
|
|
94
|
+
metadata:
|
|
95
|
+
runsec_version: v1.0
|
|
96
|
+
confidence: |-
|
|
97
|
+
0.9
|
|
98
|
+
exploit_scenario: |-
|
|
99
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
100
|
+
fix_template: |-
|
|
101
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
102
|
+
pattern-either:
|
|
103
|
+
- pattern: |-
|
|
104
|
+
logger.info("token=%s", token)
|
|
105
|
+
- pattern-regex: 'Vulnerable:\\s*PY\\-026\\b'
|
|
106
|
+
message: |-
|
|
107
|
+
RunSec Detection [PY-026]: Privacy Controls
|
|
108
|
+
languages:
|
|
109
|
+
- generic
|
|
110
|
+
severity: WARNING
|
|
111
|
+
- id: runsec.domain-data-privacy.njs-010
|
|
112
|
+
metadata:
|
|
113
|
+
runsec_version: v1.0
|
|
114
|
+
confidence: |-
|
|
115
|
+
0.9
|
|
116
|
+
exploit_scenario: |-
|
|
117
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
118
|
+
fix_template: |-
|
|
119
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
120
|
+
pattern-either:
|
|
121
|
+
- pattern: |-
|
|
122
|
+
res.json({error: err.stack})
|
|
123
|
+
- pattern-regex: 'Vulnerable:\\s*NJS\\-010\\b'
|
|
124
|
+
message: |-
|
|
125
|
+
RunSec Detection [NJS-010]: Privacy Controls
|
|
126
|
+
languages:
|
|
127
|
+
- generic
|
|
128
|
+
severity: WARNING
|
|
129
|
+
- id: runsec.domain-data-privacy.njs-035
|
|
130
|
+
metadata:
|
|
131
|
+
runsec_version: v1.0
|
|
132
|
+
confidence: |-
|
|
133
|
+
0.9
|
|
134
|
+
exploit_scenario: |-
|
|
135
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
136
|
+
fix_template: |-
|
|
137
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
138
|
+
pattern-either:
|
|
139
|
+
- pattern: |-
|
|
140
|
+
Долгоживущие plaintext значения
|
|
141
|
+
- pattern-regex: 'Vulnerable:\\s*NJS\\-035\\b'
|
|
142
|
+
message: |-
|
|
143
|
+
RunSec Detection [NJS-035]: Privacy Controls
|
|
144
|
+
languages:
|
|
145
|
+
- generic
|
|
146
|
+
severity: WARNING
|
|
147
|
+
- id: runsec.domain-data-privacy.rrc-001
|
|
148
|
+
metadata:
|
|
149
|
+
runsec_version: v1.0
|
|
150
|
+
confidence: |-
|
|
151
|
+
0.9
|
|
152
|
+
exploit_scenario: |-
|
|
153
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
154
|
+
fix_template: |-
|
|
155
|
+
Маскирование ПДн и policy-based log redaction.
|
|
156
|
+
pattern-either:
|
|
157
|
+
- pattern: |-
|
|
158
|
+
Логирование ФИО/СНИЛС/email в stdout
|
|
159
|
+
- pattern-regex: 'Vulnerable:\\s*RRC\\-001\\b'
|
|
160
|
+
message: |-
|
|
161
|
+
RunSec Detection [RRC-001]: 152-FZ
|
|
162
|
+
languages:
|
|
163
|
+
- generic
|
|
164
|
+
severity: WARNING
|
|
165
|
+
- id: runsec.domain-data-privacy.log-012
|
|
166
|
+
metadata:
|
|
167
|
+
runsec_version: v1.0
|
|
168
|
+
confidence: |-
|
|
169
|
+
0.9
|
|
170
|
+
exploit_scenario: |-
|
|
171
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
172
|
+
fix_template: |-
|
|
173
|
+
Sanitization pipeline до отправки в telemetry backend.
|
|
174
|
+
pattern-either:
|
|
175
|
+
- pattern: |-
|
|
176
|
+
Full payload logging in traces
|
|
177
|
+
- pattern-regex: 'Vulnerable:\\s*LOG\\-012\\b'
|
|
178
|
+
message: |-
|
|
179
|
+
RunSec Detection [LOG-012]: Observability Security
|
|
180
|
+
languages:
|
|
181
|
+
- generic
|
|
182
|
+
severity: WARNING
|
|
183
|
+
- id: runsec.domain-data-privacy.dja-008
|
|
184
|
+
metadata:
|
|
185
|
+
runsec_version: v1.0
|
|
186
|
+
confidence: |-
|
|
187
|
+
0.9
|
|
188
|
+
exploit_scenario: |-
|
|
189
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
190
|
+
fix_template: |-
|
|
191
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
192
|
+
pattern-either:
|
|
193
|
+
- pattern: |-
|
|
194
|
+
SECRET_KEY = "django-insecure-hardcoded-secret"
|
|
195
|
+
- pattern-regex: 'Vulnerable:\\s*DJA\\-008\\b'
|
|
196
|
+
message: |-
|
|
197
|
+
RunSec Detection [DJA-008]: CWE-798
|
|
198
|
+
languages:
|
|
199
|
+
- generic
|
|
200
|
+
severity: WARNING
|
|
201
|
+
- id: runsec.domain-data-privacy.dja-010
|
|
202
|
+
metadata:
|
|
203
|
+
runsec_version: v1.0
|
|
204
|
+
confidence: |-
|
|
205
|
+
0.9
|
|
206
|
+
exploit_scenario: |-
|
|
207
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
208
|
+
fix_template: |-
|
|
209
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
210
|
+
pattern-either:
|
|
211
|
+
- pattern: |-
|
|
212
|
+
try:
|
|
213
|
+
...
|
|
214
|
+
except Exception as e:
|
|
215
|
+
return JsonResponse({"error": str(e)}, status=500)
|
|
216
|
+
- pattern-regex: 'Vulnerable:\\s*DJA\\-010\\b'
|
|
217
|
+
message: |-
|
|
218
|
+
RunSec Detection [DJA-010]: CWE-209
|
|
219
|
+
languages:
|
|
220
|
+
- generic
|
|
221
|
+
severity: WARNING
|
|
222
|
+
- id: runsec.domain-data-privacy.dja-015
|
|
223
|
+
metadata:
|
|
224
|
+
runsec_version: v1.0
|
|
225
|
+
confidence: |-
|
|
226
|
+
0.9
|
|
227
|
+
exploit_scenario: |-
|
|
228
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
229
|
+
fix_template: |-
|
|
230
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
231
|
+
pattern-either:
|
|
232
|
+
- pattern: |-
|
|
233
|
+
LOGOUT_REDIRECT_URL = request.GET.get("next")
|
|
234
|
+
- pattern-regex: 'Vulnerable:\\s*DJA\\-015\\b'
|
|
235
|
+
message: |-
|
|
236
|
+
RunSec Detection [DJA-015]: CWE-601
|
|
237
|
+
languages:
|
|
238
|
+
- generic
|
|
239
|
+
severity: WARNING
|
|
240
|
+
- id: runsec.domain-data-privacy.dja-018
|
|
241
|
+
metadata:
|
|
242
|
+
runsec_version: v1.0
|
|
243
|
+
confidence: |-
|
|
244
|
+
0.9
|
|
245
|
+
exploit_scenario: |-
|
|
246
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
247
|
+
fix_template: |-
|
|
248
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
249
|
+
pattern-either:
|
|
250
|
+
- pattern: |-
|
|
251
|
+
class PaymentsView(View):
|
|
252
|
+
def dispatch(self, request, *args, **kwargs):
|
|
253
|
+
...
|
|
254
|
+
- pattern-regex: 'Vulnerable:\\s*DJA\\-018\\b'
|
|
255
|
+
message: |-
|
|
256
|
+
RunSec Detection [DJA-018]: CWE-20
|
|
257
|
+
languages:
|
|
258
|
+
- generic
|
|
259
|
+
severity: WARNING
|
|
260
|
+
- id: runsec.domain-data-privacy.mob-021
|
|
261
|
+
metadata:
|
|
262
|
+
runsec_version: v1.0
|
|
263
|
+
confidence: |-
|
|
264
|
+
0.9
|
|
265
|
+
exploit_scenario: |-
|
|
266
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
267
|
+
fix_template: |-
|
|
268
|
+
Включить window.setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE) для защиты экрана от скриншотов и записи.
|
|
269
|
+
pattern-either:
|
|
270
|
+
- pattern: |-
|
|
271
|
+
class MainActivity: FlutterActivity() {
|
|
272
|
+
override fun onCreate(...) {
|
|
273
|
+
super.onCreate(...)
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
- pattern-regex: 'Vulnerable:\\s*MOB\\-021\\b'
|
|
277
|
+
message: |-
|
|
278
|
+
RunSec Detection [MOB-021]: Silk Mobile SAR
|
|
279
|
+
languages:
|
|
280
|
+
- generic
|
|
281
|
+
severity: WARNING
|
|
282
|
+
- id: runsec.domain-data-privacy.njs-005
|
|
283
|
+
metadata:
|
|
284
|
+
runsec_version: v1.0
|
|
285
|
+
confidence: |-
|
|
286
|
+
0.9
|
|
287
|
+
exploit_scenario: |-
|
|
288
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
289
|
+
fix_template: |-
|
|
290
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
291
|
+
pattern-either:
|
|
292
|
+
- pattern: |-
|
|
293
|
+
# no process.on("uncaughtException")
|
|
294
|
+
# no process.on("unhandledRejection")
|
|
295
|
+
- pattern-regex: 'Vulnerable:\\s*NJS\\-005\\b'
|
|
296
|
+
message: |-
|
|
297
|
+
RunSec Detection [NJS-005]: Node.js Production Hardening
|
|
298
|
+
languages:
|
|
299
|
+
- generic
|
|
300
|
+
severity: WARNING
|
|
301
|
+
- id: runsec.domain-data-privacy.njs-019
|
|
302
|
+
metadata:
|
|
303
|
+
runsec_version: v1.0
|
|
304
|
+
confidence: |-
|
|
305
|
+
0.9
|
|
306
|
+
exploit_scenario: |-
|
|
307
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
308
|
+
fix_template: |-
|
|
309
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
310
|
+
pattern-either:
|
|
311
|
+
- pattern: |-
|
|
312
|
+
if (process.env.VIP_MODE === "1") approveTransfer()
|
|
313
|
+
- pattern-regex: 'Vulnerable:\\s*NJS\\-019\\b'
|
|
314
|
+
message: |-
|
|
315
|
+
RunSec Detection [NJS-019]: Twelve-Factor + Secure Config
|
|
316
|
+
languages:
|
|
317
|
+
- generic
|
|
318
|
+
severity: WARNING
|
|
319
|
+
- id: runsec.domain-data-privacy.njs-034
|
|
320
|
+
metadata:
|
|
321
|
+
runsec_version: v1.0
|
|
322
|
+
confidence: |-
|
|
323
|
+
0.9
|
|
324
|
+
exploit_scenario: |-
|
|
325
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
326
|
+
fix_template: |-
|
|
327
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
328
|
+
pattern-either:
|
|
329
|
+
- pattern: |-
|
|
330
|
+
readable.pipe(writable) (без .on("error"))
|
|
331
|
+
- pattern-regex: 'Vulnerable:\\s*NJS\\-034\\b'
|
|
332
|
+
message: |-
|
|
333
|
+
RunSec Detection [NJS-034]: Node.js Streams Security
|
|
334
|
+
languages:
|
|
335
|
+
- generic
|
|
336
|
+
severity: WARNING
|
|
337
|
+
- id: runsec.domain-data-privacy.fts-017
|
|
338
|
+
metadata:
|
|
339
|
+
runsec_version: v1.0
|
|
340
|
+
confidence: |-
|
|
341
|
+
0.9
|
|
342
|
+
exploit_scenario: |-
|
|
343
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
344
|
+
fix_template: |-
|
|
345
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
346
|
+
pattern-either:
|
|
347
|
+
- pattern: |-
|
|
348
|
+
window.addEventListener("message", (e) => JSON.parse(e.data))
|
|
349
|
+
- pattern-regex: 'Vulnerable:\\s*FTS\\-017\\b'
|
|
350
|
+
message: |-
|
|
351
|
+
RunSec Detection [FTS-017]: OWASP HTML5 Messaging Security
|
|
352
|
+
languages:
|
|
353
|
+
- generic
|
|
354
|
+
severity: WARNING
|
|
355
|
+
- id: runsec.domain-data-privacy.fts-020
|
|
356
|
+
metadata:
|
|
357
|
+
runsec_version: v1.0
|
|
358
|
+
confidence: |-
|
|
359
|
+
0.9
|
|
360
|
+
exploit_scenario: |-
|
|
361
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
362
|
+
fix_template: |-
|
|
363
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
364
|
+
pattern-either:
|
|
365
|
+
- pattern: |-
|
|
366
|
+
doCritical().then(saveAudit)
|
|
367
|
+
async function run(){ await step(); } (без try/catch)
|
|
368
|
+
- pattern-regex: 'Vulnerable:\\s*FTS\\-020\\b'
|
|
369
|
+
message: |-
|
|
370
|
+
RunSec Detection [FTS-020]: Async Error Handling Best Practices
|
|
371
|
+
languages:
|
|
372
|
+
- generic
|
|
373
|
+
severity: WARNING
|
|
374
|
+
- id: runsec.domain-data-privacy.cwe-327-py
|
|
375
|
+
metadata:
|
|
376
|
+
runsec_version: v1.0
|
|
377
|
+
confidence: |-
|
|
378
|
+
0.9
|
|
379
|
+
exploit_scenario: |-
|
|
380
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
381
|
+
fix_template: |-
|
|
382
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
383
|
+
pattern-either:
|
|
384
|
+
- pattern: |-
|
|
385
|
+
hashlib.md5(data).hexdigest()
|
|
386
|
+
hashlib.sha1(data).digest()
|
|
387
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-327\\-PY\\b'
|
|
388
|
+
message: |-
|
|
389
|
+
RunSec Detection [CWE-327-PY]: CWE Compliance
|
|
390
|
+
languages:
|
|
391
|
+
- generic
|
|
392
|
+
severity: WARNING
|
|
393
|
+
- id: runsec.domain-data-privacy.cwe-328-py
|
|
394
|
+
metadata:
|
|
395
|
+
runsec_version: v1.0
|
|
396
|
+
confidence: |-
|
|
397
|
+
0.9
|
|
398
|
+
exploit_scenario: |-
|
|
399
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
400
|
+
fix_template: |-
|
|
401
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
402
|
+
pattern-either:
|
|
403
|
+
- pattern: |-
|
|
404
|
+
Cipher(algorithms.AES(key), modes.ECB())
|
|
405
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-328\\-PY\\b'
|
|
406
|
+
message: |-
|
|
407
|
+
RunSec Detection [CWE-328-PY]: CWE Compliance
|
|
408
|
+
languages:
|
|
409
|
+
- generic
|
|
410
|
+
severity: WARNING
|
|
411
|
+
- id: runsec.domain-data-privacy.cwe-338-py
|
|
412
|
+
metadata:
|
|
413
|
+
runsec_version: v1.0
|
|
414
|
+
confidence: |-
|
|
415
|
+
0.9
|
|
416
|
+
exploit_scenario: |-
|
|
417
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
418
|
+
fix_template: |-
|
|
419
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
420
|
+
pattern-either:
|
|
421
|
+
- pattern: |-
|
|
422
|
+
token = str(random.random())
|
|
423
|
+
pwd = str(random.randint(100000, 999999))
|
|
424
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-338\\-PY\\b'
|
|
425
|
+
message: |-
|
|
426
|
+
RunSec Detection [CWE-338-PY]: CWE Compliance
|
|
427
|
+
languages:
|
|
428
|
+
- generic
|
|
429
|
+
severity: WARNING
|
|
430
|
+
- id: runsec.domain-data-privacy.cwe-327-js
|
|
431
|
+
metadata:
|
|
432
|
+
runsec_version: v1.0
|
|
433
|
+
confidence: |-
|
|
434
|
+
0.9
|
|
435
|
+
exploit_scenario: |-
|
|
436
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
437
|
+
fix_template: |-
|
|
438
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
439
|
+
pattern-either:
|
|
440
|
+
- pattern: |-
|
|
441
|
+
crypto.createHash("md5").update(data).digest("hex")
|
|
442
|
+
crypto.createCipher("des", key)
|
|
443
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-327\\-JS\\b'
|
|
444
|
+
message: |-
|
|
445
|
+
RunSec Detection [CWE-327-JS]: CWE Compliance
|
|
446
|
+
languages:
|
|
447
|
+
- generic
|
|
448
|
+
severity: WARNING
|
|
449
|
+
- id: runsec.domain-data-privacy.cwe-338-js
|
|
450
|
+
metadata:
|
|
451
|
+
runsec_version: v1.0
|
|
452
|
+
confidence: |-
|
|
453
|
+
0.9
|
|
454
|
+
exploit_scenario: |-
|
|
455
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
456
|
+
fix_template: |-
|
|
457
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
458
|
+
pattern-either:
|
|
459
|
+
- pattern: |-
|
|
460
|
+
const sid = Math.random().toString(36).slice(2)
|
|
461
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-338\\-JS\\b'
|
|
462
|
+
message: |-
|
|
463
|
+
RunSec Detection [CWE-338-JS]: CWE Compliance
|
|
464
|
+
languages:
|
|
465
|
+
- generic
|
|
466
|
+
severity: WARNING
|
|
467
|
+
- id: runsec.domain-data-privacy.cwe-200-py
|
|
468
|
+
metadata:
|
|
469
|
+
runsec_version: v1.0
|
|
470
|
+
confidence: |-
|
|
471
|
+
0.9
|
|
472
|
+
exploit_scenario: |-
|
|
473
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
474
|
+
fix_template: |-
|
|
475
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
476
|
+
pattern-either:
|
|
477
|
+
- pattern: |-
|
|
478
|
+
INTERNAL_API = "http://10.0.0.5:8080/admin"
|
|
479
|
+
SHEET_URL = "https://docs.google.com/spreadsheets/d/..."
|
|
480
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-200\\-PY\\b'
|
|
481
|
+
message: |-
|
|
482
|
+
RunSec Detection [CWE-200-PY]: CWE Compliance
|
|
483
|
+
languages:
|
|
484
|
+
- generic
|
|
485
|
+
severity: WARNING
|
|
486
|
+
- id: runsec.domain-data-privacy.cwe-200-js
|
|
487
|
+
metadata:
|
|
488
|
+
runsec_version: v1.0
|
|
489
|
+
confidence: |-
|
|
490
|
+
0.9
|
|
491
|
+
exploit_scenario: |-
|
|
492
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
493
|
+
fix_template: |-
|
|
494
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
495
|
+
pattern-either:
|
|
496
|
+
- pattern: |-
|
|
497
|
+
toString(){ return "User(token="+this.token+",password="+this.password+")"; }
|
|
498
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-200\\-JS\\b'
|
|
499
|
+
message: |-
|
|
500
|
+
RunSec Detection [CWE-200-JS]: CWE Compliance
|
|
501
|
+
languages:
|
|
502
|
+
- generic
|
|
503
|
+
severity: WARNING
|
|
504
|
+
- id: runsec.domain-data-privacy.cwe-117-py
|
|
505
|
+
metadata:
|
|
506
|
+
runsec_version: v1.0
|
|
507
|
+
confidence: |-
|
|
508
|
+
0.9
|
|
509
|
+
exploit_scenario: |-
|
|
510
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
511
|
+
fix_template: |-
|
|
512
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
513
|
+
pattern-either:
|
|
514
|
+
- pattern: |-
|
|
515
|
+
logging.info("user=%s", user_input) (где user_input содержит \n/\r)
|
|
516
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-117\\-PY\\b'
|
|
517
|
+
message: |-
|
|
518
|
+
RunSec Detection [CWE-117-PY]: CWE Compliance - Logic/Resources
|
|
519
|
+
languages:
|
|
520
|
+
- generic
|
|
521
|
+
severity: WARNING
|
|
522
|
+
- id: runsec.domain-data-privacy.cwe-117-js
|
|
523
|
+
metadata:
|
|
524
|
+
runsec_version: v1.0
|
|
525
|
+
confidence: |-
|
|
526
|
+
0.9
|
|
527
|
+
exploit_scenario: |-
|
|
528
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
529
|
+
fix_template: |-
|
|
530
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
531
|
+
pattern-either:
|
|
532
|
+
- pattern: |-
|
|
533
|
+
console.log(req.body)
|
|
534
|
+
winston.info(req.body.message) без sanitize
|
|
535
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-117\\-JS\\b'
|
|
536
|
+
message: |-
|
|
537
|
+
RunSec Detection [CWE-117-JS]: CWE Compliance - Logic/Resources
|
|
538
|
+
languages:
|
|
539
|
+
- generic
|
|
540
|
+
severity: WARNING
|
|
541
|
+
- id: runsec.domain-data-privacy.cwe-404-js
|
|
542
|
+
metadata:
|
|
543
|
+
runsec_version: v1.0
|
|
544
|
+
confidence: |-
|
|
545
|
+
0.9
|
|
546
|
+
exploit_scenario: |-
|
|
547
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
548
|
+
fix_template: |-
|
|
549
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
550
|
+
pattern-either:
|
|
551
|
+
- pattern: |-
|
|
552
|
+
const rs = fs.createReadStream(path) без обработки error/close
|
|
553
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-404\\-JS\\b'
|
|
554
|
+
message: |-
|
|
555
|
+
RunSec Detection [CWE-404-JS]: CWE Compliance - Logic/Resources
|
|
556
|
+
languages:
|
|
557
|
+
- generic
|
|
558
|
+
severity: WARNING
|
|
559
|
+
- id: runsec.domain-data-privacy.cwe-312-js
|
|
560
|
+
metadata:
|
|
561
|
+
runsec_version: v1.0
|
|
562
|
+
confidence: |-
|
|
563
|
+
0.9
|
|
564
|
+
exploit_scenario: |-
|
|
565
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
566
|
+
fix_template: |-
|
|
567
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
568
|
+
pattern-either:
|
|
569
|
+
- pattern: |-
|
|
570
|
+
localStorage.setItem("token", accessToken)
|
|
571
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-312\\-JS\\b'
|
|
572
|
+
message: |-
|
|
573
|
+
RunSec Detection [CWE-312-JS]: CWE Compliance Final
|
|
574
|
+
languages:
|
|
575
|
+
- generic
|
|
576
|
+
severity: WARNING
|
|
577
|
+
- id: runsec.domain-data-privacy.cwe-312-py
|
|
578
|
+
metadata:
|
|
579
|
+
runsec_version: v1.0
|
|
580
|
+
confidence: |-
|
|
581
|
+
0.9
|
|
582
|
+
exploit_scenario: |-
|
|
583
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
584
|
+
fix_template: |-
|
|
585
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
586
|
+
pattern-either:
|
|
587
|
+
- pattern: |-
|
|
588
|
+
DB_PASSWORD = "supersecret" в settings.py
|
|
589
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-312\\-PY\\b'
|
|
590
|
+
message: |-
|
|
591
|
+
RunSec Detection [CWE-312-PY]: CWE Compliance Final
|
|
592
|
+
languages:
|
|
593
|
+
- generic
|
|
594
|
+
severity: WARNING
|
|
595
|
+
- id: runsec.domain-data-privacy.cwe-532-py
|
|
596
|
+
metadata:
|
|
597
|
+
runsec_version: v1.0
|
|
598
|
+
confidence: |-
|
|
599
|
+
0.9
|
|
600
|
+
exploit_scenario: |-
|
|
601
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
602
|
+
fix_template: |-
|
|
603
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
604
|
+
pattern-either:
|
|
605
|
+
- pattern: |-
|
|
606
|
+
logger.info("password=%s", password)
|
|
607
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-532\\-PY\\b'
|
|
608
|
+
message: |-
|
|
609
|
+
RunSec Detection [CWE-532-PY]: CWE Compliance Final
|
|
610
|
+
languages:
|
|
611
|
+
- generic
|
|
612
|
+
severity: WARNING
|
|
613
|
+
- id: runsec.domain-data-privacy.cwe-312-env
|
|
614
|
+
metadata:
|
|
615
|
+
runsec_version: v1.0
|
|
616
|
+
confidence: |-
|
|
617
|
+
0.9
|
|
618
|
+
exploit_scenario: |-
|
|
619
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
620
|
+
fix_template: |-
|
|
621
|
+
Передавать секреты через Secret Manager/ESO/Vault, исключать plaintext ENV в Docker/K8s manifests.
|
|
622
|
+
pattern-either:
|
|
623
|
+
- pattern: |-
|
|
624
|
+
ENV DB_PASSWORD=secret
|
|
625
|
+
export API_TOKEN=plain
|
|
626
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-312\\-ENV\\b'
|
|
627
|
+
message: |-
|
|
628
|
+
RunSec Detection [CWE-312-ENV]: CWE Final Certification
|
|
629
|
+
languages:
|
|
630
|
+
- generic
|
|
631
|
+
severity: WARNING
|
|
632
|
+
- id: runsec.domain-data-privacy.cwe-532-py-decorator
|
|
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
|
+
@log_request декоратор пишет полный payload с PII
|
|
644
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-532\\-PY\\-DECORATOR\\b'
|
|
645
|
+
message: |-
|
|
646
|
+
RunSec Detection [CWE-532-PY-DECORATOR]: CWE Final Certification
|
|
647
|
+
languages:
|
|
648
|
+
- generic
|
|
649
|
+
severity: WARNING
|
|
650
|
+
- id: runsec.domain-data-privacy.cwe-117-universal-crlf
|
|
651
|
+
metadata:
|
|
652
|
+
runsec_version: v1.0
|
|
653
|
+
confidence: |-
|
|
654
|
+
0.9
|
|
655
|
+
exploit_scenario: |-
|
|
656
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
657
|
+
fix_template: |-
|
|
658
|
+
Перед логированием принудительно заменять/экранировать \r и \n (например, \\r/\\n), применять centralized log sanitizer.
|
|
659
|
+
pattern-either:
|
|
660
|
+
- pattern: |-
|
|
661
|
+
logger.info("msg=%s", user_input) где user_input содержит \r\n
|
|
662
|
+
console.log(req.body.message) без sanitize
|
|
663
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-117\\-UNIVERSAL\\-CRLF\\b'
|
|
664
|
+
message: |-
|
|
665
|
+
RunSec Detection [CWE-117-UNIVERSAL-CRLF]: CWE Final Certification
|
|
666
|
+
languages:
|
|
667
|
+
- generic
|
|
668
|
+
severity: WARNING
|
|
669
|
+
- id: runsec.domain-data-privacy.cwe-74-py-ldap
|
|
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
|
+
conn.search(base_dn, "(uid=" + username + ")")
|
|
681
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-74\\-PY\\-LDAP\\b'
|
|
682
|
+
message: |-
|
|
683
|
+
RunSec Detection [CWE-74-PY-LDAP]: CWE Final Certification
|
|
684
|
+
languages:
|
|
685
|
+
- generic
|
|
686
|
+
severity: WARNING
|
|
687
|
+
- id: runsec.domain-data-privacy.cwe-74-js-ldap
|
|
688
|
+
metadata:
|
|
689
|
+
runsec_version: v1.0
|
|
690
|
+
confidence: |-
|
|
691
|
+
0.9
|
|
692
|
+
exploit_scenario: |-
|
|
693
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
694
|
+
fix_template: |-
|
|
695
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
696
|
+
pattern-either:
|
|
697
|
+
- pattern: |-
|
|
698
|
+
const filter = "(uid=" + req.query.user + ")"
|
|
699
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-74\\-JS\\-LDAP\\b'
|
|
700
|
+
message: |-
|
|
701
|
+
RunSec Detection [CWE-74-JS-LDAP]: CWE Final Certification
|
|
702
|
+
languages:
|
|
703
|
+
- generic
|
|
704
|
+
severity: WARNING
|
|
705
|
+
- id: runsec.domain-data-privacy.cwe-359-axios-params-leak
|
|
706
|
+
metadata:
|
|
707
|
+
runsec_version: v1.0
|
|
708
|
+
confidence: |-
|
|
709
|
+
0.9
|
|
710
|
+
exploit_scenario: |-
|
|
711
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
712
|
+
fix_template: |-
|
|
713
|
+
Не передавать секреты в query string; использовать Authorization header/body и redaction policy для логов/телеметрии.
|
|
714
|
+
pattern-either:
|
|
715
|
+
- pattern: |-
|
|
716
|
+
axios.get(url, { params: { token, password, secret } })
|
|
717
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-359\\-AXIOS\\-PARAMS\\-LEAK\\b'
|
|
718
|
+
message: |-
|
|
719
|
+
RunSec Detection [CWE-359-AXIOS-PARAMS-LEAK]: CWE Final Certification
|
|
720
|
+
languages:
|
|
721
|
+
- generic
|
|
722
|
+
severity: WARNING
|
|
723
|
+
- id: runsec.domain-data-privacy.cwe-524-axios-cache-auth
|
|
724
|
+
metadata:
|
|
725
|
+
runsec_version: v1.0
|
|
726
|
+
confidence: |-
|
|
727
|
+
0.9
|
|
728
|
+
exploit_scenario: |-
|
|
729
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
730
|
+
fix_template: |-
|
|
731
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
732
|
+
pattern-either:
|
|
733
|
+
- pattern: |-
|
|
734
|
+
axios.get("/api/user/profile") без cache headers
|
|
735
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-524\\-AXIOS\\-CACHE\\-AUTH\\b'
|
|
736
|
+
message: |-
|
|
737
|
+
RunSec Detection [CWE-524-AXIOS-CACHE-AUTH]: CWE Final Certification
|
|
738
|
+
languages:
|
|
739
|
+
- generic
|
|
740
|
+
severity: WARNING
|
|
741
|
+
- id: runsec.domain-data-privacy.cwe-200-nextjs-client-env
|
|
742
|
+
metadata:
|
|
743
|
+
runsec_version: v1.0
|
|
744
|
+
confidence: |-
|
|
745
|
+
0.9
|
|
746
|
+
exploit_scenario: |-
|
|
747
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
748
|
+
fix_template: |-
|
|
749
|
+
Validate data with Zod and sanitize DOM/HTML sinks with DOMPurify before rendering.
|
|
750
|
+
pattern-either:
|
|
751
|
+
- pattern: |-
|
|
752
|
+
"use client" + process.env.DB_PASSWORD/process.env.API_SECRET
|
|
753
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-200\\-NEXTJS\\-CLIENT\\-ENV\\b'
|
|
754
|
+
message: |-
|
|
755
|
+
RunSec Detection [CWE-200-NEXTJS-CLIENT-ENV]: CWE Final Certification
|
|
756
|
+
languages:
|
|
757
|
+
- generic
|
|
758
|
+
severity: WARNING
|
|
759
|
+
- id: runsec.domain-data-privacy.cwe-200-openrouter-apikey-leak
|
|
760
|
+
metadata:
|
|
761
|
+
runsec_version: v1.0
|
|
762
|
+
confidence: |-
|
|
763
|
+
0.9
|
|
764
|
+
exploit_scenario: |-
|
|
765
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
766
|
+
fix_template: |-
|
|
767
|
+
Хранить ключи только во внешнем secret manager/env, маскировать в логах и исключать из репозитория/trace output.
|
|
768
|
+
pattern-either:
|
|
769
|
+
- pattern: |-
|
|
770
|
+
OPENROUTER_API_KEY = "sk-..."
|
|
771
|
+
logger.info(api_key)
|
|
772
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-200\\-OPENROUTER\\-APIKEY\\-LEAK\\b'
|
|
773
|
+
message: |-
|
|
774
|
+
RunSec Detection [CWE-200-OPENROUTER-APIKEY-LEAK]: CWE Final Certification
|
|
775
|
+
languages:
|
|
776
|
+
- generic
|
|
777
|
+
severity: WARNING
|
|
778
|
+
- id: runsec.domain-data-privacy.cwe-922-fastapi-header-log
|
|
779
|
+
metadata:
|
|
780
|
+
runsec_version: v1.0
|
|
781
|
+
confidence: |-
|
|
782
|
+
0.9
|
|
783
|
+
exploit_scenario: |-
|
|
784
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
785
|
+
fix_template: |-
|
|
786
|
+
Use strict Pydantic BaseModel schemas for input/output, including response_model and field allowlists.
|
|
787
|
+
pattern-either:
|
|
788
|
+
- pattern: |-
|
|
789
|
+
logger.info("headers=%s", dict(request.headers))
|
|
790
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-922\\-FASTAPI\\-HEADER\\-LOG\\b'
|
|
791
|
+
message: |-
|
|
792
|
+
RunSec Detection [CWE-922-FASTAPI-HEADER-LOG]: CWE Final Certification
|
|
793
|
+
languages:
|
|
794
|
+
- generic
|
|
795
|
+
severity: WARNING
|
|
796
|
+
- id: runsec.domain-data-privacy.cwe-798-csh-config-secrets
|
|
797
|
+
metadata:
|
|
798
|
+
runsec_version: v1.0
|
|
799
|
+
confidence: |-
|
|
800
|
+
0.9
|
|
801
|
+
exploit_scenario: |-
|
|
802
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
803
|
+
fix_template: |-
|
|
804
|
+
Use using/try-finally and safe .NET APIs; enforce strict allowlists for untrusted input.
|
|
805
|
+
pattern-either:
|
|
806
|
+
- pattern: |-
|
|
807
|
+
<add key="ApiKey" value="secret-123"/>
|
|
808
|
+
<Setting Name="Password" ...>
|
|
809
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-798\\-CSH\\-CONFIG\\-SECRETS\\b'
|
|
810
|
+
message: |-
|
|
811
|
+
RunSec Detection [CWE-798-CSH-CONFIG-SECRETS]: CWE Final Certification
|
|
812
|
+
languages:
|
|
813
|
+
- generic
|
|
814
|
+
severity: WARNING
|
|
815
|
+
- id: runsec.domain-data-privacy.cwe-384-csh-static-token-context
|
|
816
|
+
metadata:
|
|
817
|
+
runsec_version: v1.0
|
|
818
|
+
confidence: |-
|
|
819
|
+
0.9
|
|
820
|
+
exploit_scenario: |-
|
|
821
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
822
|
+
fix_template: |-
|
|
823
|
+
Use using/try-finally and safe .NET APIs; enforce strict allowlists for untrusted input.
|
|
824
|
+
pattern-either:
|
|
825
|
+
- pattern: |-
|
|
826
|
+
public static string AccessToken;
|
|
827
|
+
public static UserContext CurrentUser;
|
|
828
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-384\\-CSH\\-STATIC\\-TOKEN\\-CONTEXT\\b'
|
|
829
|
+
message: |-
|
|
830
|
+
RunSec Detection [CWE-384-CSH-STATIC-TOKEN-CONTEXT]: CWE Final Certification
|
|
831
|
+
languages:
|
|
832
|
+
- generic
|
|
833
|
+
severity: WARNING
|
|
834
|
+
- id: runsec.domain-data-privacy.cwe-532-csh-office-pii-log
|
|
835
|
+
metadata:
|
|
836
|
+
runsec_version: v1.0
|
|
837
|
+
confidence: |-
|
|
838
|
+
0.9
|
|
839
|
+
exploit_scenario: |-
|
|
840
|
+
Атакующий доставляет входные данные, соответствующие anti-pattern; реальный ущерб зависит от приёмника (sink), конфигурации и границ доверия.
|
|
841
|
+
fix_template: |-
|
|
842
|
+
Use using/try-finally and safe .NET APIs; enforce strict allowlists for untrusted input.
|
|
843
|
+
pattern-either:
|
|
844
|
+
- pattern: |-
|
|
845
|
+
logger.Info(mail.SenderEmailAddress)
|
|
846
|
+
File.AppendAllText(log, doc.FullName)
|
|
847
|
+
- pattern-regex: 'Vulnerable:\\s*CWE\\-532\\-CSH\\-OFFICE\\-PII\\-LOG\\b'
|
|
848
|
+
message: |-
|
|
849
|
+
RunSec Detection [CWE-532-CSH-OFFICE-PII-LOG]: CWE Final Certification
|
|
850
|
+
languages:
|
|
851
|
+
- generic
|
|
852
|
+
severity: WARNING
|