narvy-cli 1.0.0__py3-none-any.whl
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.
- narvy/__init__.py +3 -0
- narvy/android/__init__.py +0 -0
- narvy/android/source_analyzer.py +268 -0
- narvy/android/split_bundle.py +475 -0
- narvy/android_rule_context.py +196 -0
- narvy/apk_memory_preflight.py +248 -0
- narvy/auth.py +40 -0
- narvy/ci_templates/bitbucket.yml +25 -0
- narvy/ci_templates/github.yml +60 -0
- narvy/ci_templates/gitlab.yml +32 -0
- narvy/cloud/__init__.py +0 -0
- narvy/cloud/aws_scan.py +1188 -0
- narvy/comment_filter.py +134 -0
- narvy/crypto_taint_lite.py +82 -0
- narvy/decompiler.py +337 -0
- narvy/doctor.py +244 -0
- narvy/host/__init__.py +0 -0
- narvy/host/audit.py +157 -0
- narvy/host/host_knowledge.py +982 -0
- narvy/host/lynis_bootstrap.py +400 -0
- narvy/host/lynis_parser.py +358 -0
- narvy/host/narvy_checks.py +789 -0
- narvy/host/report.py +69 -0
- narvy/host/ssh_exec.py +219 -0
- narvy/ios/__init__.py +0 -0
- narvy/ios/binary_analyzer.py +1201 -0
- narvy/ios/plist_checks.py +249 -0
- narvy/ios/source_analyzer.py +301 -0
- narvy/ios/third_party_filter.py +242 -0
- narvy/ios/trust_all_context.py +66 -0
- narvy/main.py +1983 -0
- narvy/native_hardening.py +503 -0
- narvy/reporter.py +151 -0
- narvy/rule_engine.py +57 -0
- narvy/rules/android/config.yml +77 -0
- narvy/rules/android/crypto.yml +34 -0
- narvy/rules/android/secrets.yml +161 -0
- narvy/rules/android/storage.yml +24 -0
- narvy/rules/android/webview.yml +23 -0
- narvy/rules/android.yml +219 -0
- narvy/rules/ios/objc/crypto.yml +56 -0
- narvy/rules/ios/objc/network.yml +67 -0
- narvy/rules/ios/objc/secrets.yml +79 -0
- narvy/rules/ios/objc/storage.yml +45 -0
- narvy/rules/ios/objc/webview.yml +45 -0
- narvy/rules/ios_swift.yml +327 -0
- narvy/rules/web/go.yml +2837 -0
- narvy/rules/web/java.yml +1576 -0
- narvy/rules/web/javascript.yml +3683 -0
- narvy/rules/web/kotlin.yml +413 -0
- narvy/rules/web/local/csharp_narvy/config.yml +61 -0
- narvy/rules/web/local/csharp_narvy/crypto.yml +64 -0
- narvy/rules/web/local/csharp_narvy/deserialization.yml +59 -0
- narvy/rules/web/local/csharp_narvy/injection.yml +122 -0
- narvy/rules/web/local/csharp_narvy/xxe.yml +48 -0
- narvy/rules/web/local/java_narvy/auth_jwt.yml +134 -0
- narvy/rules/web/local/java_narvy/deserialization.yml +108 -0
- narvy/rules/web/local/java_narvy/mybatis.yml +39 -0
- narvy/rules/web/local/java_narvy/snakeyaml.yml +34 -0
- narvy/rules/web/local/java_narvy/spring_authz.yml +32 -0
- narvy/rules/web/local/java_narvy/spring_config.yml +67 -0
- narvy/rules/web/local/java_narvy/spring_hardening.yml +291 -0
- narvy/rules/web/local/java_narvy/sqli.yml +235 -0
- narvy/rules/web/local/java_narvy/xxe.yml +212 -0
- narvy/rules/web/php.yml +1644 -0
- narvy/rules/web/python.yml +3967 -0
- narvy/rules/web/ruby.yml +703 -0
- narvy/rules/web/rust.yml +258 -0
- narvy/rules/web/secrets.yml +1420 -0
- narvy/rules/web/secrets_supplement.yml +383 -0
- narvy/sca/__init__.py +1 -0
- narvy/sca/android_deps.py +349 -0
- narvy/sca/ios_deps.py +578 -0
- narvy/sca/osv_client.py +617 -0
- narvy/sca/web_deps.py +955 -0
- narvy/scope_config.py +195 -0
- narvy/semgrep_engine.py +219 -0
- narvy/stack_protector_evidence.py +96 -0
- narvy/third_party_filter.py +211 -0
- narvy/uploader.py +92 -0
- narvy/weak_prng_context.py +270 -0
- narvy/web/__init__.py +0 -0
- narvy/web/nuclei_binary.py +105 -0
- narvy/web/scan_blocklist.py +96 -0
- narvy/web/scanner.py +842 -0
- narvy/web/source_analyzer.py +714 -0
- narvy/web/ssrf_guard.py +374 -0
- narvy_cli-1.0.0.dist-info/METADATA +165 -0
- narvy_cli-1.0.0.dist-info/RECORD +93 -0
- narvy_cli-1.0.0.dist-info/WHEEL +5 -0
- narvy_cli-1.0.0.dist-info/entry_points.txt +2 -0
- narvy_cli-1.0.0.dist-info/licenses/LICENSE +202 -0
- narvy_cli-1.0.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,1420 @@
|
|
|
1
|
+
# Cross-language hardcoded-credential rules, authored by Narvy.
|
|
2
|
+
# Provider tokens and generic high-entropy assignments. Loaded for every stack.
|
|
3
|
+
|
|
4
|
+
rules:
|
|
5
|
+
- id: narvy.secrets.aws-access-key-id
|
|
6
|
+
patterns:
|
|
7
|
+
- pattern-regex: \b(AKIA|ASIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA)[A-Z0-9]{16}\b
|
|
8
|
+
- pattern-not-regex: (?i)(example|sample|test|fake|dummy)
|
|
9
|
+
languages:
|
|
10
|
+
- regex
|
|
11
|
+
message: AWS Access Key ID detected (AKIA/ASIA/AGPA/... 16-char format). This credential grants direct
|
|
12
|
+
API access to an AWS account. Revoke it in IAM immediately and load credentials from the environment,
|
|
13
|
+
an instance role, or a secrets manager instead.
|
|
14
|
+
severity: ERROR
|
|
15
|
+
metadata:
|
|
16
|
+
cwe:
|
|
17
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
18
|
+
owasp:
|
|
19
|
+
- A07:2021 - Identification and Authentication Failures
|
|
20
|
+
- A07:2025 - Authentication Failures
|
|
21
|
+
category: security
|
|
22
|
+
technology:
|
|
23
|
+
- secrets
|
|
24
|
+
- aws
|
|
25
|
+
confidence: HIGH
|
|
26
|
+
subcategory:
|
|
27
|
+
- vuln
|
|
28
|
+
likelihood: HIGH
|
|
29
|
+
impact: HIGH
|
|
30
|
+
vulnerability_class:
|
|
31
|
+
- Hard-coded Secrets
|
|
32
|
+
source: narvy-local
|
|
33
|
+
license: Apache-2.0
|
|
34
|
+
- id: narvy.secrets.aws-secret-access-key
|
|
35
|
+
patterns:
|
|
36
|
+
- pattern-regex: (?i)\baws[a-z0-9_]*secret[a-z0-9_]*\s*(=|:|=>)\s*['\"`]?[A-Za-z0-9/+]{40}['\"`]?
|
|
37
|
+
- pattern-not-regex: (?i)(example|sample|placeholder|dummy|xxxx|00000000|changeme)
|
|
38
|
+
languages:
|
|
39
|
+
- regex
|
|
40
|
+
message: A variable named like an AWS secret access key is assigned a 40-char base64-alphabet literal.
|
|
41
|
+
AWS secret keys must never be committed; rotate the key and read it from the environment or a secrets
|
|
42
|
+
manager.
|
|
43
|
+
severity: ERROR
|
|
44
|
+
metadata:
|
|
45
|
+
cwe:
|
|
46
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
47
|
+
owasp:
|
|
48
|
+
- A07:2021 - Identification and Authentication Failures
|
|
49
|
+
- A07:2025 - Authentication Failures
|
|
50
|
+
category: security
|
|
51
|
+
technology:
|
|
52
|
+
- secrets
|
|
53
|
+
- aws
|
|
54
|
+
confidence: MEDIUM
|
|
55
|
+
subcategory:
|
|
56
|
+
- vuln
|
|
57
|
+
likelihood: MEDIUM
|
|
58
|
+
impact: HIGH
|
|
59
|
+
vulnerability_class:
|
|
60
|
+
- Hard-coded Secrets
|
|
61
|
+
source: narvy-local
|
|
62
|
+
license: Apache-2.0
|
|
63
|
+
- id: narvy.secrets.aws-session-token
|
|
64
|
+
patterns:
|
|
65
|
+
- pattern-regex: (?i)aws_session_token\s*(=|:|=>)\s*['\"`]?[A-Za-z0-9/+=]{32,}['\"`]?
|
|
66
|
+
- pattern-not-regex: (?i)(example|sample|placeholder|dummy)
|
|
67
|
+
languages:
|
|
68
|
+
- regex
|
|
69
|
+
message: An AWS_SESSION_TOKEN-style variable is assigned a long literal value. Session tokens are short-lived
|
|
70
|
+
but still grant active AWS API access if leaked; do not hardcode them.
|
|
71
|
+
severity: ERROR
|
|
72
|
+
metadata:
|
|
73
|
+
cwe:
|
|
74
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
75
|
+
owasp:
|
|
76
|
+
- A07:2021 - Identification and Authentication Failures
|
|
77
|
+
- A07:2025 - Authentication Failures
|
|
78
|
+
category: security
|
|
79
|
+
technology:
|
|
80
|
+
- secrets
|
|
81
|
+
- aws
|
|
82
|
+
confidence: MEDIUM
|
|
83
|
+
subcategory:
|
|
84
|
+
- vuln
|
|
85
|
+
likelihood: MEDIUM
|
|
86
|
+
impact: HIGH
|
|
87
|
+
vulnerability_class:
|
|
88
|
+
- Hard-coded Secrets
|
|
89
|
+
source: narvy-local
|
|
90
|
+
license: Apache-2.0
|
|
91
|
+
- id: narvy.secrets.aws-appsync-key
|
|
92
|
+
pattern-regex: \bda2-[a-z0-9]{26}\b
|
|
93
|
+
languages:
|
|
94
|
+
- regex
|
|
95
|
+
message: AWS AppSync GraphQL API key detected (da2-... format).
|
|
96
|
+
severity: ERROR
|
|
97
|
+
metadata:
|
|
98
|
+
cwe:
|
|
99
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
100
|
+
owasp:
|
|
101
|
+
- A07:2021 - Identification and Authentication Failures
|
|
102
|
+
- A07:2025 - Authentication Failures
|
|
103
|
+
category: security
|
|
104
|
+
technology:
|
|
105
|
+
- secrets
|
|
106
|
+
- aws
|
|
107
|
+
- appsync
|
|
108
|
+
confidence: HIGH
|
|
109
|
+
subcategory:
|
|
110
|
+
- vuln
|
|
111
|
+
likelihood: MEDIUM
|
|
112
|
+
impact: HIGH
|
|
113
|
+
vulnerability_class:
|
|
114
|
+
- Hard-coded Secrets
|
|
115
|
+
source: narvy-local
|
|
116
|
+
license: Apache-2.0
|
|
117
|
+
- id: narvy.secrets.amazon-mws-token
|
|
118
|
+
pattern-regex: \bamzn\.mws\.[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b
|
|
119
|
+
languages:
|
|
120
|
+
- regex
|
|
121
|
+
message: Amazon Marketplace Web Service (MWS) auth token detected (amzn.mws.<uuid> format). This grants
|
|
122
|
+
seller-account API access.
|
|
123
|
+
severity: ERROR
|
|
124
|
+
metadata:
|
|
125
|
+
cwe:
|
|
126
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
127
|
+
owasp:
|
|
128
|
+
- A07:2021 - Identification and Authentication Failures
|
|
129
|
+
- A07:2025 - Authentication Failures
|
|
130
|
+
category: security
|
|
131
|
+
technology:
|
|
132
|
+
- secrets
|
|
133
|
+
- aws
|
|
134
|
+
confidence: HIGH
|
|
135
|
+
subcategory:
|
|
136
|
+
- vuln
|
|
137
|
+
likelihood: MEDIUM
|
|
138
|
+
impact: HIGH
|
|
139
|
+
vulnerability_class:
|
|
140
|
+
- Hard-coded Secrets
|
|
141
|
+
source: narvy-local
|
|
142
|
+
license: Apache-2.0
|
|
143
|
+
- id: narvy.secrets.terraform-aws-provider-static-credentials
|
|
144
|
+
patterns:
|
|
145
|
+
- pattern-inside: "provider \"aws\" {\n ...\n}\n"
|
|
146
|
+
- pattern-either:
|
|
147
|
+
- pattern: 'access_key = "..."
|
|
148
|
+
|
|
149
|
+
'
|
|
150
|
+
- pattern: 'secret_key = "..."
|
|
151
|
+
|
|
152
|
+
'
|
|
153
|
+
languages:
|
|
154
|
+
- hcl
|
|
155
|
+
message: A Terraform `provider "aws"` block hardcodes access_key/secret_key instead of using an instance
|
|
156
|
+
profile, SSO, or environment credentials. Anyone with read access to this .tf file (or state backend
|
|
157
|
+
history) gets live AWS credentials.
|
|
158
|
+
severity: ERROR
|
|
159
|
+
metadata:
|
|
160
|
+
cwe:
|
|
161
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
162
|
+
owasp:
|
|
163
|
+
- A07:2021 - Identification and Authentication Failures
|
|
164
|
+
- A07:2025 - Authentication Failures
|
|
165
|
+
category: security
|
|
166
|
+
technology:
|
|
167
|
+
- secrets
|
|
168
|
+
- aws
|
|
169
|
+
- terraform
|
|
170
|
+
confidence: MEDIUM
|
|
171
|
+
subcategory:
|
|
172
|
+
- vuln
|
|
173
|
+
likelihood: MEDIUM
|
|
174
|
+
impact: HIGH
|
|
175
|
+
vulnerability_class:
|
|
176
|
+
- Hard-coded Secrets
|
|
177
|
+
source: narvy-local
|
|
178
|
+
license: Apache-2.0
|
|
179
|
+
- id: narvy.secrets.terraform-lambda-env-credentials
|
|
180
|
+
patterns:
|
|
181
|
+
- pattern-inside: "resource \"aws_lambda_function\" \"...\" {\n ...\n environment {\n variables\
|
|
182
|
+
\ = {\n ...\n }\n }\n ...\n}\n"
|
|
183
|
+
- pattern: '$KEY = "..."
|
|
184
|
+
|
|
185
|
+
'
|
|
186
|
+
- metavariable-regex:
|
|
187
|
+
metavariable: $KEY
|
|
188
|
+
regex: ^(AWS_ACCESS_KEY_ID|AWS_SECRET_ACCESS_KEY|AWS_SESSION_TOKEN)$
|
|
189
|
+
languages:
|
|
190
|
+
- hcl
|
|
191
|
+
message: An AWS Lambda `environment { variables = {...} }` block hardcodes an AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY
|
|
192
|
+
/ AWS_SESSION_TOKEN literal. Lambda already has an execution role, so static keys in the function
|
|
193
|
+
definition leak through the console, CloudFormation template, and state file.
|
|
194
|
+
severity: ERROR
|
|
195
|
+
metadata:
|
|
196
|
+
cwe:
|
|
197
|
+
- 'CWE-326: Inadequate Encryption Strength'
|
|
198
|
+
owasp:
|
|
199
|
+
- A02:2021 - Cryptographic Failures
|
|
200
|
+
- A04:2025 - Cryptographic Failures
|
|
201
|
+
category: security
|
|
202
|
+
technology:
|
|
203
|
+
- secrets
|
|
204
|
+
- aws
|
|
205
|
+
- terraform
|
|
206
|
+
confidence: MEDIUM
|
|
207
|
+
subcategory:
|
|
208
|
+
- vuln
|
|
209
|
+
likelihood: MEDIUM
|
|
210
|
+
impact: HIGH
|
|
211
|
+
vulnerability_class:
|
|
212
|
+
- Cryptographic Issues
|
|
213
|
+
source: narvy-local
|
|
214
|
+
license: Apache-2.0
|
|
215
|
+
- id: narvy.secrets.terraform-rds-hardcoded-password
|
|
216
|
+
patterns:
|
|
217
|
+
- pattern-either:
|
|
218
|
+
- patterns:
|
|
219
|
+
- pattern: 'password = "..."
|
|
220
|
+
|
|
221
|
+
'
|
|
222
|
+
- pattern-inside: "resource \"aws_db_instance\" \"...\" {\n ...\n}\n"
|
|
223
|
+
- patterns:
|
|
224
|
+
- pattern: 'master_password = "..."
|
|
225
|
+
|
|
226
|
+
'
|
|
227
|
+
- pattern-inside: "resource \"aws_rds_cluster\" \"...\" {\n ...\n}\n"
|
|
228
|
+
languages:
|
|
229
|
+
- hcl
|
|
230
|
+
message: An `aws_db_instance` or `aws_rds_cluster` Terraform resource sets `password` / `master_password`
|
|
231
|
+
to a literal string instead of sourcing it from a `random_password` resource or a secrets manager
|
|
232
|
+
reference.
|
|
233
|
+
severity: WARNING
|
|
234
|
+
metadata:
|
|
235
|
+
cwe:
|
|
236
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
237
|
+
owasp:
|
|
238
|
+
- A07:2021 - Identification and Authentication Failures
|
|
239
|
+
- A07:2025 - Authentication Failures
|
|
240
|
+
category: security
|
|
241
|
+
technology:
|
|
242
|
+
- secrets
|
|
243
|
+
- aws
|
|
244
|
+
- terraform
|
|
245
|
+
confidence: MEDIUM
|
|
246
|
+
subcategory:
|
|
247
|
+
- vuln
|
|
248
|
+
likelihood: MEDIUM
|
|
249
|
+
impact: HIGH
|
|
250
|
+
vulnerability_class:
|
|
251
|
+
- Hard-coded Secrets
|
|
252
|
+
source: narvy-local
|
|
253
|
+
license: Apache-2.0
|
|
254
|
+
- id: narvy.secrets.python-boto3-hardcoded-credential
|
|
255
|
+
patterns:
|
|
256
|
+
- pattern-either:
|
|
257
|
+
- pattern: 'boto3.client(..., $CRED="...", ...)
|
|
258
|
+
|
|
259
|
+
'
|
|
260
|
+
- pattern: 'boto3.resource(..., $CRED="...", ...)
|
|
261
|
+
|
|
262
|
+
'
|
|
263
|
+
- pattern: 'boto3.Session(..., $CRED="...", ...)
|
|
264
|
+
|
|
265
|
+
'
|
|
266
|
+
- metavariable-regex:
|
|
267
|
+
metavariable: $CRED
|
|
268
|
+
regex: (aws_access_key_id|aws_secret_access_key|aws_session_token)$
|
|
269
|
+
languages:
|
|
270
|
+
- python
|
|
271
|
+
message: A boto3 client/resource/Session constructor is called with a literal string for aws_access_key_id
|
|
272
|
+
/ aws_secret_access_key / aws_session_token. Let boto3 pick up credentials from the environment, ~/.aws/credentials,
|
|
273
|
+
or an instance/task role instead.
|
|
274
|
+
severity: ERROR
|
|
275
|
+
metadata:
|
|
276
|
+
cwe:
|
|
277
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
278
|
+
owasp:
|
|
279
|
+
- A07:2021 - Identification and Authentication Failures
|
|
280
|
+
- A07:2025 - Authentication Failures
|
|
281
|
+
category: security
|
|
282
|
+
technology:
|
|
283
|
+
- secrets
|
|
284
|
+
- aws
|
|
285
|
+
- boto3
|
|
286
|
+
confidence: HIGH
|
|
287
|
+
subcategory:
|
|
288
|
+
- vuln
|
|
289
|
+
likelihood: HIGH
|
|
290
|
+
impact: MEDIUM
|
|
291
|
+
vulnerability_class:
|
|
292
|
+
- Hard-coded Secrets
|
|
293
|
+
source: narvy-local
|
|
294
|
+
license: Apache-2.0
|
|
295
|
+
- id: narvy.secrets.stripe-secret-key
|
|
296
|
+
pattern-regex: \bsk_live_[0-9a-zA-Z]{24,}\b
|
|
297
|
+
languages:
|
|
298
|
+
- regex
|
|
299
|
+
message: Stripe live secret key detected (sk_live_...). This key can move money and read all customer/payment
|
|
300
|
+
data on the account. Revoke it in the Stripe dashboard and use environment-provided credentials.
|
|
301
|
+
severity: ERROR
|
|
302
|
+
metadata:
|
|
303
|
+
cwe:
|
|
304
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
305
|
+
owasp:
|
|
306
|
+
- A07:2021 - Identification and Authentication Failures
|
|
307
|
+
- A07:2025 - Authentication Failures
|
|
308
|
+
category: security
|
|
309
|
+
technology:
|
|
310
|
+
- secrets
|
|
311
|
+
- stripe
|
|
312
|
+
confidence: HIGH
|
|
313
|
+
subcategory:
|
|
314
|
+
- vuln
|
|
315
|
+
likelihood: MEDIUM
|
|
316
|
+
impact: HIGH
|
|
317
|
+
vulnerability_class:
|
|
318
|
+
- Hard-coded Secrets
|
|
319
|
+
source: narvy-local
|
|
320
|
+
license: Apache-2.0
|
|
321
|
+
- id: narvy.secrets.stripe-restricted-key
|
|
322
|
+
pattern-regex: \brk_live_[0-9a-zA-Z]{24,}\b
|
|
323
|
+
languages:
|
|
324
|
+
- regex
|
|
325
|
+
message: Stripe restricted live API key detected (rk_live_...). Scope is narrower than a full secret
|
|
326
|
+
key but it still grants live API access and should not be hardcoded.
|
|
327
|
+
severity: ERROR
|
|
328
|
+
metadata:
|
|
329
|
+
cwe:
|
|
330
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
331
|
+
owasp:
|
|
332
|
+
- A07:2021 - Identification and Authentication Failures
|
|
333
|
+
- A07:2025 - Authentication Failures
|
|
334
|
+
category: security
|
|
335
|
+
technology:
|
|
336
|
+
- secrets
|
|
337
|
+
- stripe
|
|
338
|
+
confidence: HIGH
|
|
339
|
+
subcategory:
|
|
340
|
+
- vuln
|
|
341
|
+
likelihood: MEDIUM
|
|
342
|
+
impact: MEDIUM
|
|
343
|
+
vulnerability_class:
|
|
344
|
+
- Hard-coded Secrets
|
|
345
|
+
source: narvy-local
|
|
346
|
+
license: Apache-2.0
|
|
347
|
+
- id: narvy.secrets.square-access-token
|
|
348
|
+
pattern-regex: \bsq0atp-[0-9A-Za-z\-_]{22}\b
|
|
349
|
+
languages:
|
|
350
|
+
- regex
|
|
351
|
+
message: Square access token detected (sq0atp-... format).
|
|
352
|
+
severity: ERROR
|
|
353
|
+
metadata:
|
|
354
|
+
cwe:
|
|
355
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
356
|
+
owasp:
|
|
357
|
+
- A07:2021 - Identification and Authentication Failures
|
|
358
|
+
- A07:2025 - Authentication Failures
|
|
359
|
+
category: security
|
|
360
|
+
technology:
|
|
361
|
+
- secrets
|
|
362
|
+
- square
|
|
363
|
+
confidence: HIGH
|
|
364
|
+
subcategory:
|
|
365
|
+
- vuln
|
|
366
|
+
likelihood: MEDIUM
|
|
367
|
+
impact: MEDIUM
|
|
368
|
+
vulnerability_class:
|
|
369
|
+
- Hard-coded Secrets
|
|
370
|
+
source: narvy-local
|
|
371
|
+
license: Apache-2.0
|
|
372
|
+
- id: narvy.secrets.square-oauth-secret
|
|
373
|
+
pattern-regex: \bsq0csp-[0-9A-Za-z\-_]{43}\b
|
|
374
|
+
languages:
|
|
375
|
+
- regex
|
|
376
|
+
message: Square OAuth application secret detected (sq0csp-... format).
|
|
377
|
+
severity: ERROR
|
|
378
|
+
metadata:
|
|
379
|
+
cwe:
|
|
380
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
381
|
+
owasp:
|
|
382
|
+
- A07:2021 - Identification and Authentication Failures
|
|
383
|
+
- A07:2025 - Authentication Failures
|
|
384
|
+
category: security
|
|
385
|
+
technology:
|
|
386
|
+
- secrets
|
|
387
|
+
- square
|
|
388
|
+
confidence: HIGH
|
|
389
|
+
subcategory:
|
|
390
|
+
- vuln
|
|
391
|
+
likelihood: MEDIUM
|
|
392
|
+
impact: MEDIUM
|
|
393
|
+
vulnerability_class:
|
|
394
|
+
- Hard-coded Secrets
|
|
395
|
+
source: narvy-local
|
|
396
|
+
license: Apache-2.0
|
|
397
|
+
- id: narvy.secrets.paypal-braintree-token
|
|
398
|
+
pattern-regex: access_token\$production\$[0-9a-z]{16}\$[0-9a-z]{32}
|
|
399
|
+
languages:
|
|
400
|
+
- regex
|
|
401
|
+
message: PayPal / Braintree production access token detected (access_token$production$...$... format).
|
|
402
|
+
severity: ERROR
|
|
403
|
+
metadata:
|
|
404
|
+
cwe:
|
|
405
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
406
|
+
owasp:
|
|
407
|
+
- A07:2021 - Identification and Authentication Failures
|
|
408
|
+
- A07:2025 - Authentication Failures
|
|
409
|
+
category: security
|
|
410
|
+
technology:
|
|
411
|
+
- secrets
|
|
412
|
+
- paypal
|
|
413
|
+
- braintree
|
|
414
|
+
confidence: HIGH
|
|
415
|
+
subcategory:
|
|
416
|
+
- vuln
|
|
417
|
+
likelihood: MEDIUM
|
|
418
|
+
impact: MEDIUM
|
|
419
|
+
vulnerability_class:
|
|
420
|
+
- Hard-coded Secrets
|
|
421
|
+
source: narvy-local
|
|
422
|
+
license: Apache-2.0
|
|
423
|
+
- id: narvy.secrets.picatic-api-key
|
|
424
|
+
pattern-regex: \bsk_live_[0-9a-z]{32}\b
|
|
425
|
+
languages:
|
|
426
|
+
- regex
|
|
427
|
+
message: Picatic live secret key detected (sk_live_ + 32 lowercase alphanumeric). Note this shares the
|
|
428
|
+
sk_live_ prefix with Stripe; the 32-char lowercase-only body is Picatic's distinct format.
|
|
429
|
+
severity: ERROR
|
|
430
|
+
metadata:
|
|
431
|
+
cwe:
|
|
432
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
433
|
+
owasp:
|
|
434
|
+
- A07:2021 - Identification and Authentication Failures
|
|
435
|
+
- A07:2025 - Authentication Failures
|
|
436
|
+
category: security
|
|
437
|
+
technology:
|
|
438
|
+
- secrets
|
|
439
|
+
- picatic
|
|
440
|
+
confidence: LOW
|
|
441
|
+
subcategory:
|
|
442
|
+
- vuln
|
|
443
|
+
likelihood: MEDIUM
|
|
444
|
+
impact: MEDIUM
|
|
445
|
+
vulnerability_class:
|
|
446
|
+
- Hard-coded Secrets
|
|
447
|
+
source: narvy-local
|
|
448
|
+
license: Apache-2.0
|
|
449
|
+
- id: narvy.secrets.twilio-api-key
|
|
450
|
+
pattern-regex: \bSK[0-9a-fA-F]{32}\b
|
|
451
|
+
languages:
|
|
452
|
+
- regex
|
|
453
|
+
message: Twilio API key SID detected (SK followed by 32 hex chars). Pair with a leaked API secret this
|
|
454
|
+
grants full Twilio account API access (SMS, calls, billing).
|
|
455
|
+
severity: ERROR
|
|
456
|
+
metadata:
|
|
457
|
+
cwe:
|
|
458
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
459
|
+
owasp:
|
|
460
|
+
- A07:2021 - Identification and Authentication Failures
|
|
461
|
+
- A07:2025 - Authentication Failures
|
|
462
|
+
category: security
|
|
463
|
+
technology:
|
|
464
|
+
- secrets
|
|
465
|
+
- twilio
|
|
466
|
+
confidence: MEDIUM
|
|
467
|
+
subcategory:
|
|
468
|
+
- vuln
|
|
469
|
+
likelihood: MEDIUM
|
|
470
|
+
impact: MEDIUM
|
|
471
|
+
vulnerability_class:
|
|
472
|
+
- Hard-coded Secrets
|
|
473
|
+
source: narvy-local
|
|
474
|
+
license: Apache-2.0
|
|
475
|
+
- id: narvy.secrets.mailgun-api-key
|
|
476
|
+
pattern-regex: \bkey-[0-9a-zA-Z]{32}\b
|
|
477
|
+
languages:
|
|
478
|
+
- regex
|
|
479
|
+
message: Mailgun API key detected (key-... format, legacy but still accepted by Mailgun's v3 API).
|
|
480
|
+
severity: ERROR
|
|
481
|
+
metadata:
|
|
482
|
+
cwe:
|
|
483
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
484
|
+
owasp:
|
|
485
|
+
- A07:2021 - Identification and Authentication Failures
|
|
486
|
+
- A07:2025 - Authentication Failures
|
|
487
|
+
category: security
|
|
488
|
+
technology:
|
|
489
|
+
- secrets
|
|
490
|
+
- mailgun
|
|
491
|
+
confidence: LOW
|
|
492
|
+
subcategory:
|
|
493
|
+
- vuln
|
|
494
|
+
likelihood: MEDIUM
|
|
495
|
+
impact: MEDIUM
|
|
496
|
+
vulnerability_class:
|
|
497
|
+
- Hard-coded Secrets
|
|
498
|
+
source: narvy-local
|
|
499
|
+
license: Apache-2.0
|
|
500
|
+
- id: narvy.secrets.mailchimp-api-key
|
|
501
|
+
pattern-regex: \b[0-9a-f]{32}-us[0-9]{1,2}\b
|
|
502
|
+
languages:
|
|
503
|
+
- regex
|
|
504
|
+
message: MailChimp API key detected (32 hex chars + -usNN datacenter suffix).
|
|
505
|
+
severity: ERROR
|
|
506
|
+
metadata:
|
|
507
|
+
cwe:
|
|
508
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
509
|
+
owasp:
|
|
510
|
+
- A07:2021 - Identification and Authentication Failures
|
|
511
|
+
- A07:2025 - Authentication Failures
|
|
512
|
+
category: security
|
|
513
|
+
technology:
|
|
514
|
+
- secrets
|
|
515
|
+
- mailchimp
|
|
516
|
+
confidence: MEDIUM
|
|
517
|
+
subcategory:
|
|
518
|
+
- vuln
|
|
519
|
+
likelihood: MEDIUM
|
|
520
|
+
impact: MEDIUM
|
|
521
|
+
vulnerability_class:
|
|
522
|
+
- Hard-coded Secrets
|
|
523
|
+
source: narvy-local
|
|
524
|
+
license: Apache-2.0
|
|
525
|
+
- id: narvy.secrets.slack-token
|
|
526
|
+
pattern-either:
|
|
527
|
+
- pattern-regex: \bxox[baop]-[0-9]{10,13}-[0-9]{10,13}-[0-9a-zA-Z]{24,32}\b
|
|
528
|
+
- pattern-regex: \bxoxr-[0-9]{10,13}-[0-9]{10,13}-[0-9a-zA-Z]{24,32}\b
|
|
529
|
+
languages:
|
|
530
|
+
- regex
|
|
531
|
+
message: Slack token detected (xoxb-/xoxp-/xoxa-/xoxo- bot/user/app/legacy token format). Grants workspace
|
|
532
|
+
API access as the associated app or user.
|
|
533
|
+
severity: ERROR
|
|
534
|
+
metadata:
|
|
535
|
+
cwe:
|
|
536
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
537
|
+
owasp:
|
|
538
|
+
- A07:2021 - Identification and Authentication Failures
|
|
539
|
+
- A07:2025 - Authentication Failures
|
|
540
|
+
category: security
|
|
541
|
+
technology:
|
|
542
|
+
- secrets
|
|
543
|
+
- slack
|
|
544
|
+
confidence: HIGH
|
|
545
|
+
subcategory:
|
|
546
|
+
- vuln
|
|
547
|
+
likelihood: MEDIUM
|
|
548
|
+
impact: MEDIUM
|
|
549
|
+
vulnerability_class:
|
|
550
|
+
- Hard-coded Secrets
|
|
551
|
+
source: narvy-local
|
|
552
|
+
license: Apache-2.0
|
|
553
|
+
- id: narvy.secrets.slack-webhook
|
|
554
|
+
patterns:
|
|
555
|
+
- pattern-regex: https://hooks\.slack\.com/services/T[A-Za-z0-9_]{8,12}/B[A-Za-z0-9_]{8,12}/[A-Za-z0-9_]{20,32}
|
|
556
|
+
- pattern-not-regex: T0{8}|B0{8}|X{20,}
|
|
557
|
+
languages:
|
|
558
|
+
- regex
|
|
559
|
+
message: Slack Incoming Webhook URL detected. Anyone holding this URL can post messages into the target
|
|
560
|
+
channel as the configured integration.
|
|
561
|
+
severity: ERROR
|
|
562
|
+
metadata:
|
|
563
|
+
cwe:
|
|
564
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
565
|
+
owasp:
|
|
566
|
+
- A07:2021 - Identification and Authentication Failures
|
|
567
|
+
- A07:2025 - Authentication Failures
|
|
568
|
+
category: security
|
|
569
|
+
technology:
|
|
570
|
+
- secrets
|
|
571
|
+
- slack
|
|
572
|
+
confidence: HIGH
|
|
573
|
+
subcategory:
|
|
574
|
+
- vuln
|
|
575
|
+
likelihood: MEDIUM
|
|
576
|
+
impact: MEDIUM
|
|
577
|
+
vulnerability_class:
|
|
578
|
+
- Hard-coded Secrets
|
|
579
|
+
source: narvy-local
|
|
580
|
+
license: Apache-2.0
|
|
581
|
+
- id: narvy.secrets.outlook-webhook-url
|
|
582
|
+
pattern-regex: https://outlook\.office\.com/webhook/[0-9a-fA-F-]{36}
|
|
583
|
+
languages:
|
|
584
|
+
- regex
|
|
585
|
+
message: Microsoft Outlook / Office connector webhook URL detected (outlook.office.com/webhook/<guid>).
|
|
586
|
+
Lets anyone holding the URL post into the connected Outlook group.
|
|
587
|
+
severity: ERROR
|
|
588
|
+
metadata:
|
|
589
|
+
cwe:
|
|
590
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
591
|
+
owasp:
|
|
592
|
+
- A07:2021 - Identification and Authentication Failures
|
|
593
|
+
- A07:2025 - Authentication Failures
|
|
594
|
+
category: security
|
|
595
|
+
technology:
|
|
596
|
+
- secrets
|
|
597
|
+
- outlook
|
|
598
|
+
confidence: HIGH
|
|
599
|
+
subcategory:
|
|
600
|
+
- vuln
|
|
601
|
+
likelihood: MEDIUM
|
|
602
|
+
impact: MEDIUM
|
|
603
|
+
vulnerability_class:
|
|
604
|
+
- Hard-coded Secrets
|
|
605
|
+
source: narvy-local
|
|
606
|
+
license: Apache-2.0
|
|
607
|
+
- id: narvy.secrets.telegram-bot-token
|
|
608
|
+
patterns:
|
|
609
|
+
- pattern-regex: \b[0-9]{6,12}:AA[0-9A-Za-z_-]{33}\b
|
|
610
|
+
- pattern-not-regex: go\.mod|v[0-9]+\.[0-9]+\.[0-9]+
|
|
611
|
+
languages:
|
|
612
|
+
- regex
|
|
613
|
+
message: Telegram Bot API token detected (<numeric-id>:AA<33 chars> format). Full control of the bot
|
|
614
|
+
(send messages, read updates) for anyone holding this token.
|
|
615
|
+
severity: ERROR
|
|
616
|
+
metadata:
|
|
617
|
+
cwe:
|
|
618
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
619
|
+
owasp:
|
|
620
|
+
- A07:2021 - Identification and Authentication Failures
|
|
621
|
+
- A07:2025 - Authentication Failures
|
|
622
|
+
category: security
|
|
623
|
+
technology:
|
|
624
|
+
- secrets
|
|
625
|
+
- telegram
|
|
626
|
+
confidence: HIGH
|
|
627
|
+
subcategory:
|
|
628
|
+
- vuln
|
|
629
|
+
likelihood: MEDIUM
|
|
630
|
+
impact: MEDIUM
|
|
631
|
+
vulnerability_class:
|
|
632
|
+
- Hard-coded Secrets
|
|
633
|
+
source: narvy-local
|
|
634
|
+
license: Apache-2.0
|
|
635
|
+
- id: narvy.secrets.onfido-live-token
|
|
636
|
+
pattern-regex: \bapi_live(?:_[a-zA-Z]{2})?\.[a-zA-Z0-9_-]{11}\.[a-zA-Z0-9_-]{32}\b
|
|
637
|
+
languages:
|
|
638
|
+
- regex
|
|
639
|
+
message: Onfido live API token detected (api_live[_xx].<11 chars>.<32 chars> format). Grants live identity-verification
|
|
640
|
+
API access.
|
|
641
|
+
severity: ERROR
|
|
642
|
+
metadata:
|
|
643
|
+
cwe:
|
|
644
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
645
|
+
owasp:
|
|
646
|
+
- A07:2021 - Identification and Authentication Failures
|
|
647
|
+
- A07:2025 - Authentication Failures
|
|
648
|
+
category: security
|
|
649
|
+
technology:
|
|
650
|
+
- secrets
|
|
651
|
+
- onfido
|
|
652
|
+
confidence: HIGH
|
|
653
|
+
subcategory:
|
|
654
|
+
- vuln
|
|
655
|
+
likelihood: MEDIUM
|
|
656
|
+
impact: HIGH
|
|
657
|
+
vulnerability_class:
|
|
658
|
+
- Hard-coded Secrets
|
|
659
|
+
source: narvy-local
|
|
660
|
+
license: Apache-2.0
|
|
661
|
+
- id: narvy.secrets.heroku-api-key
|
|
662
|
+
pattern-regex: (?i)heroku[^\n]{0,50}[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}
|
|
663
|
+
languages:
|
|
664
|
+
- regex
|
|
665
|
+
message: A variable/string near the word 'heroku' holds a UUID-shaped value. Heroku API keys are UUIDs;
|
|
666
|
+
treat any hardcoded UUID adjacent to a heroku reference as a leaked credential.
|
|
667
|
+
severity: ERROR
|
|
668
|
+
metadata:
|
|
669
|
+
cwe:
|
|
670
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
671
|
+
owasp:
|
|
672
|
+
- A07:2021 - Identification and Authentication Failures
|
|
673
|
+
- A07:2025 - Authentication Failures
|
|
674
|
+
category: security
|
|
675
|
+
technology:
|
|
676
|
+
- secrets
|
|
677
|
+
- heroku
|
|
678
|
+
confidence: LOW
|
|
679
|
+
subcategory:
|
|
680
|
+
- vuln
|
|
681
|
+
likelihood: MEDIUM
|
|
682
|
+
impact: MEDIUM
|
|
683
|
+
vulnerability_class:
|
|
684
|
+
- Hard-coded Secrets
|
|
685
|
+
source: narvy-local
|
|
686
|
+
license: Apache-2.0
|
|
687
|
+
- id: narvy.secrets.hockeyapp-api-key
|
|
688
|
+
pattern-regex: (?i)\b(hockeyapp[_.]?api[_.]?token|hockey_app_token|HOCKEYAPP_API_TOKEN)\s*[:=]\s*[\"'`]?[0-9a-f]{32}\b
|
|
689
|
+
languages:
|
|
690
|
+
- regex
|
|
691
|
+
message: A value is assigned directly to a HockeyApp/App Center API-token variable name (e.g. `apiToken`
|
|
692
|
+
in a Gradle `hockeyapp {}` block, or the `HOCKEYAPP_API_TOKEN` env var used by CI plugins) and holds
|
|
693
|
+
a 32-char hex string, the token's known length.
|
|
694
|
+
severity: ERROR
|
|
695
|
+
metadata:
|
|
696
|
+
cwe:
|
|
697
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
698
|
+
owasp:
|
|
699
|
+
- A07:2021 - Identification and Authentication Failures
|
|
700
|
+
- A07:2025 - Authentication Failures
|
|
701
|
+
category: security
|
|
702
|
+
technology:
|
|
703
|
+
- secrets
|
|
704
|
+
- hockeyapp
|
|
705
|
+
confidence: LOW
|
|
706
|
+
subcategory:
|
|
707
|
+
- vuln
|
|
708
|
+
likelihood: MEDIUM
|
|
709
|
+
impact: MEDIUM
|
|
710
|
+
vulnerability_class:
|
|
711
|
+
- Hard-coded Secrets
|
|
712
|
+
source: narvy-local
|
|
713
|
+
license: Apache-2.0
|
|
714
|
+
- id: narvy.secrets.codeclimate-token
|
|
715
|
+
pattern-regex: (?i)\bCC_TEST_REPORTER_ID\s*[:=]\s*[\"'`]?[0-9a-f]{64}\b
|
|
716
|
+
languages:
|
|
717
|
+
- regex
|
|
718
|
+
message: A value is assigned directly to `CC_TEST_REPORTER_ID`, the exact environment variable name
|
|
719
|
+
Code Climate's `test-reporter` binary reads its upload token from, and holds a 64-char hex string,
|
|
720
|
+
the token's known length.
|
|
721
|
+
severity: ERROR
|
|
722
|
+
metadata:
|
|
723
|
+
cwe:
|
|
724
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
725
|
+
owasp:
|
|
726
|
+
- A07:2021 - Identification and Authentication Failures
|
|
727
|
+
- A07:2025 - Authentication Failures
|
|
728
|
+
category: security
|
|
729
|
+
technology:
|
|
730
|
+
- secrets
|
|
731
|
+
- codeclimate
|
|
732
|
+
confidence: LOW
|
|
733
|
+
subcategory:
|
|
734
|
+
- vuln
|
|
735
|
+
likelihood: MEDIUM
|
|
736
|
+
impact: MEDIUM
|
|
737
|
+
vulnerability_class:
|
|
738
|
+
- Hard-coded Secrets
|
|
739
|
+
source: narvy-local
|
|
740
|
+
license: Apache-2.0
|
|
741
|
+
- id: narvy.secrets.sonarqube-token
|
|
742
|
+
pattern-regex: (?i)\b(sonar\.(login|token|password)|SONAR_TOKEN|SONARQUBE_TOKEN)\s*[:=]\s*[\"'`]?[0-9a-f]{40}\b
|
|
743
|
+
languages:
|
|
744
|
+
- regex
|
|
745
|
+
message: A value is assigned directly to a documented SonarScanner auth parameter (`sonar.login` /
|
|
746
|
+
`sonar.token` / `sonar.password`, or the `SONAR_TOKEN` env var) and holds a 40-char hex string, matching
|
|
747
|
+
a SonarQube/SonarCloud user token's known length.
|
|
748
|
+
severity: ERROR
|
|
749
|
+
metadata:
|
|
750
|
+
cwe:
|
|
751
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
752
|
+
owasp:
|
|
753
|
+
- A07:2021 - Identification and Authentication Failures
|
|
754
|
+
- A07:2025 - Authentication Failures
|
|
755
|
+
category: security
|
|
756
|
+
technology:
|
|
757
|
+
- secrets
|
|
758
|
+
- sonarqube
|
|
759
|
+
confidence: LOW
|
|
760
|
+
subcategory:
|
|
761
|
+
- vuln
|
|
762
|
+
likelihood: MEDIUM
|
|
763
|
+
impact: MEDIUM
|
|
764
|
+
vulnerability_class:
|
|
765
|
+
- Hard-coded Secrets
|
|
766
|
+
source: narvy-local
|
|
767
|
+
license: Apache-2.0
|
|
768
|
+
paths:
|
|
769
|
+
exclude:
|
|
770
|
+
- '*.svg'
|
|
771
|
+
- '*go.sum'
|
|
772
|
+
- '*go.mod'
|
|
773
|
+
- '*package.json'
|
|
774
|
+
- '*package-lock.json'
|
|
775
|
+
- '*yarn.lock'
|
|
776
|
+
- '*pnpm-lock*'
|
|
777
|
+
- '*Podfile.lock'
|
|
778
|
+
- '*Cargo.lock'
|
|
779
|
+
- '*.xcscmblueprint'
|
|
780
|
+
- id: narvy.secrets.saucelabs-token
|
|
781
|
+
pattern-regex: (?i)\b(SAUCE_ACCESS_KEY|sauceAccessKey|sauce[_-]?access[_-]?key)\s*[:=]\s*[\"'`]?[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12}\b
|
|
782
|
+
languages:
|
|
783
|
+
- regex
|
|
784
|
+
message: A value is assigned directly to `SAUCE_ACCESS_KEY` (or the equivalent `sauceAccessKey` config
|
|
785
|
+
property used by WebDriver/Sauce Connect integrations) and is a UUIDv4, the documented shape of a
|
|
786
|
+
Sauce Labs access key.
|
|
787
|
+
severity: ERROR
|
|
788
|
+
metadata:
|
|
789
|
+
cwe:
|
|
790
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
791
|
+
owasp:
|
|
792
|
+
- A07:2021 - Identification and Authentication Failures
|
|
793
|
+
- A07:2025 - Authentication Failures
|
|
794
|
+
category: security
|
|
795
|
+
technology:
|
|
796
|
+
- secrets
|
|
797
|
+
- saucelabs
|
|
798
|
+
confidence: LOW
|
|
799
|
+
subcategory:
|
|
800
|
+
- vuln
|
|
801
|
+
likelihood: MEDIUM
|
|
802
|
+
impact: MEDIUM
|
|
803
|
+
vulnerability_class:
|
|
804
|
+
- Hard-coded Secrets
|
|
805
|
+
source: narvy-local
|
|
806
|
+
license: Apache-2.0
|
|
807
|
+
- id: narvy.secrets.facebook-access-token
|
|
808
|
+
pattern-regex: (?i)\b(fb|facebook|graph)[a-z0-9_]{0,15}(access)?_?token\s*[:=]\s*[\"'`]?EAA[A-Za-z0-9]{20,}
|
|
809
|
+
languages:
|
|
810
|
+
- regex
|
|
811
|
+
message: A value is assigned directly to a Facebook/Meta-token-looking variable name and starts with
|
|
812
|
+
`EAA`, the prefix Meta's Graph API has used on every issued user/page/app access token since the
|
|
813
|
+
API's early versions. Meta does not publish a formal token format spec (their own docs describe
|
|
814
|
+
access tokens only as "opaque strings" of variable length), so this is a context+prefix heuristic,
|
|
815
|
+
not a fingerprint match against a documented format. Treat findings as a strong lead, not certainty.
|
|
816
|
+
severity: ERROR
|
|
817
|
+
metadata:
|
|
818
|
+
cwe:
|
|
819
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
820
|
+
owasp:
|
|
821
|
+
- A07:2021 - Identification and Authentication Failures
|
|
822
|
+
- A07:2025 - Authentication Failures
|
|
823
|
+
category: security
|
|
824
|
+
technology:
|
|
825
|
+
- secrets
|
|
826
|
+
- facebook
|
|
827
|
+
confidence: MEDIUM
|
|
828
|
+
subcategory:
|
|
829
|
+
- vuln
|
|
830
|
+
likelihood: MEDIUM
|
|
831
|
+
impact: MEDIUM
|
|
832
|
+
vulnerability_class:
|
|
833
|
+
- Hard-coded Secrets
|
|
834
|
+
source: narvy-local
|
|
835
|
+
license: Apache-2.0
|
|
836
|
+
- id: narvy.secrets.facebook-oauth-token
|
|
837
|
+
pattern-regex: (?i)facebook[^\n]{0,80}token[^\n]{0,20}[\"'`]?[0-9a-f]{32}[\"'`]?
|
|
838
|
+
languages:
|
|
839
|
+
- regex
|
|
840
|
+
message: A variable/string containing 'facebook' near 'token' holds a 32-char hex value, matching a
|
|
841
|
+
Facebook OAuth token shape.
|
|
842
|
+
severity: ERROR
|
|
843
|
+
metadata:
|
|
844
|
+
cwe:
|
|
845
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
846
|
+
owasp:
|
|
847
|
+
- A07:2021 - Identification and Authentication Failures
|
|
848
|
+
- A07:2025 - Authentication Failures
|
|
849
|
+
category: security
|
|
850
|
+
technology:
|
|
851
|
+
- secrets
|
|
852
|
+
- facebook
|
|
853
|
+
confidence: LOW
|
|
854
|
+
subcategory:
|
|
855
|
+
- vuln
|
|
856
|
+
likelihood: MEDIUM
|
|
857
|
+
impact: MEDIUM
|
|
858
|
+
vulnerability_class:
|
|
859
|
+
- Hard-coded Secrets
|
|
860
|
+
source: narvy-local
|
|
861
|
+
license: Apache-2.0
|
|
862
|
+
- id: narvy.secrets.google-oauth-access-token
|
|
863
|
+
pattern-regex: \bya29\.[0-9A-Za-z_-]{20,}\b
|
|
864
|
+
languages:
|
|
865
|
+
- regex
|
|
866
|
+
message: Google OAuth2 access token detected (ya29.<token> format).
|
|
867
|
+
severity: ERROR
|
|
868
|
+
metadata:
|
|
869
|
+
cwe:
|
|
870
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
871
|
+
owasp:
|
|
872
|
+
- A07:2021 - Identification and Authentication Failures
|
|
873
|
+
- A07:2025 - Authentication Failures
|
|
874
|
+
category: security
|
|
875
|
+
technology:
|
|
876
|
+
- secrets
|
|
877
|
+
- google
|
|
878
|
+
confidence: HIGH
|
|
879
|
+
subcategory:
|
|
880
|
+
- vuln
|
|
881
|
+
likelihood: MEDIUM
|
|
882
|
+
impact: MEDIUM
|
|
883
|
+
vulnerability_class:
|
|
884
|
+
- Hard-coded Secrets
|
|
885
|
+
source: narvy-local
|
|
886
|
+
license: Apache-2.0
|
|
887
|
+
- id: narvy.secrets.google-service-account-json
|
|
888
|
+
pattern-regex: '[\"''`]?type[\"''`]?\s*(:|=>|=)\s*[\"''`]?service_account[\"''`]?'
|
|
889
|
+
languages:
|
|
890
|
+
- regex
|
|
891
|
+
message: 'A JSON blob with `"type": "service_account"` was found in source. GCP service-account key
|
|
892
|
+
files grant standing API access scoped to IAM roles and must never be committed. Store them in a
|
|
893
|
+
secrets manager or workload-identity federation instead.'
|
|
894
|
+
severity: ERROR
|
|
895
|
+
metadata:
|
|
896
|
+
cwe:
|
|
897
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
898
|
+
owasp:
|
|
899
|
+
- A07:2021 - Identification and Authentication Failures
|
|
900
|
+
- A07:2025 - Authentication Failures
|
|
901
|
+
category: security
|
|
902
|
+
technology:
|
|
903
|
+
- secrets
|
|
904
|
+
- gcp
|
|
905
|
+
confidence: MEDIUM
|
|
906
|
+
subcategory:
|
|
907
|
+
- vuln
|
|
908
|
+
likelihood: MEDIUM
|
|
909
|
+
impact: HIGH
|
|
910
|
+
vulnerability_class:
|
|
911
|
+
- Hard-coded Secrets
|
|
912
|
+
source: narvy-local
|
|
913
|
+
license: Apache-2.0
|
|
914
|
+
- id: narvy.secrets.artifactory-password
|
|
915
|
+
patterns:
|
|
916
|
+
- pattern-either:
|
|
917
|
+
- pattern-regex: (?i)artifactory[^\n]{0,80}\bAP[2-9A-F][A-Za-z0-9]{8,}\b
|
|
918
|
+
- pattern-regex: \bAP[2-9A-F][A-Za-z0-9]{8,}\b[^\n]{0,80}(?i)artifactory
|
|
919
|
+
- pattern-not-regex: (?i)sha(1|2|3|118|256|512)
|
|
920
|
+
languages:
|
|
921
|
+
- regex
|
|
922
|
+
message: JFrog Artifactory encrypted password detected (AP[2-9ABCDEF]... high-entropy token), co-located
|
|
923
|
+
with the word 'artifactory'.
|
|
924
|
+
severity: ERROR
|
|
925
|
+
metadata:
|
|
926
|
+
cwe:
|
|
927
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
928
|
+
owasp:
|
|
929
|
+
- A07:2021 - Identification and Authentication Failures
|
|
930
|
+
- A07:2025 - Authentication Failures
|
|
931
|
+
category: security
|
|
932
|
+
technology:
|
|
933
|
+
- secrets
|
|
934
|
+
- artifactory
|
|
935
|
+
confidence: LOW
|
|
936
|
+
subcategory:
|
|
937
|
+
- vuln
|
|
938
|
+
likelihood: MEDIUM
|
|
939
|
+
impact: HIGH
|
|
940
|
+
vulnerability_class:
|
|
941
|
+
- Hard-coded Secrets
|
|
942
|
+
source: narvy-local
|
|
943
|
+
license: Apache-2.0
|
|
944
|
+
paths:
|
|
945
|
+
exclude:
|
|
946
|
+
- '*.svg'
|
|
947
|
+
- '*go.sum'
|
|
948
|
+
- '*go.mod'
|
|
949
|
+
- '*package.json'
|
|
950
|
+
- '*package-lock.json'
|
|
951
|
+
- '*yarn.lock'
|
|
952
|
+
- '*pnpm-lock*'
|
|
953
|
+
- '*Podfile.lock'
|
|
954
|
+
- '*Cargo.lock'
|
|
955
|
+
- '*.xcscmblueprint'
|
|
956
|
+
- id: narvy.secrets.artifactory-token
|
|
957
|
+
patterns:
|
|
958
|
+
- pattern-regex: \bAKC[a-zA-Z0-9]{10,}\b
|
|
959
|
+
- pattern-not-regex: (?i)sha(128|256|512)
|
|
960
|
+
languages:
|
|
961
|
+
- regex
|
|
962
|
+
message: JFrog Artifactory API token detected (AKC... high-entropy prefix).
|
|
963
|
+
severity: ERROR
|
|
964
|
+
metadata:
|
|
965
|
+
cwe:
|
|
966
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
967
|
+
owasp:
|
|
968
|
+
- A07:2021 - Identification and Authentication Failures
|
|
969
|
+
- A07:2025 - Authentication Failures
|
|
970
|
+
category: security
|
|
971
|
+
technology:
|
|
972
|
+
- secrets
|
|
973
|
+
- artifactory
|
|
974
|
+
confidence: LOW
|
|
975
|
+
subcategory:
|
|
976
|
+
- vuln
|
|
977
|
+
likelihood: MEDIUM
|
|
978
|
+
impact: HIGH
|
|
979
|
+
vulnerability_class:
|
|
980
|
+
- Hard-coded Secrets
|
|
981
|
+
source: narvy-local
|
|
982
|
+
license: Apache-2.0
|
|
983
|
+
paths:
|
|
984
|
+
exclude:
|
|
985
|
+
- '*.svg'
|
|
986
|
+
- '*go.sum'
|
|
987
|
+
- '*go.mod'
|
|
988
|
+
- '*package.json'
|
|
989
|
+
- '*package-lock.json'
|
|
990
|
+
- '*yarn.lock'
|
|
991
|
+
- '*pnpm-lock*'
|
|
992
|
+
- '*Podfile.lock'
|
|
993
|
+
- '*Cargo.lock'
|
|
994
|
+
- '*.xcscmblueprint'
|
|
995
|
+
- id: narvy.secrets.npm-registry-authtoken-assignment
|
|
996
|
+
patterns:
|
|
997
|
+
- pattern-regex: //[^\s=]+/?:_(authToken|password)=\S+
|
|
998
|
+
- pattern-not-regex: \$\{|%s|<[A-Za-z_]+>
|
|
999
|
+
languages:
|
|
1000
|
+
- regex
|
|
1001
|
+
message: An .npmrc-style registry auth line (`//<registry-host>/:_authToken=` or `:_password=`) holds a
|
|
1002
|
+
literal token instead of an `${NPM_TOKEN}`-style environment interpolation. Anyone with read access to
|
|
1003
|
+
the file can publish to that registry as you. Move the token to an env var and reference it here.
|
|
1004
|
+
severity: ERROR
|
|
1005
|
+
metadata:
|
|
1006
|
+
cwe:
|
|
1007
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
1008
|
+
owasp:
|
|
1009
|
+
- A07:2021 - Identification and Authentication Failures
|
|
1010
|
+
- A07:2025 - Authentication Failures
|
|
1011
|
+
category: security
|
|
1012
|
+
technology:
|
|
1013
|
+
- secrets
|
|
1014
|
+
- npm
|
|
1015
|
+
confidence: HIGH
|
|
1016
|
+
subcategory:
|
|
1017
|
+
- vuln
|
|
1018
|
+
likelihood: MEDIUM
|
|
1019
|
+
impact: MEDIUM
|
|
1020
|
+
vulnerability_class:
|
|
1021
|
+
- Hard-coded Secrets
|
|
1022
|
+
source: narvy-local
|
|
1023
|
+
license: Apache-2.0
|
|
1024
|
+
- id: narvy.secrets.kubernetes-secret-manifest-committed-value
|
|
1025
|
+
patterns:
|
|
1026
|
+
- pattern: |
|
|
1027
|
+
kind: Secret
|
|
1028
|
+
...
|
|
1029
|
+
data:
|
|
1030
|
+
...
|
|
1031
|
+
$KEY: $VALUE
|
|
1032
|
+
...
|
|
1033
|
+
- metavariable-regex:
|
|
1034
|
+
metavariable: $VALUE
|
|
1035
|
+
regex: ^(?!([A-Za-z0-9+/])\1{6,}=*$)[A-Za-z0-9+/]{24,}={0,2}$
|
|
1036
|
+
languages:
|
|
1037
|
+
- yaml
|
|
1038
|
+
message: 'A `kind: Secret` document''s `data:` map has a value that decodes as base64 committed directly
|
|
1039
|
+
to the manifest. Kubernetes Secrets are only base64-encoded, not encrypted at rest by default. Use
|
|
1040
|
+
Sealed Secrets, SOPS, or an external secrets operator instead of committing the encoded value.'
|
|
1041
|
+
severity: WARNING
|
|
1042
|
+
metadata:
|
|
1043
|
+
cwe:
|
|
1044
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
1045
|
+
owasp:
|
|
1046
|
+
- A07:2021 - Identification and Authentication Failures
|
|
1047
|
+
- A07:2025 - Authentication Failures
|
|
1048
|
+
category: security
|
|
1049
|
+
technology:
|
|
1050
|
+
- secrets
|
|
1051
|
+
- kubernetes
|
|
1052
|
+
confidence: MEDIUM
|
|
1053
|
+
subcategory:
|
|
1054
|
+
- vuln
|
|
1055
|
+
likelihood: LOW
|
|
1056
|
+
impact: MEDIUM
|
|
1057
|
+
vulnerability_class:
|
|
1058
|
+
- Hard-coded Secrets
|
|
1059
|
+
source: narvy-local
|
|
1060
|
+
license: Apache-2.0
|
|
1061
|
+
- id: narvy.secrets.gradle-password-hardcoded
|
|
1062
|
+
patterns:
|
|
1063
|
+
- pattern: '$PASS = $ENVCALL ?: "$FALLBACK"
|
|
1064
|
+
|
|
1065
|
+
'
|
|
1066
|
+
- metavariable-regex:
|
|
1067
|
+
metavariable: $PASS
|
|
1068
|
+
regex: (?i).*(password|passwd|secret|apikey|token|credential)
|
|
1069
|
+
- metavariable-regex:
|
|
1070
|
+
metavariable: $FALLBACK
|
|
1071
|
+
regex: (?i)^(?!.*(placeholder|changeme|change_me|example|dummy|xxx|todo|fixme|your_|replace_?me|insert_)).*$
|
|
1072
|
+
languages:
|
|
1073
|
+
- kotlin
|
|
1074
|
+
message: 'A `build.gradle.kts` variable named like a password/credential falls back to a literal default
|
|
1075
|
+
when the matching env var is unset (`val PASS = System.getenv("X") ?: "literal"`). The literal fallback
|
|
1076
|
+
ships in every build and in version control.'
|
|
1077
|
+
severity: WARNING
|
|
1078
|
+
metadata:
|
|
1079
|
+
cwe:
|
|
1080
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
1081
|
+
owasp:
|
|
1082
|
+
- A07:2021 - Identification and Authentication Failures
|
|
1083
|
+
- A07:2025 - Authentication Failures
|
|
1084
|
+
category: security
|
|
1085
|
+
technology:
|
|
1086
|
+
- secrets
|
|
1087
|
+
- gradle
|
|
1088
|
+
confidence: MEDIUM
|
|
1089
|
+
subcategory:
|
|
1090
|
+
- vuln
|
|
1091
|
+
likelihood: LOW
|
|
1092
|
+
impact: HIGH
|
|
1093
|
+
vulnerability_class:
|
|
1094
|
+
- Hard-coded Secrets
|
|
1095
|
+
source: narvy-local
|
|
1096
|
+
license: Apache-2.0
|
|
1097
|
+
paths:
|
|
1098
|
+
include:
|
|
1099
|
+
- '*build.gradle.kts'
|
|
1100
|
+
- id: narvy.secrets.detected-private-key
|
|
1101
|
+
message: A PEM-encoded private key block ('-----BEGIN ... PRIVATE KEY-----') was found in source. Private
|
|
1102
|
+
keys must never ship in a repository. Rotate the key pair and load the key from a secrets manager,
|
|
1103
|
+
KMS, or an untracked local file.
|
|
1104
|
+
severity: ERROR
|
|
1105
|
+
languages:
|
|
1106
|
+
- regex
|
|
1107
|
+
pattern-regex: '-----BEGIN\s+((RSA|DSA|EC|OPENSSH|PGP)\s+)?PRIVATE KEY(\s+BLOCK)?-----'
|
|
1108
|
+
metadata:
|
|
1109
|
+
cwe:
|
|
1110
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
1111
|
+
owasp:
|
|
1112
|
+
- A07:2021 - Identification and Authentication Failures
|
|
1113
|
+
- A07:2025 - Authentication Failures
|
|
1114
|
+
category: security
|
|
1115
|
+
technology:
|
|
1116
|
+
- secrets
|
|
1117
|
+
confidence: HIGH
|
|
1118
|
+
subcategory:
|
|
1119
|
+
- vuln
|
|
1120
|
+
likelihood: HIGH
|
|
1121
|
+
impact: HIGH
|
|
1122
|
+
vulnerability_class:
|
|
1123
|
+
- Hard-coded Secrets
|
|
1124
|
+
source: narvy-local
|
|
1125
|
+
license: Apache-2.0
|
|
1126
|
+
- id: narvy.secrets.pgp-private-key-block
|
|
1127
|
+
pattern-regex: '-----BEGIN\s+PGP\s+PRIVATE\s+KEY\s+BLOCK-----'
|
|
1128
|
+
languages:
|
|
1129
|
+
- regex
|
|
1130
|
+
message: 'A PGP private key block (''-----BEGIN ... PGP PRIVATE ... KEY BLOCK-----'') was found in source.
|
|
1131
|
+
Treat identically to any other private key leak: rotate and remove from history.'
|
|
1132
|
+
severity: ERROR
|
|
1133
|
+
metadata:
|
|
1134
|
+
cwe:
|
|
1135
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
1136
|
+
owasp:
|
|
1137
|
+
- A07:2021 - Identification and Authentication Failures
|
|
1138
|
+
- A07:2025 - Authentication Failures
|
|
1139
|
+
category: security
|
|
1140
|
+
technology:
|
|
1141
|
+
- secrets
|
|
1142
|
+
- pgp
|
|
1143
|
+
confidence: HIGH
|
|
1144
|
+
subcategory:
|
|
1145
|
+
- vuln
|
|
1146
|
+
likelihood: HIGH
|
|
1147
|
+
impact: HIGH
|
|
1148
|
+
vulnerability_class:
|
|
1149
|
+
- Hard-coded Secrets
|
|
1150
|
+
source: narvy-local
|
|
1151
|
+
license: Apache-2.0
|
|
1152
|
+
- id: narvy.secrets.credentials-in-uri
|
|
1153
|
+
patterns:
|
|
1154
|
+
- pattern: '$SCHEME://$USER:$PASS@$HOST
|
|
1155
|
+
|
|
1156
|
+
'
|
|
1157
|
+
- metavariable-regex:
|
|
1158
|
+
metavariable: $SCHEME
|
|
1159
|
+
regex: (?i)^(https?|ftp|smtp|ssh|sftp|postgres(ql)?|mysql|mongodb(\+srv)?|redis|amqp|ldap)$
|
|
1160
|
+
- metavariable-regex:
|
|
1161
|
+
metavariable: $PASS
|
|
1162
|
+
regex: ^.{3,64}$
|
|
1163
|
+
- pattern-not-regex: (?i)(user|username|xxxx|\$\{|%s|<[a-z_]+>|localhost)
|
|
1164
|
+
languages:
|
|
1165
|
+
- generic
|
|
1166
|
+
message: A connection string / URL embeds a username:password before the host (scheme://user:pass@host).
|
|
1167
|
+
Database, message-queue, and API URIs with inline credentials leak into logs, shell history, and process
|
|
1168
|
+
listings. Pass credentials via a separate auth mechanism or env var instead.
|
|
1169
|
+
severity: ERROR
|
|
1170
|
+
metadata:
|
|
1171
|
+
cwe:
|
|
1172
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
1173
|
+
owasp:
|
|
1174
|
+
- A07:2021 - Identification and Authentication Failures
|
|
1175
|
+
- A07:2025 - Authentication Failures
|
|
1176
|
+
category: security
|
|
1177
|
+
technology:
|
|
1178
|
+
- secrets
|
|
1179
|
+
- database
|
|
1180
|
+
confidence: MEDIUM
|
|
1181
|
+
subcategory:
|
|
1182
|
+
- vuln
|
|
1183
|
+
likelihood: MEDIUM
|
|
1184
|
+
impact: MEDIUM
|
|
1185
|
+
vulnerability_class:
|
|
1186
|
+
- Hard-coded Secrets
|
|
1187
|
+
source: narvy-local
|
|
1188
|
+
license: Apache-2.0
|
|
1189
|
+
- id: narvy.secrets.etc-shadow-contents
|
|
1190
|
+
message: Contents matching a Linux /etc/shadow entry (root:$hash:...) were found in source. A committed
|
|
1191
|
+
shadow file leaks every local account's password hash for offline cracking.
|
|
1192
|
+
severity: ERROR
|
|
1193
|
+
languages:
|
|
1194
|
+
- regex
|
|
1195
|
+
pattern-regex: '^\s*root:[$!*][^\n:]*:[0-9]*:[0-9]*:'
|
|
1196
|
+
metadata:
|
|
1197
|
+
cwe:
|
|
1198
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
1199
|
+
owasp:
|
|
1200
|
+
- A07:2021 - Identification and Authentication Failures
|
|
1201
|
+
- A07:2025 - Authentication Failures
|
|
1202
|
+
category: security
|
|
1203
|
+
technology:
|
|
1204
|
+
- secrets
|
|
1205
|
+
confidence: MEDIUM
|
|
1206
|
+
subcategory:
|
|
1207
|
+
- vuln
|
|
1208
|
+
likelihood: LOW
|
|
1209
|
+
impact: HIGH
|
|
1210
|
+
vulnerability_class:
|
|
1211
|
+
- Hard-coded Secrets
|
|
1212
|
+
source: narvy-local
|
|
1213
|
+
license: Apache-2.0
|
|
1214
|
+
- id: narvy.secrets.bcrypt-hash-hardcoded
|
|
1215
|
+
pattern-regex: \$2[aby]\$\d{2}\$[./A-Za-z0-9]{53}
|
|
1216
|
+
languages:
|
|
1217
|
+
- regex
|
|
1218
|
+
message: A bcrypt password hash ($2a$/$2b$/$2y$ + cost + 53-char salt+hash) is hardcoded. Even though
|
|
1219
|
+
it's a hash and not the plaintext, a committed hash is crackable offline and usually indicates a seeded/default
|
|
1220
|
+
account. Verify it is test-only or remove it.
|
|
1221
|
+
severity: ERROR
|
|
1222
|
+
metadata:
|
|
1223
|
+
cwe:
|
|
1224
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
1225
|
+
owasp:
|
|
1226
|
+
- A07:2021 - Identification and Authentication Failures
|
|
1227
|
+
- A07:2025 - Authentication Failures
|
|
1228
|
+
category: security
|
|
1229
|
+
technology:
|
|
1230
|
+
- secrets
|
|
1231
|
+
- bcrypt
|
|
1232
|
+
confidence: MEDIUM
|
|
1233
|
+
subcategory:
|
|
1234
|
+
- vuln
|
|
1235
|
+
likelihood: LOW
|
|
1236
|
+
impact: HIGH
|
|
1237
|
+
vulnerability_class:
|
|
1238
|
+
- Hard-coded Secrets
|
|
1239
|
+
source: narvy-local
|
|
1240
|
+
license: Apache-2.0
|
|
1241
|
+
- id: narvy.secrets.ssh-password-cli
|
|
1242
|
+
pattern-regex: sshpass\s+-p\s*['\"][^'\"%]
|
|
1243
|
+
languages:
|
|
1244
|
+
- regex
|
|
1245
|
+
message: '`sshpass -p` passes an SSH password as a plaintext CLI argument, which is visible to every
|
|
1246
|
+
local user via `ps` and lands in shell history. Use `sshpass -f <file>` reading from a private, restricted-permission
|
|
1247
|
+
file, or switch to key-based auth.'
|
|
1248
|
+
severity: ERROR
|
|
1249
|
+
metadata:
|
|
1250
|
+
cwe:
|
|
1251
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
1252
|
+
owasp:
|
|
1253
|
+
- A07:2021 - Identification and Authentication Failures
|
|
1254
|
+
- A07:2025 - Authentication Failures
|
|
1255
|
+
category: security
|
|
1256
|
+
technology:
|
|
1257
|
+
- secrets
|
|
1258
|
+
- ssh
|
|
1259
|
+
confidence: MEDIUM
|
|
1260
|
+
subcategory:
|
|
1261
|
+
- vuln
|
|
1262
|
+
likelihood: MEDIUM
|
|
1263
|
+
impact: HIGH
|
|
1264
|
+
vulnerability_class:
|
|
1265
|
+
- Hard-coded Secrets
|
|
1266
|
+
source: narvy-local
|
|
1267
|
+
license: Apache-2.0
|
|
1268
|
+
- id: narvy.secrets.ruby-hardcoded-http-basic-auth
|
|
1269
|
+
pattern: http_basic_authenticate_with ..., :password => "...", ...
|
|
1270
|
+
languages:
|
|
1271
|
+
- ruby
|
|
1272
|
+
message: A `http_basic_authenticate_with` call hardcodes the `:password` option. This isn't limited to
|
|
1273
|
+
`ApplicationController` subclasses. API-only controllers and controllers that pull the method in
|
|
1274
|
+
via a concern/module call it the same way. Anyone with source access has the credential; move it to
|
|
1275
|
+
Rails credentials / an env var.
|
|
1276
|
+
severity: WARNING
|
|
1277
|
+
metadata:
|
|
1278
|
+
cwe:
|
|
1279
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
1280
|
+
owasp:
|
|
1281
|
+
- A07:2021 - Identification and Authentication Failures
|
|
1282
|
+
- A07:2025 - Authentication Failures
|
|
1283
|
+
category: security
|
|
1284
|
+
technology:
|
|
1285
|
+
- secrets
|
|
1286
|
+
- ruby
|
|
1287
|
+
confidence: HIGH
|
|
1288
|
+
subcategory:
|
|
1289
|
+
- vuln
|
|
1290
|
+
likelihood: MEDIUM
|
|
1291
|
+
impact: HIGH
|
|
1292
|
+
vulnerability_class:
|
|
1293
|
+
- Hard-coded Secrets
|
|
1294
|
+
source: narvy-local
|
|
1295
|
+
license: Apache-2.0
|
|
1296
|
+
- id: narvy.secrets.ruby-rsa-passphrase-hardcoded
|
|
1297
|
+
pattern-either:
|
|
1298
|
+
- pattern: 'OpenSSL::PKey::RSA.new(..., ''...'')
|
|
1299
|
+
|
|
1300
|
+
'
|
|
1301
|
+
- pattern: 'OpenSSL::PKey::RSA.new(...).to_pem(..., ''...'')
|
|
1302
|
+
|
|
1303
|
+
'
|
|
1304
|
+
- pattern: 'OpenSSL::PKey::RSA.new(...).export(..., ''...'')
|
|
1305
|
+
|
|
1306
|
+
'
|
|
1307
|
+
languages:
|
|
1308
|
+
- ruby
|
|
1309
|
+
message: An `OpenSSL::PKey::RSA` key is constructed, exported, or PEM-encoded with a literal string
|
|
1310
|
+
passphrase argument. The passphrase protects the private key at rest, and hardcoding it defeats that
|
|
1311
|
+
protection entirely.
|
|
1312
|
+
severity: WARNING
|
|
1313
|
+
metadata:
|
|
1314
|
+
cwe:
|
|
1315
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
1316
|
+
owasp:
|
|
1317
|
+
- A07:2021 - Identification and Authentication Failures
|
|
1318
|
+
- A07:2025 - Authentication Failures
|
|
1319
|
+
category: security
|
|
1320
|
+
technology:
|
|
1321
|
+
- secrets
|
|
1322
|
+
- ruby
|
|
1323
|
+
confidence: HIGH
|
|
1324
|
+
subcategory:
|
|
1325
|
+
- vuln
|
|
1326
|
+
likelihood: MEDIUM
|
|
1327
|
+
impact: HIGH
|
|
1328
|
+
vulnerability_class:
|
|
1329
|
+
- Hard-coded Secrets
|
|
1330
|
+
source: narvy-local
|
|
1331
|
+
license: Apache-2.0
|
|
1332
|
+
- id: narvy.secrets.js-express-session-hardcoded-secret
|
|
1333
|
+
patterns:
|
|
1334
|
+
- pattern-either:
|
|
1335
|
+
- pattern-inside: '$SESSION = require(''express-session'')
|
|
1336
|
+
|
|
1337
|
+
...
|
|
1338
|
+
|
|
1339
|
+
'
|
|
1340
|
+
- pattern-inside: 'import $SESSION from ''express-session''
|
|
1341
|
+
|
|
1342
|
+
...
|
|
1343
|
+
|
|
1344
|
+
'
|
|
1345
|
+
- pattern: '$APP.use($SESSION({ ..., secret: "...", ... }))
|
|
1346
|
+
|
|
1347
|
+
'
|
|
1348
|
+
languages:
|
|
1349
|
+
- javascript
|
|
1350
|
+
- typescript
|
|
1351
|
+
message: '`express-session` is configured with a literal `secret:` string. This secret signs the session-id
|
|
1352
|
+
cookie; a hardcoded value lets anyone who reads the source forge valid session cookies.'
|
|
1353
|
+
severity: WARNING
|
|
1354
|
+
metadata:
|
|
1355
|
+
cwe:
|
|
1356
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
1357
|
+
owasp:
|
|
1358
|
+
- A07:2021 - Identification and Authentication Failures
|
|
1359
|
+
- A07:2025 - Authentication Failures
|
|
1360
|
+
category: security
|
|
1361
|
+
technology:
|
|
1362
|
+
- secrets
|
|
1363
|
+
- express
|
|
1364
|
+
- jwt
|
|
1365
|
+
confidence: HIGH
|
|
1366
|
+
subcategory:
|
|
1367
|
+
- vuln
|
|
1368
|
+
likelihood: HIGH
|
|
1369
|
+
impact: HIGH
|
|
1370
|
+
vulnerability_class:
|
|
1371
|
+
- Hard-coded Secrets
|
|
1372
|
+
source: narvy-local
|
|
1373
|
+
license: Apache-2.0
|
|
1374
|
+
- id: narvy.secrets.js-jsonwebtoken-hardcoded-secret
|
|
1375
|
+
patterns:
|
|
1376
|
+
- pattern-either:
|
|
1377
|
+
- pattern-inside: '$JWT = require("jsonwebtoken")
|
|
1378
|
+
|
|
1379
|
+
...
|
|
1380
|
+
|
|
1381
|
+
'
|
|
1382
|
+
- pattern-inside: 'import $JWT from "jsonwebtoken"
|
|
1383
|
+
|
|
1384
|
+
...
|
|
1385
|
+
|
|
1386
|
+
'
|
|
1387
|
+
- pattern-either:
|
|
1388
|
+
- pattern: '$JWT.sign($DATA, "...", ...)
|
|
1389
|
+
|
|
1390
|
+
'
|
|
1391
|
+
- pattern: '$JWT.verify($DATA, "...", ...)
|
|
1392
|
+
|
|
1393
|
+
'
|
|
1394
|
+
languages:
|
|
1395
|
+
- javascript
|
|
1396
|
+
- typescript
|
|
1397
|
+
message: '`jsonwebtoken`''s `sign()`/`verify()` is called with a literal string as the secret/key argument.
|
|
1398
|
+
This is the value that authenticates every issued token; a hardcoded copy in source lets anyone forge
|
|
1399
|
+
tokens.'
|
|
1400
|
+
severity: WARNING
|
|
1401
|
+
metadata:
|
|
1402
|
+
cwe:
|
|
1403
|
+
- 'CWE-798: Use of Hard-coded Credentials'
|
|
1404
|
+
owasp:
|
|
1405
|
+
- A07:2021 - Identification and Authentication Failures
|
|
1406
|
+
- A07:2025 - Authentication Failures
|
|
1407
|
+
category: security
|
|
1408
|
+
technology:
|
|
1409
|
+
- secrets
|
|
1410
|
+
- javascript
|
|
1411
|
+
- jwt
|
|
1412
|
+
confidence: HIGH
|
|
1413
|
+
subcategory:
|
|
1414
|
+
- vuln
|
|
1415
|
+
likelihood: HIGH
|
|
1416
|
+
impact: MEDIUM
|
|
1417
|
+
vulnerability_class:
|
|
1418
|
+
- Hard-coded Secrets
|
|
1419
|
+
source: narvy-local
|
|
1420
|
+
license: Apache-2.0
|