gitlab-secret_detection 0.1.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,1084 @@
1
+ # This file contains a subset of rules pulled from the original source file.
2
+ # Original Source: https://gitlab.com/gitlab-org/security-products/analyzers/secrets/-/blob/master/gitleaks.toml
3
+ # Reference: https://gitlab.com/gitlab-org/gitlab/-/issues/427011
4
+ title = "gitleaks config"
5
+
6
+ [[rules]]
7
+ id = "gitlab_personal_access_token"
8
+ description = "GitLab Personal Access Token"
9
+ regex = '''\bglpat-[0-9a-zA-Z_\-]{20}\b'''
10
+ tags = ["gitlab", "revocation_type", "gitlab_blocking"]
11
+ keywords = [
12
+ "glpat",
13
+ ]
14
+
15
+ [[rules]]
16
+ id = "gitlab_pipeline_trigger_token"
17
+ description = "GitLab Pipeline Trigger Token"
18
+ regex = '''\bglptt-[0-9a-zA-Z_\-]{40}\b'''
19
+ tags = ["gitlab", "gitlab_blocking"]
20
+ keywords = [
21
+ "glptt",
22
+ ]
23
+
24
+ [[rules]]
25
+ id = "gitlab_runner_registration_token"
26
+ description = "GitLab Runner Registration Token"
27
+ regex = '''\bGR1348941[0-9a-zA-Z_\-]{20}\b'''
28
+ tags = ["gitlab", "gitlab_blocking"]
29
+ keywords = [
30
+ "GR1348941",
31
+ ]
32
+
33
+ [[rules]]
34
+ id = "gitlab_runner_auth_token"
35
+ description = "GitLab Runner Authentication Token"
36
+ regex = '''\bglrt-[0-9a-zA-Z_\-]{20}\b'''
37
+ tags = ["gitlab", "gitlab_blocking"]
38
+ keywords = [
39
+ "glrt",
40
+ ]
41
+
42
+ [[rules]]
43
+ id = "gitlab_feed_token"
44
+ description = "GitLab Feed Token"
45
+ regex = '''\bfeed_token=[0-9a-zA-Z_\-]{20}\b'''
46
+ tags = ["gitlab"]
47
+ keywords = [
48
+ "feed_token",
49
+ ]
50
+
51
+ [[rules]]
52
+ id = "gitlab_oauth_app_secret"
53
+ description = "GitLab OAuth Application Secrets"
54
+ regex = '''\bgloas-[0-9a-zA-Z_\-]{64}\b'''
55
+ tags = ["gitlab", "gitlab_blocking"]
56
+ keywords = [
57
+ "gloas",
58
+ ]
59
+
60
+ [[rules]]
61
+ id = "gitlab_feed_token_v2"
62
+ description = "GitLab Feed token"
63
+ regex = '''\bglft-[0-9a-zA-Z_\-]{20}\b'''
64
+ tags = ["gitlab", "gitlab_blocking"]
65
+ keywords = [
66
+ "glft",
67
+ ]
68
+
69
+ [[rules]]
70
+ id = "gitlab_kubernetes_agent_token"
71
+ description = "GitLab Agent for Kubernetes token"
72
+ regex = '''\bglagent-[0-9a-zA-Z_\-]{50}\b'''
73
+ tags = ["gitlab", "gitlab_blocking"]
74
+ keywords = [
75
+ "glagent",
76
+ ]
77
+
78
+ [[rules]]
79
+ id = "gitlab_incoming_email_token"
80
+ description = "GitLab Incoming email token"
81
+ regex = '''\bglimt-[0-9a-zA-Z_\-]{25}\b'''
82
+ tags = ["gitlab", "gitlab_blocking"]
83
+ keywords = [
84
+ "glimt",
85
+ ]
86
+
87
+ [[rules]]
88
+ id = "gitlab_deploy_token"
89
+ description = "GitLab Deploy Token"
90
+ regex = '''\bgldt-[0-9a-zA-Z_\-]{20}\b'''
91
+ tags = ["gitlab"]
92
+ keywords = [
93
+ "gldt",
94
+ ]
95
+
96
+ [[rules]]
97
+ id = "gitlab_scim_oauth_token"
98
+ description = "GitLab SCIM token"
99
+ regex = '''\bglsoat-[0-9a-zA-Z_\-]{20}\b'''
100
+ tags = ["gitlab"]
101
+ keywords = [
102
+ "glsoat",
103
+ ]
104
+
105
+ [[rules]]
106
+ id = "gitlab_ci_build_token"
107
+ description = "GitLab CI Build (Job) token"
108
+ regex = '''\bglcbt-[0-9a-zA-Z]{1,5}_[0-9a-zA-Z_-]{20}\b'''
109
+ tags = ["gitlab"]
110
+ keywords = [
111
+ "glcbt",
112
+ ]
113
+
114
+ [[rules]]
115
+ id = "AWS"
116
+ description = "AWS Access Token"
117
+ regex = '''\bAKIA[0-9A-Z]{16}\b'''
118
+ tags = ["aws", "revocation_type", "gitlab_blocking"]
119
+ keywords = [
120
+ "AKIA",
121
+ ]
122
+
123
+ # Cryptographic keys
124
+ [[rules]]
125
+ id = "PKCS8 private key"
126
+ description = "PKCS8 private key"
127
+ regex = '''-----BEGIN PRIVATE KEY-----'''
128
+ keywords = [
129
+ "-----BEGIN PRIVATE KEY-----",
130
+ ]
131
+
132
+ [[rules]]
133
+ id = "RSA private key"
134
+ description = "RSA private key"
135
+ regex = '''-----BEGIN RSA PRIVATE KEY-----'''
136
+ keywords = [
137
+ "-----BEGIN RSA PRIVATE KEY-----",
138
+ ]
139
+
140
+ [[rules]]
141
+ id = "SSH private key"
142
+ description = "SSH private key"
143
+ regex = '''-----BEGIN OPENSSH PRIVATE KEY-----'''
144
+ keywords = [
145
+ "-----BEGIN OPENSSH PRIVATE KEY-----",
146
+ ]
147
+
148
+ [[rules]]
149
+ id = "PGP private key"
150
+ description = "PGP private key"
151
+ regex = '''-----BEGIN PGP PRIVATE KEY BLOCK-----'''
152
+ keywords = [
153
+ "-----BEGIN PGP PRIVATE KEY BLOCK-----",
154
+ ]
155
+
156
+ [[rules]]
157
+ description = "systemd machine-id"
158
+ id = "systemd-machine-id"
159
+ path = '''^machine-id$'''
160
+ regex = '''^[0-9a-f]{32}\n$'''
161
+ entropy = 3.5
162
+
163
+ [[rules]]
164
+ id = "Github Personal Access Token"
165
+ description = "Github Personal Access Token"
166
+ regex = '''ghp_[0-9a-zA-Z]{36}'''
167
+ tags = ["gitlab_blocking"]
168
+ keywords = [
169
+ "ghp_",
170
+ ]
171
+
172
+ [[rules]]
173
+ id = "Github OAuth Access Token"
174
+ description = "Github OAuth Access Token"
175
+ regex = '''gho_[0-9a-zA-Z]{36}'''
176
+ tags = ["gitlab_blocking"]
177
+ keywords = [
178
+ "gho_",
179
+ ]
180
+
181
+ [[rules]]
182
+ id = "SSH (DSA) private key"
183
+ description = "SSH (DSA) private key"
184
+ regex = '''-----BEGIN DSA PRIVATE KEY-----'''
185
+ keywords = [
186
+ "-----BEGIN DSA PRIVATE KEY-----",
187
+ ]
188
+
189
+ [[rules]]
190
+ id = "SSH (EC) private key"
191
+ description = "SSH (EC) private key"
192
+ regex = '''-----BEGIN EC PRIVATE KEY-----'''
193
+ keywords = [
194
+ "-----BEGIN EC PRIVATE KEY-----",
195
+ ]
196
+
197
+
198
+ [[rules]]
199
+ id = "Github App Token"
200
+ description = "Github App Token"
201
+ regex = '''(ghu|ghs)_[0-9a-zA-Z]{36}'''
202
+ tags = ["gitlab_blocking"]
203
+ keywords = [
204
+ "ghu_",
205
+ "ghs_"
206
+ ]
207
+
208
+ [[rules]]
209
+ id = "Github Refresh Token"
210
+ description = "Github Refresh Token"
211
+ regex = '''ghr_[0-9a-zA-Z]{76}'''
212
+ tags = ["gitlab_blocking"]
213
+ keywords = [
214
+ "ghr_"
215
+ ]
216
+
217
+ [[rules]]
218
+ id = "Shopify shared secret"
219
+ description = "Shopify shared secret"
220
+ regex = '''shpss_[a-fA-F0-9]{32}'''
221
+ tags = ["gitlab_blocking"]
222
+ keywords = [
223
+ "shpss_"
224
+ ]
225
+
226
+ [[rules]]
227
+ id = "Shopify access token"
228
+ description = "Shopify access token"
229
+ regex = '''shpat_[a-fA-F0-9]{32}'''
230
+ tags = ["gitlab_blocking"]
231
+ keywords = [
232
+ "shpat_"
233
+ ]
234
+
235
+ [[rules]]
236
+ id = "Shopify custom app access token"
237
+ description = "Shopify custom app access token"
238
+ regex = '''shpca_[a-fA-F0-9]{32}'''
239
+ tags = ["gitlab_blocking"]
240
+ keywords = [
241
+ "shpca_"
242
+ ]
243
+
244
+ [[rules]]
245
+ id = "Shopify private app access token"
246
+ description = "Shopify private app access token"
247
+ regex = '''shppa_[a-fA-F0-9]{32}'''
248
+ tags = ["gitlab_blocking"]
249
+ keywords = [
250
+ "shppa_"
251
+ ]
252
+
253
+ [[rules]]
254
+ id = "Slack token"
255
+ description = "Slack token"
256
+ regex = '''xox[baprs]-([0-9a-zA-Z]{10,48})'''
257
+ tags = ["gitlab_blocking"]
258
+ keywords = [
259
+ "xoxb",
260
+ "xoxa",
261
+ "xoxp",
262
+ "xoxr",
263
+ "xoxs",
264
+ ]
265
+
266
+ [[rules]]
267
+ id = "Stripe"
268
+ description = "Stripe"
269
+ regex = '''(?i)(sk|pk)_(test|live)_[0-9a-z]{10,32}'''
270
+ tags = ["gitlab_blocking"]
271
+ keywords = [
272
+ "sk_test",
273
+ "pk_test",
274
+ "sk_live",
275
+ "pk_live",
276
+ ]
277
+
278
+ [[rules]]
279
+ id = "PyPI upload token"
280
+ description = "PyPI upload token"
281
+ regex = '''pypi-AgEIcHlwaS5vcmc[A-Za-z0-9-_]{50,1000}'''
282
+ tags = ["pypi", "revocation_type", "gitlab_blocking"]
283
+ keywords = [
284
+ "pypi-AgEIcHlwaS5vcmc",
285
+ ]
286
+
287
+ [[rules]]
288
+ id = "Google (GCP) Service-account"
289
+ description = "Google (GCP) Service-account"
290
+ tags = ["gitlab_partner_token", "revocation_type", "gitlab_blocking"]
291
+ regex = '''\"private_key\":\s*\"-{5}BEGIN PRIVATE KEY-{5}[\s\S]*?",'''
292
+ keywords = [
293
+ "service_account",
294
+ ]
295
+
296
+ [[rules]]
297
+ id = "GCP API key"
298
+ description = "GCP API keys can be misused to gain API quota from billed projects"
299
+ regex = '''(?i)\b(AIza[0-9A-Za-z-_]{35})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
300
+ secretGroup = 1
301
+ tags = ["gitlab_partner_token", "revocation_type", "gitlab_blocking"]
302
+ keywords = [
303
+ "AIza",
304
+ ]
305
+
306
+ [[rules]]
307
+ id = "GCP OAuth client secret"
308
+ description = "GCP OAuth client secrets can be misused to spoof your application"
309
+ tags = ["gitlab_partner_token", "revocation_type", "gitlab_blocking"]
310
+ regex = '''GOCSPX-[a-zA-Z0-9_-]{28}'''
311
+ keywords = [
312
+ "GOCSPX-",
313
+ ]
314
+
315
+ [[rules]]
316
+ # demo of this regex not matching passwords in urls that contain env vars:
317
+ # https://regex101.com/r/rT9Lv9/6
318
+ id = "Password in URL"
319
+ description = "Password in URL"
320
+ regex = '''[a-zA-Z]{3,10}:\/\/[^$][^:@\/\n]{3,20}:[^$][^:@\n\/]{3,40}@.{1,100}'''
321
+
322
+
323
+ [[rules]]
324
+ id = "Heroku API Key"
325
+ description = "Heroku API Key"
326
+ regex = '''(?i)(?:heroku)(?:[0-9a-z\-_\t .]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}([0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12})(?:['|\"|\n|\r|\s|\x60]|$)'''
327
+ secretGroup = 1
328
+ keywords = [
329
+ "heroku",
330
+ ]
331
+
332
+ [[rules]]
333
+ id = "Slack Webhook"
334
+ description = "Slack Webhook"
335
+ regex = '''https://hooks.slack.com/services/T[a-zA-Z0-9_]{8}/B[a-zA-Z0-9_]{8,12}/[a-zA-Z0-9_]{24}'''
336
+ keywords = [
337
+ "https://hooks.slack.com/services",
338
+ ]
339
+
340
+ [[rules]]
341
+ id = "Twilio API Key"
342
+ description = "Twilio API Key"
343
+ regex = '''SK[0-9a-fA-F]{32}'''
344
+ keywords = [
345
+ "SK",
346
+ "twilio"
347
+ ]
348
+
349
+ [[rules]]
350
+ id = "Age secret key"
351
+ description = "Age secret key"
352
+ regex = '''AGE-SECRET-KEY-1[QPZRY9X8GF2TVDW0S3JN54KHCE6MUA7L]{58}'''
353
+ keywords = [
354
+ "AGE-SECRET-KEY-1",
355
+ ]
356
+
357
+ [[rules]]
358
+ id = "Facebook token"
359
+ description = "Facebook token"
360
+ regex = '''(?i)(facebook[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-f0-9]{32})['\"]'''
361
+ secretGroup = 3
362
+ keywords = [
363
+ "facebook",
364
+ ]
365
+
366
+ [[rules]]
367
+ id = "Twitter token"
368
+ description = "Twitter token"
369
+ regex = '''(?i)(twitter[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-f0-9]{35,44})['\"]'''
370
+ secretGroup = 3
371
+ keywords = [
372
+ "twitter",
373
+ ]
374
+
375
+ [[rules]]
376
+ id = "Adobe Client ID (Oauth Web)"
377
+ description = "Adobe Client ID (Oauth Web)"
378
+ regex = '''(?i)(adobe[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-f0-9]{32})['\"]'''
379
+ secretGroup = 3
380
+ keywords = [
381
+ "adobe",
382
+ ]
383
+
384
+ [[rules]]
385
+ id = "Adobe Client Secret"
386
+ description = "Adobe Client Secret"
387
+ regex = '''(p8e-)(?i)[a-z0-9]{32}'''
388
+ keywords = [
389
+ "adobe",
390
+ "p8e-,"
391
+ ]
392
+
393
+ [[rules]]
394
+ id = "Alibaba AccessKey ID"
395
+ description = "Alibaba AccessKey ID"
396
+ regex = '''(LTAI)(?i)[a-z0-9]{20}'''
397
+ keywords = [
398
+ "LTAI",
399
+ ]
400
+
401
+ [[rules]]
402
+ id = "Alibaba Secret Key"
403
+ description = "Alibaba Secret Key"
404
+ regex = '''(?i)(alibaba[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{30})['\"]'''
405
+ secretGroup = 3
406
+ keywords = [
407
+ "alibaba",
408
+ ]
409
+
410
+ [[rules]]
411
+ id = "Asana Client ID"
412
+ description = "Asana Client ID"
413
+ regex = '''(?i)(asana[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([0-9]{16})['\"]'''
414
+ secretGroup = 3
415
+ keywords = [
416
+ "asana",
417
+ ]
418
+
419
+ [[rules]]
420
+ id = "Asana Client Secret"
421
+ description = "Asana Client Secret"
422
+ regex = '''(?i)(asana[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{32})['\"]'''
423
+ secretGroup = 3
424
+ keywords = [
425
+ "asana",
426
+ ]
427
+
428
+ [[rules]]
429
+ id = "Atlassian API token"
430
+ description = "Atlassian API token"
431
+ regex = '''(?i)(atlassian[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{24})['\"]'''
432
+ secretGroup = 3
433
+ keywords = [
434
+ "atlassian",
435
+ ]
436
+
437
+ [[rules]]
438
+ id = "Bitbucket client ID"
439
+ description = "Bitbucket client ID"
440
+ regex = '''(?i)(bitbucket[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{32})['\"]'''
441
+ secretGroup = 3
442
+ keywords = [
443
+ "bitbucket",
444
+ ]
445
+
446
+ [[rules]]
447
+ id = "Bitbucket client secret"
448
+ description = "Bitbucket client secret"
449
+ regex = '''(?i)(bitbucket[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9_\-]{64})['\"]'''
450
+ secretGroup = 3
451
+ keywords = [
452
+ "bitbucket",
453
+ ]
454
+
455
+ [[rules]]
456
+ id = "Beamer API token"
457
+ description = "Beamer API token"
458
+ regex = '''(?i)(beamer[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"](b_[a-z0-9=_\-]{44})['\"]'''
459
+ secretGroup = 3
460
+ keywords = [
461
+ "beamer",
462
+ ]
463
+
464
+ [[rules]]
465
+ id = "Clojars API token"
466
+ description = "Clojars API token"
467
+ regex = '''(CLOJARS_)(?i)[a-z0-9]{60}'''
468
+ keywords = [
469
+ "CLOJARS_",
470
+ ]
471
+
472
+ [[rules]]
473
+ id = "Contentful delivery API token"
474
+ description = "Contentful delivery API token"
475
+ regex = '''(?i)(contentful[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9\-=_]{43})['\"]'''
476
+ secretGroup = 3
477
+ keywords = [
478
+ "contentful",
479
+ ]
480
+
481
+ [[rules]]
482
+ id = "Contentful preview API token"
483
+ description = "Contentful preview API token"
484
+ regex = '''(?i)(contentful[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9\-=_]{43})['\"]'''
485
+ secretGroup = 3
486
+ keywords = [
487
+ "contentful",
488
+ ]
489
+
490
+ [[rules]]
491
+ id = "Databricks API token"
492
+ description = "Databricks API token"
493
+ regex = '''dapi[a-h0-9]{32}'''
494
+ keywords = [
495
+ "dapi",
496
+ "databricks"
497
+ ]
498
+
499
+ [[rules]]
500
+ description = "DigitalOcean OAuth Access Token"
501
+ id = "digitalocean-access-token"
502
+ regex = '''(?i)\b(doo_v1_[a-f0-9]{64})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
503
+ secretGroup = 1
504
+ keywords = [
505
+ "doo_v1_",
506
+ ]
507
+
508
+ [[rules]]
509
+ description = "DigitalOcean Personal Access Token"
510
+ id = "digitalocean-pat"
511
+ regex = '''(?i)\b(dop_v1_[a-f0-9]{64})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
512
+ secretGroup = 1
513
+ keywords = [
514
+ "dop_v1_",
515
+ ]
516
+
517
+ [[rules]]
518
+ description = "DigitalOcean OAuth Refresh Token"
519
+ id = "digitalocean-refresh-token"
520
+ regex = '''(?i)\b(dor_v1_[a-f0-9]{64})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
521
+ secretGroup = 1
522
+ keywords = [
523
+ "dor_v1_",
524
+ ]
525
+
526
+ [[rules]]
527
+ id = "Discord API key"
528
+ description = "Discord API key"
529
+ regex = '''(?i)(discord[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-h0-9]{64})['\"]'''
530
+ secretGroup = 3
531
+ keywords = [
532
+ "discord",
533
+ ]
534
+
535
+ [[rules]]
536
+ id = "Discord client ID"
537
+ description = "Discord client ID"
538
+ regex = '''(?i)(discord[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([0-9]{18})['\"]'''
539
+ secretGroup = 3
540
+ keywords = [
541
+ "discord",
542
+ ]
543
+
544
+ [[rules]]
545
+ id = "Discord client secret"
546
+ description = "Discord client secret"
547
+ regex = '''(?i)(discord[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9=_\-]{32})['\"]'''
548
+ secretGroup = 3
549
+ keywords = [
550
+ "discord",
551
+ ]
552
+
553
+ [[rules]]
554
+ id = "Doppler API token"
555
+ description = "Doppler API token"
556
+ regex = '''['\"](dp\.pt\.)(?i)[a-z0-9]{43}['\"]'''
557
+ keywords = [
558
+ "doppler",
559
+ ]
560
+
561
+ [[rules]]
562
+ id = "Dropbox API secret/key"
563
+ description = "Dropbox API secret/key"
564
+ regex = '''(?i)(dropbox[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{15})['\"]'''
565
+ keywords = [
566
+ "dropbox",
567
+ ]
568
+
569
+ [[rules]]
570
+ id = "Dropbox short lived API token"
571
+ description = "Dropbox short lived API token"
572
+ regex = '''(?i)(dropbox[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"](sl\.[a-z0-9\-=_]{135})['\"]'''
573
+ keywords = [
574
+ "dropbox",
575
+ ]
576
+
577
+ [[rules]]
578
+ id = "Dropbox long lived API token"
579
+ description = "Dropbox long lived API token"
580
+ regex = '''(?i)(dropbox[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"][a-z0-9]{11}(AAAAAAAAAA)[a-z0-9\-_=]{43}['\"]'''
581
+ keywords = [
582
+ "dropbox",
583
+ ]
584
+
585
+ [[rules]]
586
+ id = "Duffel API token"
587
+ description = "Duffel API token"
588
+ regex = '''['\"]duffel_(test|live)_(?i)[a-z0-9_-]{43}['\"]'''
589
+ keywords = [
590
+ "duffel",
591
+ ]
592
+
593
+ [[rules]]
594
+ id = "Dynatrace API token"
595
+ description = "Dynatrace API token"
596
+ regex = '''['\"]dt0c01\.(?i)[a-z0-9]{24}\.[a-z0-9]{64}['\"]'''
597
+ keywords = [
598
+ "dt0c01",
599
+ ]
600
+
601
+ [[rules]]
602
+ id = "EasyPost API token"
603
+ description = "EasyPost API token"
604
+ regex = '''['\"]EZAK(?i)[a-z0-9]{54}['\"]'''
605
+ keywords = [
606
+ "EZAK",
607
+ ]
608
+
609
+
610
+ [[rules]]
611
+ id = "EasyPost test API token"
612
+ description = "EasyPost test API token"
613
+ regex = '''['\"]EZTK(?i)[a-z0-9]{54}['\"]'''
614
+ keywords = [
615
+ "EZTK",
616
+ ]
617
+
618
+ [[rules]]
619
+ id = "Fastly API token"
620
+ description = "Fastly API token"
621
+ regex = '''(?i)(fastly[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9\-=_]{32})['\"]'''
622
+ secretGroup = 3
623
+ keywords = [
624
+ "fastly",
625
+ ]
626
+
627
+ [[rules]]
628
+ id = "Finicity client secret"
629
+ description = "Finicity client secret"
630
+ regex = '''(?i)(finicity[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{20})['\"]'''
631
+ secretGroup = 3
632
+ keywords = [
633
+ "finicity",
634
+ ]
635
+
636
+ [[rules]]
637
+ id = "Finicity API token"
638
+ description = "Finicity API token"
639
+ regex = '''(?i)(finicity[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-f0-9]{32})['\"]'''
640
+ secretGroup = 3
641
+ keywords = [
642
+ "finicity",
643
+ ]
644
+
645
+ [[rules]]
646
+ id = "Flutterwave public key"
647
+ description = "Flutterwave public key"
648
+ regex = '''FLWPUBK_TEST-(?i)[a-h0-9]{32}-X'''
649
+ keywords = [
650
+ "FLWPUBK_TEST",
651
+ ]
652
+
653
+ [[rules]]
654
+ id = "Flutterwave secret key"
655
+ description = "Flutterwave secret key"
656
+ regex = '''FLWSECK_TEST-(?i)[a-h0-9]{32}-X'''
657
+ keywords = [
658
+ "FLWSECK_TEST",
659
+ ]
660
+
661
+ [[rules]]
662
+ id = "Flutterwave encrypted key"
663
+ description = "Flutterwave encrypted key"
664
+ regex = '''FLWSECK_TEST[a-h0-9]{12}'''
665
+ keywords = [
666
+ "FLWSECK_TEST",
667
+ ]
668
+
669
+ [[rules]]
670
+ id = "Frame.io API token"
671
+ description = "Frame.io API token"
672
+ regex = '''fio-u-(?i)[a-z0-9-_=]{64}'''
673
+ keywords = [
674
+ "fio-u-",
675
+ ]
676
+
677
+ [[rules]]
678
+ id = "GoCardless API token"
679
+ description = "GoCardless API token"
680
+ regex = '''['\"]live_(?i)[a-z0-9-_=]{40}['\"]'''
681
+ keywords = [
682
+ "gocardless",
683
+ ]
684
+
685
+ [[rules]]
686
+ id = "Grafana API token"
687
+ description = "Grafana API token"
688
+ regex = '''['\"]eyJrIjoi(?i)[a-z0-9-_=]{72,92}['\"]'''
689
+ tags = ["gitlab_blocking"]
690
+ keywords = [
691
+ "grafana",
692
+ ]
693
+
694
+ [[rules]]
695
+ id = "Hashicorp Terraform user/org API token"
696
+ description = "Hashicorp Terraform user/org API token"
697
+ regex = '''['\"](?i)[a-z0-9]{14}\.atlasv1\.[a-z0-9-_=]{60,70}['\"]'''
698
+ tags = ["gitlab_blocking"]
699
+ keywords = [
700
+ "atlasv1",
701
+ "hashicorp",
702
+ "terraform"
703
+ ]
704
+
705
+ [[rules]]
706
+ id = "Hashicorp Vault batch token"
707
+ description = "Hashicorp Vault batch token"
708
+ regex = '''b\.AAAAAQ[0-9a-zA-Z_-]{156}'''
709
+ tags = ["gitlab_blocking"]
710
+ keywords = [
711
+ "hashicorp",
712
+ "AAAAAQ",
713
+ "vault"
714
+ ]
715
+
716
+ [[rules]]
717
+ id = "Hubspot API token"
718
+ description = "Hubspot API token"
719
+ regex = '''(?i)(hubspot[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-h0-9]{8}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{12})['\"]'''
720
+ secretGroup = 3
721
+ keywords = [
722
+ "hubspot",
723
+ ]
724
+
725
+ [[rules]]
726
+ id = "Intercom API token"
727
+ description = "Intercom API token"
728
+ regex = '''(?i)(intercom[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9=_]{60})['\"]'''
729
+ secretGroup = 3
730
+ keywords = [
731
+ "intercom",
732
+ ]
733
+
734
+ [[rules]]
735
+ id = "Intercom client secret/ID"
736
+ description = "Intercom client secret/ID"
737
+ regex = '''(?i)(intercom[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-h0-9]{8}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{12})['\"]'''
738
+ secretGroup = 3
739
+ keywords = [
740
+ "intercom",
741
+ ]
742
+
743
+ [[rules]]
744
+ id = "Ionic API token"
745
+ description = "Ionic API token"
746
+ regex = '''\bion_(?i)[a-z0-9]{42}\b'''
747
+ keywords = [
748
+ "ion_",
749
+ ]
750
+
751
+ [[rules]]
752
+ id = "Linear API token"
753
+ description = "Linear API token"
754
+ regex = '''lin_api_(?i)[a-z0-9]{40}'''
755
+ keywords = [
756
+ "lin_api_",
757
+ ]
758
+
759
+ [[rules]]
760
+ id = "Linear client secret/ID"
761
+ description = "Linear client secret/ID"
762
+ regex = '''(?i)(linear[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-f0-9]{32})['\"]'''
763
+ secretGroup = 3
764
+ keywords = [
765
+ "linear",
766
+ ]
767
+
768
+ [[rules]]
769
+ id = "Lob API Key"
770
+ description = "Lob API Key"
771
+ regex = '''(?i)(lob[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]((live|test)_[a-f0-9]{35})['\"]'''
772
+ secretGroup = 3
773
+ keywords = [
774
+ "lob",
775
+ ]
776
+
777
+ [[rules]]
778
+ id = "Lob Publishable API Key"
779
+ description = "Lob Publishable API Key"
780
+ regex = '''(?i)(lob[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]((test|live)_pub_[a-f0-9]{31})['\"]'''
781
+ secretGroup = 3
782
+ keywords = [
783
+ "lob",
784
+ ]
785
+
786
+ [[rules]]
787
+ id = "Mailchimp API key"
788
+ description = "Mailchimp API key"
789
+ regex = '''(?i)(mailchimp[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-f0-9]{32}-us20)['\"]'''
790
+ secretGroup = 3
791
+ tags = ["gitlab_blocking"]
792
+ keywords = [
793
+ "mailchimp",
794
+ ]
795
+
796
+ [[rules]]
797
+ id = "Mailgun private API token"
798
+ description = "Mailgun private API token"
799
+ regex = '''(?i)(mailgun[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"](key-[a-f0-9]{32})['\"]'''
800
+ secretGroup = 3
801
+ tags = ["gitlab_blocking"]
802
+ keywords = [
803
+ "mailgun",
804
+ ]
805
+
806
+ [[rules]]
807
+ id = "Mailgun public validation key"
808
+ description = "Mailgun public validation key"
809
+ regex = '''(?i)(mailgun[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"](pubkey-[a-f0-9]{32})['\"]'''
810
+ secretGroup = 3
811
+ keywords = [
812
+ "mailgun",
813
+ ]
814
+
815
+ [[rules]]
816
+ id = "Mailgun webhook signing key"
817
+ description = "Mailgun webhook signing key"
818
+ regex = '''(?i)(mailgun[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-h0-9]{32}-[a-h0-9]{8}-[a-h0-9]{8})['\"]'''
819
+ secretGroup = 3
820
+ tags = ["gitlab_blocking"]
821
+ keywords = [
822
+ "mailgun",
823
+ ]
824
+
825
+ [[rules]]
826
+ id = "Mapbox API token"
827
+ description = "Mapbox API token"
828
+ regex = '''(?i)(pk\.[a-z0-9]{60}\.[a-z0-9]{22})'''
829
+ keywords = [
830
+ "mapbox",
831
+ ]
832
+
833
+ [[rules]]
834
+ id = "messagebird-api-token"
835
+ description = "MessageBird API token"
836
+ regex = '''(?i)(messagebird[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{25})['\"]'''
837
+ secretGroup = 3
838
+ keywords = [
839
+ "messagebird",
840
+ ]
841
+
842
+ [[rules]]
843
+ id = "MessageBird API client ID"
844
+ description = "MessageBird API client ID"
845
+ regex = '''(?i)(messagebird[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-h0-9]{8}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{12})['\"]'''
846
+ secretGroup = 3
847
+ keywords = [
848
+ "messagebird",
849
+ ]
850
+
851
+ [[rules]]
852
+ id = "New Relic user API Key"
853
+ description = "New Relic user API Key"
854
+ regex = '''['\"](NRAK-[A-Z0-9]{27})['\"]'''
855
+ tags = ["gitlab_blocking"]
856
+ keywords = [
857
+ "NRAK",
858
+ ]
859
+
860
+ [[rules]]
861
+ id = "New Relic user API ID"
862
+ description = "New Relic user API ID"
863
+ regex = '''(?i)(newrelic[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([A-Z0-9]{64})['\"]'''
864
+ secretGroup = 3
865
+ tags = ["gitlab_blocking"]
866
+ keywords = [
867
+ "newrelic",
868
+ ]
869
+
870
+ [[rules]]
871
+ id = "New Relic ingest browser API token"
872
+ description = "New Relic ingest browser API token"
873
+ regex = '''['\"](NRJS-[a-f0-9]{19})['\"]'''
874
+ keywords = [
875
+ "NRJS",
876
+ ]
877
+
878
+ [[rules]]
879
+ id = "npm access token"
880
+ description = "npm access token"
881
+ regex = '''['\"](npm_(?i)[a-z0-9]{36})['\"]'''
882
+ tags = ["gitlab_blocking"]
883
+ keywords = [
884
+ "npm_",
885
+ ]
886
+
887
+ [[rules]]
888
+ id = "Planetscale password"
889
+ description = "Planetscale password"
890
+ regex = '''pscale_pw_(?i)[a-z0-9\-_\.]{43}'''
891
+ keywords = [
892
+ "pscale_pw_",
893
+ ]
894
+
895
+ [[rules]]
896
+ id = "Planetscale API token"
897
+ description = "Planetscale API token"
898
+ regex = '''pscale_tkn_(?i)[a-z0-9\-_\.]{43}'''
899
+ keywords = [
900
+ "pscale_tkn_",
901
+ ]
902
+
903
+ [[rules]]
904
+ id = "Postman API token"
905
+ description = "Postman API token"
906
+ regex = '''PMAK-(?i)[a-f0-9]{24}\-[a-f0-9]{34}'''
907
+ keywords = [
908
+ "PMAK-",
909
+ ]
910
+
911
+ [[rules]]
912
+ id = "Pulumi API token"
913
+ description = "Pulumi API token"
914
+ regex = '''pul-[a-f0-9]{40}'''
915
+ keywords = [
916
+ "pul-",
917
+ ]
918
+
919
+ [[rules]]
920
+ id = "Rubygem API token"
921
+ description = "Rubygem API token"
922
+ regex = '''rubygems_[a-f0-9]{48}'''
923
+ tags = ["gitlab_blocking"]
924
+ keywords = [
925
+ "rubygems_",
926
+ ]
927
+
928
+ [[rules]]
929
+ id = "Segment Public API token"
930
+ description = "Segment Public API token"
931
+ regex = '''sgp_[a-zA-Z0-9]{64}'''
932
+ tags = ["gitlab_blocking"]
933
+ keywords = [
934
+ "sgp_",
935
+ ]
936
+
937
+ [[rules]]
938
+ id = "Sendgrid API token"
939
+ description = "Sendgrid API token"
940
+ regex = '''SG\.(?i)[a-z0-9_\-\.]{66}'''
941
+ tags = ["gitlab_blocking"]
942
+ keywords = [
943
+ "sendgrid",
944
+ ]
945
+
946
+ [[rules]]
947
+ id = "Sendinblue API token"
948
+ description = "Sendinblue API token"
949
+ regex = '''xkeysib-[a-f0-9]{64}\-(?i)[a-z0-9]{16}'''
950
+ keywords = [
951
+ "xkeysib-",
952
+ ]
953
+
954
+ [[rules]]
955
+ id = "Sendinblue SMTP token"
956
+ description = "Sendinblue SMTP token"
957
+ regex = '''xsmtpsib-[a-f0-9]{64}\-(?i)[a-z0-9]{16}'''
958
+ keywords = [
959
+ "xsmtpsib-",
960
+ ]
961
+
962
+ [[rules]]
963
+ id = "Shippo API token"
964
+ description = "Shippo API token"
965
+ regex = '''shippo_(live|test)_[a-f0-9]{40}'''
966
+ keywords = [
967
+ "shippo_",
968
+ ]
969
+
970
+ [[rules]]
971
+ id = "Linkedin Client secret"
972
+ description = "Linkedin Client secret"
973
+ regex = '''(?i)(linkedin[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z]{16})['\"]'''
974
+ secretGroup = 3
975
+ keywords = [
976
+ "linkedin",
977
+ ]
978
+
979
+ [[rules]]
980
+ id = "Linkedin Client ID"
981
+ description = "Linkedin Client ID"
982
+ regex = '''(?i)(linkedin[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{14})['\"]'''
983
+ secretGroup = 3
984
+ keywords = [
985
+ "linkedin",
986
+ ]
987
+
988
+ [[rules]]
989
+ id = "Twitch API token"
990
+ description = "Twitch API token"
991
+ regex = '''(?i)(twitch[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{30})['\"]'''
992
+ secretGroup = 3
993
+ keywords = [
994
+ "twitch",
995
+ ]
996
+
997
+ [[rules]]
998
+ id = "Typeform API token"
999
+ description = "Typeform API token"
1000
+ regex = '''(?i)(typeform[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}(tfp_[a-z0-9\-_\.=]{59})'''
1001
+ secretGroup = 3
1002
+ keywords = [
1003
+ "typeform",
1004
+ ]
1005
+
1006
+ [[rules]]
1007
+ id = "Yandex.Cloud IAM Cookie v1 - 1"
1008
+ description = "Yandex.Cloud IAM Cookie v1"
1009
+ regex = '''\bc1\.[A-Z0-9a-z_-]+[=]{0,2}\.[A-Z0-9a-z_-]{86}[=]{0,2}['|\"|\n|\r|\s|\x60]'''
1010
+ keywords = [
1011
+ "yandex",
1012
+ ]
1013
+
1014
+ [[rules]]
1015
+ id = "Yandex.Cloud IAM Cookie v1 - 2"
1016
+ description = "Yandex.Cloud IAM Token v1"
1017
+ regex = '''\bt1\.[A-Z0-9a-z_-]+[=]{0,2}\.[A-Z0-9a-z_-]{86}[=]{0,2}['|\"|\n|\r|\s|\x60]'''
1018
+ keywords = [
1019
+ "yandex",
1020
+ ]
1021
+
1022
+ [[rules]]
1023
+ id = "Yandex.Cloud IAM Cookie v1 - 3"
1024
+ description = "Yandex.Cloud IAM API key v1"
1025
+ regex = '''\bAQVN[A-Za-z0-9_\-]{35,38}['|\"|\n|\r|\s|\x60]'''
1026
+ keywords = [
1027
+ "yandex",
1028
+ ]
1029
+
1030
+ [[rules]]
1031
+ id = "Yandex.Cloud AWS API compatible Access Secret"
1032
+ description = "Yandex.Cloud AWS API compatible Access Secret"
1033
+ regex = '''\bYC[a-zA-Z0-9_\-]{38}['|\"|\n|\r|\s|\x60]'''
1034
+ keywords = [
1035
+ "yandex",
1036
+ ]
1037
+
1038
+ [[rules]]
1039
+ id = "Meta access token"
1040
+ description = "Meta access token"
1041
+ regex = '''\bEA[a-zA-Z0-9]{90,400}['|\"|\n|\r|\s|\x60]'''
1042
+ keywords = [
1043
+ "EA",
1044
+ ]
1045
+
1046
+ [[rules]]
1047
+ id = "Oculus access token"
1048
+ description = "Oculus access token"
1049
+ regex = '''\bOC[a-zA-Z0-9]{90,400}['|\"|\n|\r|\s|\x60]'''
1050
+ keywords = [
1051
+ "OC",
1052
+ ]
1053
+
1054
+ [[rules]]
1055
+ id = "Instagram access token"
1056
+ description = "Instagram access token"
1057
+ regex = '''\bIG[a-zA-Z0-9]{90,400}['|\"|\n|\r|\s|\x60]'''
1058
+ keywords = [
1059
+ "IG",
1060
+ ]
1061
+
1062
+ [[rules]]
1063
+ id = "CircleCI access tokens"
1064
+ description = "CircleCI access tokens"
1065
+ regex = '''\bCCI(?:PAT|PRJ)_[a-zA-Z0-9]{22}_[a-f0-9]{40}'''
1066
+ keywords = [
1067
+ "CircleCI"
1068
+ ]
1069
+
1070
+ [[rules]]
1071
+ description = "Open AI API key"
1072
+ id = "open ai token"
1073
+ regex = '''\bsk-[a-zA-Z0-9]{48}\b'''
1074
+ keywords = [
1075
+ "sk-",
1076
+ ]
1077
+
1078
+ [[rules]]
1079
+ id = "Tailscale key"
1080
+ description = "Tailscale keys"
1081
+ regex = '''\btskey-\w+-\w+-\w+\b'''
1082
+ keywords = [
1083
+ "tskey-",
1084
+ ]