@link-foundation/sensitive-data-sanitizer 0.19.3 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +8 -1
  3. package/bin/sensitive-data-sanitizer.js +49 -28
  4. package/docs/API.md +192 -1
  5. package/docs/COVERAGE.md +3 -3
  6. package/docs/RULES.md +217 -0
  7. package/package.json +1 -1
  8. package/src/allow-list.js +93 -0
  9. package/src/confidence.js +24 -9
  10. package/src/context.js +121 -25
  11. package/src/credentials.js +44 -0
  12. package/src/crypto-addresses.js +74 -0
  13. package/src/detection.js +21 -6
  14. package/src/document-person-cues.js +1 -1
  15. package/src/encrypt.js +95 -0
  16. package/src/entities.js +4 -3
  17. package/src/fake.js +29 -1
  18. package/src/files.js +57 -12
  19. package/src/gitleaks.js +82 -27
  20. package/src/identifier-detector.js +36 -0
  21. package/src/identity.js +14 -0
  22. package/src/index.d.ts +116 -1
  23. package/src/index.js +7 -0
  24. package/src/national-checks.js +209 -0
  25. package/src/national.js +310 -92
  26. package/src/pattern-detector.js +219 -0
  27. package/src/personal-context.js +3 -2
  28. package/src/personal-evidence.js +233 -0
  29. package/src/personal.js +42 -10
  30. package/src/projection.js +85 -26
  31. package/src/rule-catalog.js +424 -0
  32. package/src/sanitizer.js +48 -3
  33. package/src/sarif.js +127 -0
  34. package/src/token-checksum.js +49 -0
  35. package/src/transforms.js +108 -25
  36. package/src/vendor/betterleaks/LICENSE +21 -0
  37. package/src/vendor/betterleaks/provenance.json +11 -0
  38. package/src/vendor/betterleaks/rules-0.json +463 -0
  39. package/src/vendor/betterleaks/rules-1.json +454 -0
  40. package/src/vendor/betterleaks/rules-2.json +461 -0
  41. package/src/vendor/betterleaks/rules-3.json +455 -0
  42. package/src/vendor/betterleaks/rules-4.json +483 -0
  43. package/src/vendor/betterleaks/rules-5.json +35 -0
  44. package/src/vendor/entities/aws.json +1 -1
  45. package/src/vendor/entities/azure.json +6 -2
  46. package/src/vendor/entities/google.json +2 -1
