@coo-quack/sensitive-canary 0.5.3 → 0.7.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.
@@ -0,0 +1,461 @@
1
+ {
2
+ "contextWindow": 3,
3
+ "rules": [
4
+ {
5
+ "id": "aws-access-key",
6
+ "description": "AWS Access Key ID",
7
+ "regex": "\\b(A3T[A-Z0-9]|AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{16}\\b",
8
+ "category": "secret"
9
+ },
10
+ {
11
+ "id": "gcp-api-key",
12
+ "description": "Google Cloud API Key",
13
+ "regex": "AIza[0-9A-Za-z_-]{35}",
14
+ "category": "secret"
15
+ },
16
+ {
17
+ "id": "private-key",
18
+ "description": "PEM Private Key",
19
+ "regex": "-----BEGIN (RSA |EC |DSA |PGP |OPENSSH )?PRIVATE KEY",
20
+ "category": "secret"
21
+ },
22
+ {
23
+ "id": "github-pat",
24
+ "description": "GitHub Personal Access Token",
25
+ "regex": "gh[pousr]_[A-Za-z0-9]{36,255}",
26
+ "category": "secret"
27
+ },
28
+ {
29
+ "id": "github-fine-grained",
30
+ "description": "GitHub Fine-Grained Token",
31
+ "regex": "github_pat_[A-Za-z0-9_]{82}",
32
+ "category": "secret"
33
+ },
34
+ {
35
+ "id": "gitlab-pat",
36
+ "description": "GitLab Personal Access Token",
37
+ "regex": "glpat-[A-Za-z0-9_=-]{20,22}",
38
+ "category": "secret"
39
+ },
40
+ {
41
+ "id": "npm-token",
42
+ "description": "npm Access Token",
43
+ "regex": "npm_[A-Za-z0-9]{36}",
44
+ "category": "secret"
45
+ },
46
+ {
47
+ "id": "slack-token",
48
+ "description": "Slack Token",
49
+ "regex": "xox[baprs]-[0-9a-zA-Z-]{10,72}",
50
+ "category": "secret"
51
+ },
52
+ {
53
+ "id": "slack-webhook",
54
+ "description": "Slack Webhook URL",
55
+ "regex": "https:\\/\\/hooks\\.slack\\.com\\/services\\/T[A-Za-z0-9_]{8,10}\\/B[A-Za-z0-9_]{8,12}\\/[A-Za-z0-9_]{23,24}",
56
+ "category": "secret"
57
+ },
58
+ {
59
+ "id": "discord-webhook",
60
+ "description": "Discord Webhook URL",
61
+ "regex": "https:\\/\\/discord(?:app)?\\.com\\/api\\/webhooks\\/[0-9]{17,20}\\/[A-Za-z0-9_-]{68}",
62
+ "category": "secret"
63
+ },
64
+ {
65
+ "id": "telegram-bot-token",
66
+ "description": "Telegram Bot Token",
67
+ "regex": "[0-9]{8,10}:AA[0-9A-Za-z_-]{33}",
68
+ "category": "secret"
69
+ },
70
+ {
71
+ "id": "twilio-sid",
72
+ "description": "Twilio Account SID",
73
+ "regex": "AC[0-9a-f]{32}",
74
+ "category": "secret"
75
+ },
76
+ {
77
+ "id": "sendgrid-key",
78
+ "description": "SendGrid API Key",
79
+ "regex": "SG\\.[A-Za-z0-9_-]{20,24}\\.[A-Za-z0-9_-]{39,50}",
80
+ "category": "secret"
81
+ },
82
+ {
83
+ "id": "mailgun-key",
84
+ "description": "Mailgun API Key",
85
+ "regex": "key-[0-9a-zA-Z]{32}",
86
+ "category": "secret"
87
+ },
88
+ {
89
+ "id": "mailchimp-key",
90
+ "description": "Mailchimp API Key",
91
+ "regex": "[0-9a-f]{32}-us[0-9]{1,2}",
92
+ "category": "secret"
93
+ },
94
+ {
95
+ "id": "stripe-secret-key",
96
+ "description": "Stripe Secret Key",
97
+ "regex": "sk_(live|test)_[0-9a-zA-Z]{24}",
98
+ "category": "secret"
99
+ },
100
+ {
101
+ "id": "stripe-restricted-key",
102
+ "description": "Stripe Restricted Key",
103
+ "regex": "rk_(live|test)_[0-9a-zA-Z]{24}",
104
+ "category": "secret"
105
+ },
106
+ {
107
+ "id": "openai-key",
108
+ "description": "OpenAI API Key (legacy)",
109
+ "regex": "sk-(?!proj-|ant-)[A-Za-z0-9]{48}",
110
+ "category": "secret"
111
+ },
112
+ {
113
+ "id": "openai-project-key",
114
+ "description": "OpenAI Project API Key",
115
+ "regex": "sk-proj-[A-Za-z0-9_-]{40,}",
116
+ "category": "secret",
117
+ "entropyThreshold": 3.5
118
+ },
119
+ {
120
+ "id": "anthropic-key",
121
+ "description": "Anthropic API Key",
122
+ "regex": "sk-ant-[A-Za-z0-9_-]{95}",
123
+ "category": "secret"
124
+ },
125
+ {
126
+ "id": "replicate-token",
127
+ "description": "Replicate API Token",
128
+ "regex": "r8_[0-9A-Za-z_]{37}",
129
+ "category": "secret"
130
+ },
131
+ {
132
+ "id": "huggingface-token",
133
+ "description": "Hugging Face Access Token",
134
+ "regex": "hf_[a-zA-Z0-9]{34}",
135
+ "category": "secret"
136
+ },
137
+ {
138
+ "id": "groq-key",
139
+ "description": "Groq API Key",
140
+ "regex": "gsk_[A-Za-z0-9]{52}",
141
+ "category": "secret"
142
+ },
143
+ {
144
+ "id": "openrouter-key",
145
+ "description": "OpenRouter API Key",
146
+ "regex": "sk-or-v1-[0-9a-f]{64}",
147
+ "category": "secret"
148
+ },
149
+ {
150
+ "id": "xai-key",
151
+ "description": "xAI (Grok) API Key",
152
+ "regex": "xai-[0-9A-Za-z_]{80}",
153
+ "category": "secret"
154
+ },
155
+ {
156
+ "id": "perplexity-key",
157
+ "description": "Perplexity API Key",
158
+ "regex": "pplx-[a-zA-Z0-9]{48}",
159
+ "category": "secret"
160
+ },
161
+ {
162
+ "id": "digitalocean-pat",
163
+ "description": "DigitalOcean Personal Access Token",
164
+ "regex": "dop_v1_[a-f0-9]{64}",
165
+ "category": "secret"
166
+ },
167
+ {
168
+ "id": "square-access-token",
169
+ "description": "Square Access Token",
170
+ "regex": "EAAA[a-zA-Z0-9\\-_+=]{60}",
171
+ "category": "secret"
172
+ },
173
+ {
174
+ "id": "mapbox-token",
175
+ "description": "Mapbox Token",
176
+ "regex": "(?:pk|sk)\\.eyJ[A-Za-z0-9_-]{10,}\\.[A-Za-z0-9_-]{10,}\\.[A-Za-z0-9_-]{10,}",
177
+ "category": "secret"
178
+ },
179
+ {
180
+ "id": "sentry-user-token",
181
+ "description": "Sentry User Auth Token",
182
+ "regex": "sntryu_[a-f0-9]{64}",
183
+ "category": "secret"
184
+ },
185
+ {
186
+ "id": "sentry-org-token",
187
+ "description": "Sentry Organization Auth Token",
188
+ "regex": "sntrys_eyJ[A-Za-z0-9_-]{10,}\\.[A-Za-z0-9_-]{10,}\\.[A-Za-z0-9_-]{10,}",
189
+ "category": "secret"
190
+ },
191
+ {
192
+ "id": "atlassian-token",
193
+ "description": "Atlassian API Token",
194
+ "regex": "ATATT3[A-Za-z0-9_\\-=]{180,}",
195
+ "category": "secret"
196
+ },
197
+ {
198
+ "id": "linear-key",
199
+ "description": "Linear API Key",
200
+ "regex": "lin_api_[a-z0-9]{40}",
201
+ "category": "secret"
202
+ },
203
+ {
204
+ "id": "postman-key",
205
+ "description": "Postman API Key",
206
+ "regex": "PMAK-[a-f0-9]{24}-[a-f0-9]{34}",
207
+ "category": "secret"
208
+ },
209
+ {
210
+ "id": "supabase-key",
211
+ "description": "Supabase Personal Access Token",
212
+ "regex": "sbp_[a-z0-9]{40}",
213
+ "category": "secret"
214
+ },
215
+ {
216
+ "id": "jwt",
217
+ "description": "JSON Web Token (JWT)",
218
+ "regex": "(?<!sntrys_|pk\\.|sk\\.)eyJ[A-Za-z0-9_-]{10,}\\.eyJ[A-Za-z0-9_-]{10,}\\.[A-Za-z0-9_-]{10,}",
219
+ "category": "secret"
220
+ },
221
+ {
222
+ "id": "generic-secret",
223
+ "description": "Generic API Key / Secret",
224
+ "regex": "(api[_-]?key|secret[_-]?key|access[_-]?token|api[_-]?secret)\\s*[:=]\\s*['\"]?([A-Za-z0-9\\-_.]{20,})",
225
+ "category": "secret",
226
+ "flags": "gi",
227
+ "secretGroup": 2,
228
+ "entropyThreshold": 3.5
229
+ },
230
+ {
231
+ "id": "env-assignment",
232
+ "description": ".env style secret assignment",
233
+ "regex": "\\b[A-Z_]*(SECRET|PASSWORD|PASSWD|TOKEN|API_KEY|PRIVATE_KEY)[A-Z_0-9]*\\s*=\\s*(\\S{8,})",
234
+ "category": "secret",
235
+ "secretGroup": 2,
236
+ "entropyThreshold": 3
237
+ },
238
+ {
239
+ "id": "connection-string",
240
+ "description": "Database Connection String with credentials",
241
+ "regex": "(mongodb|mysql|postgres|postgresql|redis):\\/\\/[^:\\s]+:[^@\\s]+@",
242
+ "category": "secret"
243
+ },
244
+ {
245
+ "id": "pii-email",
246
+ "description": "Email Address",
247
+ "regex": "\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}\\b",
248
+ "category": "pii"
249
+ },
250
+ {
251
+ "id": "pii-credit-card",
252
+ "description": "Credit Card Number",
253
+ "regex": "\\b(?:4[0-9]{3}(?:[\\s-]?[0-9]{4}){3}|5[1-5][0-9]{2}(?:[\\s-]?[0-9]{4}){3}|3[47][0-9]{2}[\\s-]?[0-9]{6}[\\s-]?[0-9]{5}|6(?:011|5[0-9]{2})[0-9](?:[\\s-]?[0-9]{4}){3})\\b",
254
+ "category": "pii",
255
+ "validate": "luhn"
256
+ },
257
+ {
258
+ "id": "pii-ssn",
259
+ "description": "US Social Security Number",
260
+ "regex": "\\b(?!000|666|9\\d{2})\\d{3}[- ](?!00)\\d{2}[- ](?!0000)\\d{4}\\b",
261
+ "category": "pii"
262
+ },
263
+ {
264
+ "id": "pii-phone-us",
265
+ "description": "US Phone Number",
266
+ "regex": "\\b(\\+1[\\s.-]?)?\\(?\\d{3}\\)?[\\s.-]\\d{3}[\\s.-]\\d{4}\\b",
267
+ "category": "pii"
268
+ },
269
+ {
270
+ "id": "pii-phone-jp",
271
+ "description": "Japanese Phone Number",
272
+ "regex": "\\b0\\d{1,4}[\\s-]\\d{1,4}[\\s-]\\d{4}\\b",
273
+ "category": "pii"
274
+ },
275
+ {
276
+ "id": "pii-postal-jp",
277
+ "description": "Japanese Postal Code",
278
+ "regex": "〒\\d{3}[\\s-]\\d{4}",
279
+ "category": "pii"
280
+ },
281
+ {
282
+ "id": "pii-ipv4",
283
+ "description": "IPv4 Address (private range)",
284
+ "regex": "\\b(10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|172\\.(1[6-9]|2\\d|3[01])\\.\\d{1,3}\\.\\d{1,3}|192\\.168\\.\\d{1,3}\\.\\d{1,3})\\b",
285
+ "category": "pii"
286
+ },
287
+ {
288
+ "id": "pii-mynumber-jp",
289
+ "description": "Japanese Individual Number (My Number)",
290
+ "regex": "\\b\\d{12}\\b",
291
+ "category": "pii",
292
+ "validate": "mynumber-jp"
293
+ },
294
+ {
295
+ "id": "pii-nir-fr",
296
+ "description": "French NIR / Social Security Number",
297
+ "regex": "\\b[12]\\d{2}(?:0[1-9]|1[0-2]|20)(?:\\d{5}|2[AB]\\d{3})\\d{3}\\s?\\d{2}\\b",
298
+ "category": "pii",
299
+ "flags": "gi",
300
+ "validate": "nir-fr"
301
+ },
302
+ {
303
+ "id": "pii-codice-fiscale-it",
304
+ "description": "Italian Codice Fiscale",
305
+ "regex": "\\b[A-Z]{6}\\d{2}[A-Z]\\d{2}[A-Z]\\d{3}[A-Z]\\b",
306
+ "category": "pii",
307
+ "validate": "codice-fiscale-it"
308
+ },
309
+ {
310
+ "id": "pii-steuer-id-de",
311
+ "description": "German Steuer-Identifikationsnummer",
312
+ "regex": "\\b[1-9]\\d{10}\\b",
313
+ "category": "pii",
314
+ "validate": "steuer-id-de"
315
+ },
316
+ {
317
+ "id": "pii-dni-nie-es",
318
+ "description": "Spanish DNI / NIE",
319
+ "regex": "\\b(?:\\d{8}[A-Z]|[XYZ]\\d{7}[A-Z])\\b",
320
+ "category": "pii",
321
+ "validate": "dni-nie-es"
322
+ },
323
+ {
324
+ "id": "pii-phone-fr",
325
+ "description": "French Phone Number",
326
+ "regex": "\\b0[1-9](?:[\\s.-]?\\d{2}){4}\\b",
327
+ "category": "pii",
328
+ "requireContext": true,
329
+ "contextWords": [
330
+ "tél",
331
+ "tel",
332
+ "téléphone",
333
+ "telephone",
334
+ "phone",
335
+ "mobile",
336
+ "portable",
337
+ "fax"
338
+ ]
339
+ },
340
+ {
341
+ "id": "pii-phone-it",
342
+ "description": "Italian Phone Number",
343
+ "regex": "\\b(?:0\\d{8,9}|3\\d{8,9})\\b",
344
+ "category": "pii",
345
+ "requireContext": true,
346
+ "contextWords": ["telefono", "tel", "cellulare", "mobile", "phone", "fax"]
347
+ },
348
+ {
349
+ "id": "pii-phone-de",
350
+ "description": "German Phone Number",
351
+ "regex": "\\b0[1-9]\\d{6,11}\\b",
352
+ "category": "pii",
353
+ "requireContext": true,
354
+ "contextWords": ["telefon", "tel", "handy", "mobil", "phone", "fax"]
355
+ },
356
+ {
357
+ "id": "pii-phone-es",
358
+ "description": "Spanish Phone Number",
359
+ "regex": "\\b[67]\\d{8}\\b",
360
+ "category": "pii",
361
+ "requireContext": true,
362
+ "contextWords": [
363
+ "teléfono",
364
+ "telefono",
365
+ "tel",
366
+ "móvil",
367
+ "movil",
368
+ "phone",
369
+ "fax"
370
+ ]
371
+ },
372
+ {
373
+ "id": "pii-postal-code",
374
+ "description": "Postal Code (US ZIP / EU / KR)",
375
+ "regex": "\\b\\d{5}(?:-\\d{4})?\\b",
376
+ "category": "pii",
377
+ "requireContext": true,
378
+ "contextWords": [
379
+ "zip",
380
+ "postal",
381
+ "postale",
382
+ "postcode",
383
+ "plz",
384
+ "postleitzahl",
385
+ "cap",
386
+ "우편번호"
387
+ ]
388
+ },
389
+ {
390
+ "id": "pii-rrn-kr",
391
+ "description": "Korean Resident Registration Number",
392
+ "regex": "\\b\\d{6}[-\\s]?\\d{7}\\b",
393
+ "category": "pii",
394
+ "validate": "rrn-kr"
395
+ },
396
+ {
397
+ "id": "pii-brn-kr",
398
+ "description": "Korean Business Registration Number",
399
+ "regex": "\\b\\d{3}[-\\s]?\\d{2}[-\\s]?\\d{5}\\b",
400
+ "category": "pii",
401
+ "validate": "brn-kr"
402
+ },
403
+ {
404
+ "id": "pii-resident-id-cn",
405
+ "description": "Chinese Resident Identity Card",
406
+ "regex": "\\b\\d{17}[\\dXx]\\b",
407
+ "category": "pii",
408
+ "validate": "resident-id-cn"
409
+ },
410
+ {
411
+ "id": "pii-phone-kr",
412
+ "description": "Korean Phone Number",
413
+ "regex": "(?:\\+82[-\\s]?)?(?:01[016789]|0\\d{1,2})[-\\s]?\\d{3,4}[-\\s]?\\d{4}",
414
+ "category": "pii",
415
+ "requireContext": true,
416
+ "contextWords": [
417
+ "전화",
418
+ "핸드폰",
419
+ "휴대",
420
+ "tel",
421
+ "phone",
422
+ "mobile",
423
+ "fax"
424
+ ]
425
+ },
426
+ {
427
+ "id": "pii-phone-cn",
428
+ "description": "Chinese Phone Number",
429
+ "regex": "(?:\\+86[-\\s]?)?(?:1[3-9]\\d{9}|0\\d{2,3}[-\\s]?\\d{7,8})",
430
+ "category": "pii",
431
+ "requireContext": true,
432
+ "contextWords": ["电话", "手机", "tel", "phone", "mobile", "fax"]
433
+ },
434
+ {
435
+ "id": "pii-postal-cn",
436
+ "description": "Chinese Postal Code",
437
+ "regex": "\\b[1-9]\\d{5}\\b",
438
+ "category": "pii",
439
+ "requireContext": true,
440
+ "contextWords": ["邮编", "邮政编码", "postal", "postcode", "zip"]
441
+ },
442
+ {
443
+ "id": "pii-ipv4-public",
444
+ "description": "Public IPv4 Address",
445
+ "regex": "\\b\\d{1,3}(?:\\.\\d{1,3}){3}\\b",
446
+ "category": "pii",
447
+ "requireContext": true,
448
+ "contextWords": ["ip", "ipv4"],
449
+ "validate": "public-ipv4"
450
+ },
451
+ {
452
+ "id": "pii-ipv6",
453
+ "description": "IPv6 Address",
454
+ "regex": "\\b[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{0,4}){2,7}\\b",
455
+ "category": "pii",
456
+ "requireContext": true,
457
+ "contextWords": ["ipv6", "ip"],
458
+ "validate": "public-ipv6"
459
+ }
460
+ ]
461
+ }