@@ -0,0 +1,454 @@
1
+ [
2
+ {
3
+ "id": "coveralls-personal-api-token",
4
+ "description": "Detected a Coveralls personal API token, which may expose repository coverage data.",
5
+ "regex": "(?i)(?:coveralls)(?:[ \\t\\w.-]{0,20})[\\s'\"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'\"\\s=]{0,5}([A-Za-z0-9-]{37})(?:\\\\?['\"\\x60]|[\\s;]|\\\\[nr]|$)",
6
+ "keywords": [
7
+ "coveralls"
8
+ ],
9
+ "confidence": "medium",
10
+ "filter": "filter.entropy(finding[\"secret\"]) < 3.5 || filter.tokenRatio(finding[\"secret\"]) >= 2.5\n",
11
+ "entropy": 3.5
12
+ },
13
+ {
14
+ "id": "crates-io-api-key",
15
+ "description": "crates.io API key.",
16
+ "regex": "(?i)(?:crates(?:[_.-]?io)?)(?:[ \\t\\w.-]{0,20})[\\s'\"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'\"\\s=]{0,5}(cio[A-Za-z0-9]{32})(?:\\\\?['\"\\x60]|[\\s;]|\\\\[nr]|$)",
17
+ "keywords": [
18
+ "crates"
19
+ ],
20
+ "confidence": "high"
21
+ },
22
+ {
23
+ "id": "cursor-api-key",
24
+ "description": "Detected a Cursor Integrations API Key, which may expose AI-assisted development services to unauthorized access.",
25
+ "regex": "(?i)(?:cursor)(?:[ \\t\\w.-]{0,20})[\\s'\"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'\"\\s=]{0,5}(key_[0-9a-f]{64})(?:\\\\?['\"\\x60]|[\\s;]|\\\\[nr]|$)",
26
+ "keywords": [
27
+ "cursor"
28
+ ],
29
+ "confidence": "medium",
30
+ "filter": "entropy(finding[\"secret\"]) <= 3.5\n",
31
+ "entropy": 3.5,
32
+ "entropyInclusive": true
33
+ },
34
+ {
35
+ "id": "databento-api-key",
36
+ "description": "Databento API key.",
37
+ "regex": "(?i)(?:databento)(?:[ \\t\\w.-]{0,20})[\\s'\"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'\"\\s=]{0,5}(db-[A-Za-z0-9]{29})(?:\\\\?['\"\\x60]|[\\s;]|\\\\[nr]|$)",
38
+ "keywords": [
39
+ "databento"
40
+ ],
41
+ "confidence": "high"
42
+ },
43
+ {
44
+ "id": "datadog-api-key",
45
+ "description": "Detected a Datadog API key, potentially risking monitoring and analytics data exposure and manipulation.",
46
+ "regex": "(?i)(?:datadog)(?:[ \\t\\w.-]{0,20})[\\s'\"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'\"\\s=]{0,5}([a-z0-9]{32})(?:\\\\?['\"\\x60]|[\\s;]|\\\\[nr]|$)",
47
+ "keywords": [
48
+ "datadog"
49
+ ],
50
+ "confidence": "high",
51
+ "filter": "entropy(finding[\"secret\"]) < 3.5\n",
52
+ "entropy": 3.5
53
+ },
54
+ {
55
+ "id": "datadog-application-key",
56
+ "description": "Detected a Datadog application key, which may expose Datadog account and monitoring data when paired with an API key.",
57
+ "regex": "(?i)(?:datadog)(?:[ \\t\\w.-]{0,20})[\\s'\"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'\"\\s=]{0,5}([A-Za-z0-9-]{40})(?:\\\\?['\"\\x60]|[\\s;]|\\\\[nr]|$)",
58
+ "keywords": [
59
+ "datadog"
60
+ ],
61
+ "confidence": "high",
62
+ "filter": "entropy(finding[\"secret\"]) < 3.5\n",
63
+ "entropy": 3.5
64
+ },
65
+ {
66
+ "id": "datagov-api-key",
67
+ "description": "Detected a Data.gov API key, which may expose usage of Data.gov-backed APIs.",
68
+ "regex": "(?i)(?:data\\.gov)(?:[ \\t\\w.-]{0,20})[\\s'\"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'\"\\s=]{0,5}([a-z0-9]{40})(?:\\\\?['\"\\x60]|[\\s;]|\\\\[nr]|$)",
69
+ "keywords": [
70
+ "data.gov"
71
+ ],
72
+ "confidence": "high",
73
+ "filter": "filter.entropy(finding[\"secret\"]) < 3.5 || filter.tokenRatio(finding[\"secret\"]) >= 2.5\n",
74
+ "entropy": 3.5
75
+ },
76
+ {
77
+ "id": "datastax-astra-application-token",
78
+ "description": "DataStax Astra application token.",
79
+ "regex": "\\b(AstraCS:[A-Za-z0-9]{20,})",
80
+ "keywords": [
81
+ "astracs:"
82
+ ],
83
+ "confidence": "high",
84
+ "filter": "entropy(finding[\"secret\"]) < 4.0\n",
85
+ "entropy": 4.0
86
+ },
87
+ {
88
+ "id": "deepgram-api-key",
89
+ "description": "Detected a Deepgram API Key, which may expose speech recognition services and audio data to unauthorized access.",
90
+ "regex": "(?i)(?:deepgram)(?:[ \\t\\w.-]{0,20})[\\s'\"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'\"\\s=]{0,5}([a-f0-9]{40})(?:\\\\?['\"\\x60]|[\\s;]|\\\\[nr]|$)",
91
+ "keywords": [
92
+ "deepgram"
93
+ ],
94
+ "confidence": "high",
95
+ "filter": "filter.entropy(finding[\"secret\"]) < 3.3 || filter.tokenRatio(finding[\"secret\"]) >= 2.5\n",
96
+ "entropy": 3.3
97
+ },
98
+ {
99
+ "id": "deepseek-api-key",
100
+ "description": "Detected a DeepSeek API Key, which may expose AI model access and associated usage to unauthorized parties.",
101
+ "regex": "(?i)(?:deepseek)(?:[ \\t\\w.-]{0,20})[\\s'\"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'\"\\s=]{0,5}(sk-[a-f0-9]{32})(?:\\\\?['\"\\x60]|[\\s;]|\\\\[nr]|$)",
102
+ "keywords": [
103
+ "deepseek"
104
+ ],
105
+ "confidence": "high",
106
+ "filter": "entropy(finding[\"secret\"]) <= 3.5\n",
107
+ "entropy": 3.5,
108
+ "entropyInclusive": true
109
+ },
110
+ {
111
+ "id": "deno-account-token",
112
+ "description": "Detected a Deno account token, which may expose Deno Deploy account access.",
113
+ "regex": "\\b(ddp_[A-Za-z0-9]{36})(?:\\\\?['\"\\x60]|[\\s;]|\\\\[nr]|$)",
114
+ "keywords": [
115
+ "ddp_"
116
+ ],
117
+ "confidence": "high",
118
+ "filter": "entropy(finding[\"secret\"]) < 3.5\n",
119
+ "entropy": 3.5
120
+ },
121
+ {
122
+ "id": "devcycle-client-sdk-key",
123
+ "description": "DevCycle client SDK key.",
124
+ "regex": "\\b(dvc_client_[A-Za-z0-9]{8,32})",
125
+ "keywords": [
126
+ "dvc_client_"
127
+ ],
128
+ "confidence": "high",
129
+ "filter": "entropy(finding[\"secret\"]) < 3.0\n",
130
+ "entropy": 3.0
131
+ },
132
+ {
133
+ "id": "devcycle-mobile-sdk-key",
134
+ "description": "DevCycle mobile SDK key.",
135
+ "regex": "\\b(dvc_mobile_[A-Za-z0-9]{8,32})",
136
+ "keywords": [
137
+ "dvc_mobile_"
138
+ ],
139
+ "confidence": "high",
140
+ "filter": "entropy(finding[\"secret\"]) < 3.0\n",
141
+ "entropy": 3.0
142
+ },
143
+ {
144
+ "id": "devcycle-server-sdk-key",
145
+ "description": "DevCycle server SDK key.",
146
+ "regex": "\\b(dvc_server_[A-Za-z0-9]{8,32})",
147
+ "keywords": [
148
+ "dvc_server_"
149
+ ],
150
+ "confidence": "high",
151
+ "filter": "entropy(finding[\"secret\"]) < 3.0\n",
152
+ "entropy": 3.0
153
+ },
154
+ {
155
+ "id": "devin-personal-api-key",
156
+ "description": "Detected a Cognition Devin personal API key, which may expose Devin sessions and user data.",
157
+ "regex": "\\b(apk_user_[A-Za-z0-9+/]{120,180}={0,2})(?:\\\\?['\"\\x60]|[\\s;]|\\\\[nr]|$)",
158
+ "keywords": [
159
+ "apk_user_"
160
+ ],
161
+ "confidence": "high",
162
+ "filter": "entropy(finding[\"secret\"]) < 3.5\n",
163
+ "entropy": 3.5
164
+ },
165
+ {
166
+ "id": "devin-service-api-key",
167
+ "description": "Detected a Cognition Devin service API key, which may expose Devin sessions and organization access.",
168
+ "regex": "\\b(apk_[A-Za-z0-9+/]{80,100}={0,2})(?:\\\\?['\"\\x60]|[\\s;]|\\\\[nr]|$)",
169
+ "keywords": [
170
+ "apk_"
171
+ ],
172
+ "confidence": "high",
173
+ "filter": "entropy(finding[\"secret\"]) < 3.5\n",
174
+ "entropy": 3.5
175
+ },
176
+ {
177
+ "id": "devin-service-user-token",
178
+ "description": "Detected a Cognition Devin service user token, which may expose Devin service user access.",
179
+ "regex": "\\b(cog_[a-z2-7]{52})(?:\\\\?['\"\\x60]|[\\s;]|\\\\[nr]|$)",
180
+ "keywords": [
181
+ "cog_"
182
+ ],
183
+ "confidence": "high",
184
+ "filter": "entropy(finding[\"secret\"]) < 3.5\n",
185
+ "entropy": 3.5
186
+ },
187
+ {
188
+ "id": "disqus-api-key",
189
+ "description": "Detected a Disqus API key, which may expose Disqus thread and account data.",
190
+ "regex": "(?i)(?:disqus)(?:[ \\t\\w.-]{0,20})[\\s'\"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'\"\\s=]{0,5}([a-z0-9]{64})(?:\\\\?['\"\\x60]|[\\s;]|\\\\[nr]|$)",
191
+ "keywords": [
192
+ "disqus"
193
+ ],
194
+ "confidence": "high",
195
+ "filter": "filter.entropy(finding[\"secret\"]) < 3.5 || filter.tokenRatio(finding[\"secret\"]) >= 2.5\n",
196
+ "entropy": 3.5
197
+ },
198
+ {
199
+ "id": "docker-swarm-join-token",
200
+ "description": "Docker Swarm join token.",
201
+ "regex": "\\b(SWMTKN-1-[a-z0-9]{50,60}-[a-z0-9]{24,30})",
202
+ "keywords": [
203
+ "swmtkn-1-"
204
+ ],
205
+ "confidence": "high",
206
+ "filter": "entropy(finding[\"secret\"]) < 3.5\n",
207
+ "entropy": 3.5
208
+ },
209
+ {
210
+ "id": "docker-swarm-unlock-key",
211
+ "description": "Docker Swarm unlock key.",
212
+ "regex": "\\b(SWMKEY-1-[A-Za-z0-9+/]{40,50})",
213
+ "keywords": [
214
+ "swmkey-1-"
215
+ ],
216
+ "confidence": "high",
217
+ "filter": "entropy(finding[\"secret\"]) < 3.5\n",
218
+ "entropy": 3.5
219
+ },
220
+ {
221
+ "id": "dockerhub-organization-access-token",
222
+ "description": "Detected a Docker Hub organization access token, which may expose organization repositories.",
223
+ "regex": "\\b(dckr_oat_[A-Za-z0-9_-]{32})(?:\\\\?['\"\\x60]|[\\s;]|\\\\[nr]|$)",
224
+ "keywords": [
225
+ "dckr_oat_"
226
+ ],
227
+ "confidence": "high",
228
+ "filter": "entropy(finding[\"secret\"]) < 3.5\n",
229
+ "entropy": 3.5
230
+ },
231
+ {
232
+ "id": "dockerhub-personal-access-token",
233
+ "description": "Detected a Docker Hub personal access token, which may expose Docker Hub account access.",
234
+ "regex": "\\b(dckr_pat_[A-Za-z0-9_-]{27})(?:\\\\?['\"\\x60]|[\\s;]|\\\\[nr]|$)",
235
+ "keywords": [
236
+ "dckr_pat_"
237
+ ],
238
+ "confidence": "high",
239
+ "filter": "entropy(finding[\"secret\"]) < 3.5\n",
240
+ "entropy": 3.5
241
+ },
242
+ {
243
+ "id": "ebay-client-secret",
244
+ "description": "eBay client secret.",
245
+ "regex": "(?i:(?:ebay(?:[_. -]*(?:client|api))?[_. -]*(?:secret|key))(?:[ \\t\\w.-]{0,20})[\\s'\"]{0,3})(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'\"\\s=]{0,5}(PRD-[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4,12})(?:\\\\?['\"\\x60]|[\\s;]|\\\\[nr]|$)",
246
+ "keywords": [
247
+ "ebay"
248
+ ],
249
+ "confidence": "high",
250
+ "filter": "entropy(finding[\"secret\"]) < 3.0\n",
251
+ "entropy": 3.0
252
+ },
253
+ {
254
+ "id": "elastic-cloud-api-key",
255
+ "description": "Identified an Elastic Cloud Serverless API key, which may expose Elasticsearch and Kibana resources to unauthorized access.",
256
+ "regex": "\\b(essu_[A-Za-z0-9_\\-]{60,200}={0,2})(?:\\\\?['\"\\x60]|[\\s;]|\\\\[nr]|$)",
257
+ "keywords": [
258
+ "essu_"
259
+ ],
260
+ "confidence": "high",
261
+ "filter": "entropy(finding[\"secret\"]) < 3.5\n",
262
+ "entropy": 3.5
263
+ },
264
+ {
265
+ "id": "elevenlabs-api-key",
266
+ "description": "Detected an ElevenLabs API Key, which may expose AI voice synthesis services to unauthorized access.",
267
+ "regex": "(?i)(?:elevenlabs)(?:[ \\t\\w.-]{0,20})[\\s'\"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'\"\\s=]{0,5}(sk_[0-9a-f]{48})(?:\\\\?['\"\\x60]|[\\s;]|\\\\[nr]|$)",
268
+ "keywords": [
269
+ "elevenlabs"
270
+ ],
271
+ "confidence": "high",
272
+ "filter": "entropy(finding[\"secret\"]) <= 3.5\n",
273
+ "entropy": 3.5,
274
+ "entropyInclusive": true
275
+ },
276
+ {
277
+ "id": "endorlabs-api-key",
278
+ "description": "Detected an Endor Labs API Key, which may compromise supply chain security scanning and software composition analysis.",
279
+ "regex": "(?i)(?:endor(?:labs)?|key)(?:[ \\t\\w.-]{0,20})[\\s'\"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'\"\\s=]{0,5}(endr\\+[A-Za-z0-9-]{16})(?:\\\\?['\"\\x60]|[\\s;]|\\\\[nr]|$)",
280
+ "keywords": [
281
+ "endr+"
282
+ ],
283
+ "confidence": "high",
284
+ "filter": "entropy(finding[\"secret\"]) < 3.0\n",
285
+ "entropy": 3.0
286
+ },
287
+ {
288
+ "id": "endorlabs-api-secret",
289
+ "description": "Detected an Endor Labs API Secret, which together with an API key grants full access to Endor Labs supply chain security services.",
290
+ "regex": "(?i)(?:endor(?:labs)?|secret)(?:[ \\t\\w.-]{0,20})[\\s'\"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'\"\\s=]{0,5}(endr\\+[A-Za-z0-9-]{16})(?:\\\\?['\"\\x60]|[\\s;]|\\\\[nr]|$)",
291
+ "keywords": [
292
+ "endr+"
293
+ ],
294
+ "confidence": "high",
295
+ "filter": "entropy(finding[\"secret\"]) < 3.5\n",
296
+ "entropy": 3.5
297
+ },
298
+ {
299
+ "id": "etsy-open-api-key",
300
+ "description": "Found an Etsy Open API key, potentially compromising Etsy app access and shop integrations.",
301
+ "regex": "(?i)(?:etsy|x-api-key)(?:[ \\t\\w.-]{0,20})[\\s'\"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'\"\\s=]{0,5}([a-z0-9]{24}:[a-z0-9]{10,64})(?:\\\\?['\"\\x60]|[\\s;]|\\\\[nr]|$)",
302
+ "keywords": [
303
+ "etsy",
304
+ "x-api-key"
305
+ ],
306
+ "confidence": "high",
307
+ "filter": "entropy(finding[\"secret\"]) < 3.0\n",
308
+ "entropy": 3.0
309
+ },
310
+ {
311
+ "id": "exoscale-api-key",
312
+ "description": "Identified an Exoscale API key paired with a secret, which together grant programmatic access to Exoscale cloud resources.",
313
+ "regex": "\\b(EXO[a-zA-Z0-9]{24,30})(?:\\\\?['\"\\x60]|[\\s;]|\\\\[nr]|$)",
314
+ "keywords": [
315
+ "exo"
316
+ ],
317
+ "confidence": "high",
318
+ "filter": "entropy(finding[\"secret\"]) < 3.0\n",
319
+ "entropy": 3.0
320
+ },
321
+ {
322
+ "id": "fal-api-key.1",
323
+ "description": "Fal.ai API key, which may allow access to model execution, billing, and platform APIs.",
324
+ "regex": "(?i:(?:falai|fal_ai|fal-ai|fal.ai|fal-api|fal_api|fal_key|fal-key)(?:[ \\t\\w.-]{0,20})[\\s'\"]{0,3})(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'\"\\s=]{0,5}([a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}:[a-f0-9]{32})(?:\\\\?['\"\\x60]|[\\s;]|\\\\[nr]|$)",
325
+ "keywords": [
326
+ "falai",
327
+ "fal_ai",
328
+ "fal-ai",
329
+ "fal.ai",
330
+ "fal-api",
331
+ "fal_api",
332
+ "fal_key",
333
+ "fal-key"
334
+ ],
335
+ "confidence": "high",
336
+ "filter": "entropy(finding[\"secret\"]) < 3.5\n",
337
+ "entropy": 3.5
338
+ },
339
+ {
340
+ "id": "figma-personal-access-header-token",
341
+ "description": "Uncovered a Figma Personal Access Token in a header, which may compromise design assets and team collaboration.",
342
+ "regex": "(?i)(?:x-figma-token|xfigmatoken|x_figma_token)(?:[ \\t\\w.-]{0,20})[\\s'\"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'\"\\s=]{0,5}([0-9A-F]{4}-[0-9A-F]{8}(?:-[0-9A-F]{4}){3}-[0-9A-F]{12})(?:\\\\?['\"\\x60]|[\\s;]|\\\\[nr]|$)",
343
+ "keywords": [
344
+ "x-figma-token",
345
+ "xfigmatoken",
346
+ "x_figma_token"
347
+ ],
348
+ "confidence": "high"
349
+ },
350
+ {
351
+ "id": "figma-personal-access-token",
352
+ "description": "Uncovered a Figma Personal Access Token, which may compromise design assets and team collaboration.",
353
+ "regex": "(?i)\\b(figd_[A-Z0-9_-]{38,42})(?:\\\\?['\"\\x60]|[\\s;]|\\\\[nr]|$)",
354
+ "keywords": [
355
+ "figd_"
356
+ ],
357
+ "confidence": "high",
358
+ "filter": "entropy(finding[\"secret\"]) <= 3.5\n",
359
+ "entropy": 3.5,
360
+ "entropyInclusive": true
361
+ },
362
+ {
363
+ "id": "fullstory-api-key",
364
+ "description": "FullStory API key.",
365
+ "regex": "(?i)(?:(?:fullstory|fs_api|fullstory_api))(?:[ \\t\\w.-]{0,20})[\\s'\"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'\"\\s=]{0,5}((?:na1|eu1)\\.[A-Za-z0-9]{20,})(?:\\\\?['\"\\x60]|[\\s;]|\\\\[nr]|$)",
366
+ "keywords": [
367
+ "fullstory",
368
+ "fs_api"
369
+ ],
370
+ "confidence": "medium",
371
+ "filter": "entropy(finding[\"secret\"]) < 3.3\n",
372
+ "entropy": 3.3
373
+ },
374
+ {
375
+ "id": "gcp-application-default-credentials",
376
+ "description": "Google (GCP) Application Default Credentials",
377
+ "regex": "\\{[^{]+(?:(?:\"client_secret\"\\s*:\\s*\"[^\"]+\"[^}]+\"refresh_token\"\\s*:\\s*\"[^\"]+\")|(?:\"refresh_token\"\\s*:\\s*\"[^\"]+\"[^}]+\"client_secret\"\\s*:\\s*\"[^\"]+\"))[^}]+\\}",
378
+ "keywords": [
379
+ ".apps.googleusercontent.com"
380
+ ],
381
+ "confidence": "high"
382
+ },
383
+ {
384
+ "id": "gcp-gemini-api",
385
+ "description": "Detected a Google Gemini API key, which may expose Gemini model access and usage to unauthorized parties.",
386
+ "regex": "\\b(AQ\\.Ab8RN6[A-Za-z0-9_-]{44})(?:\\\\?['\"\\x60]|[\\s;]|\\\\[nr]|$)",
387
+ "keywords": [
388
+ "aq.ab8rn6"
389
+ ],
390
+ "confidence": "high",
391
+ "filter": "entropy(finding[\"secret\"]) <= 4.0\n",
392
+ "entropy": 4.0,
393
+ "entropyInclusive": true
394
+ },
395
+ {
396
+ "id": "gcp-service-account",
397
+ "description": "Google (GCP) Service-account",
398
+ "regex": "\\{[^{]+(?:(?:\"private_key\"\\s*:\\s*\"-----BEGIN (?:RSA )?PRIVATE KEY-----[^}]+auth_provider_x509_cert_url)|(?:auth_provider_x509_cert_url[^}]+\"private_key\"\\s*:\\s*\"-----BEGIN (?:RSA )?PRIVATE KEY-----))[^}]+\\}",
399
+ "keywords": [
400
+ "provider_x509"
401
+ ],
402
+ "confidence": "high",
403
+ "filter": "containsAny(finding[\"secret\"], [\"image-pulling@authenticated-image-pulling.iam.gserviceaccount.com\"])\n",
404
+ "reject": [
405
+ "image\\-pulling@authenticated\\-image\\-pulling\\.iam\\.gserviceaccount\\.com"
406
+ ]
407
+ },
408
+ {
409
+ "id": "gitea-access-token",
410
+ "description": "Detected a Gitea Access Token, which may expose self-hosted Git repositories and associated code to unauthorized access.",
411
+ "regex": "(?i)(?:gitea[_.-]?(?:token|key|secret|access))(?:[ \\t\\w.-]{0,20})[\\s'\"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'\"\\s=]{0,5}([a-f0-9]{40})(?:\\\\?['\"\\x60]|[\\s;]|\\\\[nr]|$)",
412
+ "keywords": [
413
+ "gitea"
414
+ ],
415
+ "confidence": "high",
416
+ "filter": "filter.entropy(finding[\"secret\"]) < 3.3 || filter.tokenRatio(finding[\"secret\"]) >= 2.5\n",
417
+ "entropy": 3.3
418
+ },
419
+ {
420
+ "id": "gitlab-incoming-mail-address-token",
421
+ "description": "Identified a GitLab incoming mail token embedded in an email address, risking manipulation of data sent by mail.",
422
+ "regex": "incoming\\+(?:[A-Za-z0-9._-]+-)?\\d+-([A-Za-z0-9_-]+)-(?:issue(?:-\\d+)?|merge-request)@",
423
+ "keywords": [
424
+ "incoming+"
425
+ ],
426
+ "confidence": "high",
427
+ "filter": "entropy(finding[\"secret\"]) <= 3.0\n",
428
+ "entropy": 3.0,
429
+ "entropyInclusive": true
430
+ },
431
+ {
432
+ "id": "gitlab-pat-routable-versioned",
433
+ "description": "Identified a GitLab Personal Access Token (routable, versioned), risking unauthorized access to GitLab repositories and codebase exposure.",
434
+ "regex": "\\bglpat-[0-9a-zA-Z_-]{27,300}\\.[0-9a-z]{2}\\.[0-9a-z]{9}\\b",
435
+ "keywords": [
436
+ "glpat-"
437
+ ],
438
+ "confidence": "high",
439
+ "filter": "entropy(finding[\"secret\"]) <= 4.0\n",
440
+ "entropy": 4.0,
441
+ "entropyInclusive": true
442
+ },
443
+ {
444
+ "id": "greptile-api-key",
445
+ "description": "Detected a Greptile API Key, which may expose AI-powered code search and analysis services to unauthorized access.",
446
+ "regex": "(?i)(?:greptile)(?:[ \\t\\w.-]{0,20})[\\s'\"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'\"\\s=]{0,5}([a-zA-Z0-9+/]{48})(?:\\\\?['\"\\x60]|[\\s;]|\\\\[nr]|$)",
447
+ "keywords": [
448
+ "greptile"
449
+ ],
450
+ "confidence": "high",
451
+ "filter": "filter.entropy(finding[\"secret\"]) < 3.5 || filter.tokenRatio(finding[\"secret\"]) >= 2.5\n",
452
+ "entropy": 3.5
453
+ }
454
+ ]