Selaa lähdekoodia

More rule fixes (#1586)

* feat: tweak more rules

* fix(curl): update pattern & ignore more stuff

* chore: update .gitleaksignore
Richard Gomez 1 vuosi sitten
vanhempi
commit
455ae0aab7
47 muutettua tiedostoa jossa 531 lisäystä ja 374 poistoa
  1. 171 164
      .gitleaksignore
  2. 5 3
      cmd/generate/config/rules/adobe.go
  3. 7 7
      cmd/generate/config/rules/alibaba.go
  4. 3 2
      cmd/generate/config/rules/authress.go
  5. 3 2
      cmd/generate/config/rules/clojars.go
  6. 8 8
      cmd/generate/config/rules/cloudflare.go
  7. 34 12
      cmd/generate/config/rules/curl.go
  8. 8 3
      cmd/generate/config/rules/databricks.go
  9. 7 6
      cmd/generate/config/rules/digitalocean.go
  10. 3 2
      cmd/generate/config/rules/doppler.go
  11. 2 1
      cmd/generate/config/rules/duffel.go
  12. 3 2
      cmd/generate/config/rules/dynatrace.go
  13. 4 2
      cmd/generate/config/rules/easypost.go
  14. 12 7
      cmd/generate/config/rules/facebook.go
  15. 6 3
      cmd/generate/config/rules/flutterwave.go
  16. 16 5
      cmd/generate/config/rules/github.go
  17. 2 3
      cmd/generate/config/rules/grafana.go
  18. 4 3
      cmd/generate/config/rules/hashicorp.go
  19. 6 4
      cmd/generate/config/rules/hashicorp_vault.go
  20. 1 2
      cmd/generate/config/rules/huggingface.go
  21. 2 1
      cmd/generate/config/rules/intra42.go
  22. 2 0
      cmd/generate/config/rules/jwt.go
  23. 6 1
      cmd/generate/config/rules/kubernetes.go
  24. 4 2
      cmd/generate/config/rules/linear.go
  25. 1 1
      cmd/generate/config/rules/npm.go
  26. 6 4
      cmd/generate/config/rules/okta.go
  27. 2 2
      cmd/generate/config/rules/openai.go
  28. 2 3
      cmd/generate/config/rules/openshift.go
  29. 6 6
      cmd/generate/config/rules/planetscale.go
  30. 2 2
      cmd/generate/config/rules/postman.go
  31. 6 3
      cmd/generate/config/rules/prefect.go
  32. 6 3
      cmd/generate/config/rules/pulumi.go
  33. 2 2
      cmd/generate/config/rules/pypi.go
  34. 6 3
      cmd/generate/config/rules/readme.go
  35. 2 2
      cmd/generate/config/rules/rubygems.go
  36. 2 1
      cmd/generate/config/rules/scalingo.go
  37. 2 2
      cmd/generate/config/rules/sendgrid.go
  38. 2 2
      cmd/generate/config/rules/sendinblue.go
  39. 2 2
      cmd/generate/config/rules/shippo.go
  40. 8 4
      cmd/generate/config/rules/shopify.go
  41. 21 16
      cmd/generate/config/rules/slack.go
  42. 2 0
      cmd/generate/config/rules/square.go
  43. 3 2
      cmd/generate/config/rules/stripe.go
  44. 5 15
      cmd/generate/config/rules/sumologic.go
  45. 2 2
      cmd/generate/config/rules/teams.go
  46. 3 2
      cmd/generate/config/rules/twilio.go
  47. 119 50
      config/gitleaks.toml

+ 171 - 164
.gitleaksignore

@@ -767,167 +767,174 @@ adf617b3b4628e1160fa3d135b4c3dfd45c05e15:testdata/repos/small/api/ignoreGlobal.g
 adf617b3b4628e1160fa3d135b4c3dfd45c05e15:testdata/repos/small/api/ignoreCommit.go:aws-access-token:20
 f361c5ef71853923277e3f284890083bc7825205:detect/reader_test.go:aws-access-token:12
 
- 8cfa6b2e43544895f52d2e37535ccfe29a6cdfd3:cmd/generate/config/rules/infracost.go:infracost-api-token:24
- 8cfa6b2e43544895f52d2e37535ccfe29a6cdfd3:cmd/generate/config/rules/infracost.go:generic-api-key:29
- 8cfa6b2e43544895f52d2e37535ccfe29a6cdfd3:cmd/generate/config/rules/discord.go:discord-client-secret:64
- 8cfa6b2e43544895f52d2e37535ccfe29a6cdfd3:cmd/generate/config/rules/grafana.go:grafana-cloud-api-token:42
- 8cfa6b2e43544895f52d2e37535ccfe29a6cdfd3:cmd/generate/config/rules/grafana.go:grafana-service-account-token:80
- 9152eaa57a91d7249bd0b3c3a86b9e837072a828:detect/reader_test.go:aws-access-token:12
- 9152eaa57a91d7249bd0b3c3a86b9e837072a828:cmd/generate/config/rules/aws.go:aws-access-token:42
- 93acc6e82adb46ef442fcb44bd9fd83489690ca3:cmd/generate/config/rules/1password.go:1password-service-account-token:25
- 93acc6e82adb46ef442fcb44bd9fd83489690ca3:cmd/generate/config/rules/1password.go:1password-service-account-token:27
- 93acc6e82adb46ef442fcb44bd9fd83489690ca3:cmd/generate/config/rules/1password.go:1password-service-account-token:28
- 93acc6e82adb46ef442fcb44bd9fd83489690ca3:cmd/generate/config/rules/1password.go:generic-api-key:37
- 83a57244cdd0bfe1634326ab04a29b9b139bf158:cmd/generate/config/rules/curl.go:openai-api-key:125
- 83a57244cdd0bfe1634326ab04a29b9b139bf158:cmd/generate/config/rules/curl.go:curl-auth-header:100
- 83a57244cdd0bfe1634326ab04a29b9b139bf158:cmd/generate/config/rules/curl.go:curl-auth-header:102
- 83a57244cdd0bfe1634326ab04a29b9b139bf158:cmd/generate/config/rules/curl.go:curl-auth-header:108
- 83a57244cdd0bfe1634326ab04a29b9b139bf158:cmd/generate/config/rules/curl.go:curl-auth-header:112
- 83a57244cdd0bfe1634326ab04a29b9b139bf158:cmd/generate/config/rules/curl.go:curl-auth-header:121
- 83a57244cdd0bfe1634326ab04a29b9b139bf158:cmd/generate/config/rules/curl.go:curl-auth-header:122
- 83a57244cdd0bfe1634326ab04a29b9b139bf158:cmd/generate/config/rules/curl.go:curl-auth-header:123
- 83a57244cdd0bfe1634326ab04a29b9b139bf158:cmd/generate/config/rules/curl.go:curl-auth-header:126
- 83a57244cdd0bfe1634326ab04a29b9b139bf158:cmd/generate/config/rules/curl.go:curl-auth-header:131
- 83a57244cdd0bfe1634326ab04a29b9b139bf158:cmd/generate/config/rules/curl.go:curl-auth-header:134
- 83a57244cdd0bfe1634326ab04a29b9b139bf158:cmd/generate/config/rules/curl.go:curl-auth-header:137
- 83a57244cdd0bfe1634326ab04a29b9b139bf158:cmd/generate/config/rules/curl.go:curl-auth-header:137
- 83a57244cdd0bfe1634326ab04a29b9b139bf158:cmd/generate/config/rules/curl.go:generic-api-key:139
- 83a57244cdd0bfe1634326ab04a29b9b139bf158:cmd/generate/config/rules/curl.go:jwt:134
- 83a57244cdd0bfe1634326ab04a29b9b139bf158:cmd/generate/config/rules/curl.go:jwt:170
- cf5334fd61d16fb4af1362856ebfb98397c5d4b3:cmd/generate/config/rules/curl.go:curl-auth-user:32
- cf5334fd61d16fb4af1362856ebfb98397c5d4b3:cmd/generate/config/rules/curl.go:curl-auth-user:33
- cf5334fd61d16fb4af1362856ebfb98397c5d4b3:cmd/generate/config/rules/curl.go:curl-auth-user:40
- cf5334fd61d16fb4af1362856ebfb98397c5d4b3:cmd/generate/config/rules/curl.go:curl-auth-user:42
- cf5334fd61d16fb4af1362856ebfb98397c5d4b3:cmd/generate/config/rules/curl.go:curl-auth-user:43
- cf5334fd61d16fb4af1362856ebfb98397c5d4b3:cmd/generate/config/rules/curl.go:curl-auth-user:44
- cf5334fd61d16fb4af1362856ebfb98397c5d4b3:cmd/generate/config/rules/curl.go:curl-auth-user:45
- aabe3815394d24d5b8198ba6068a99e0ba7601b1:config/config_test.go:aws-access-token:72
- b9f7fdaacb9e3799a9b3e4f7f6181963b8931b73:config/config_test.go:aws-access-token:67
- 3ef444d24677c863bb724fa406dd12464b7f2362:config/config_test.go:aws-access-token:39
- 8fb39ba8dc9d872d57cc3151b3750e8234b9b980:cmd/generate/config/rules/azure.go:azure-ad-client-secret:33
- 2278a2a97e422c8075207d17195b29e7f4ff15e1:detect/decoder_test.go:generic-api-key:22
- 2278a2a97e422c8075207d17195b29e7f4ff15e1:detect/decoder_test.go:generic-api-key:32
- 2278a2a97e422c8075207d17195b29e7f4ff15e1:detect/decoder_test.go:generic-api-key:37
- 2278a2a97e422c8075207d17195b29e7f4ff15e1:detect/decoder_test.go:generic-api-key:54
- 2278a2a97e422c8075207d17195b29e7f4ff15e1:detect/decoder_test.go:generic-api-key:59
- 2278a2a97e422c8075207d17195b29e7f4ff15e1:detect/decoder_test.go:generic-api-key:64
- 2278a2a97e422c8075207d17195b29e7f4ff15e1:detect/detect_test.go:private-key:23
- 2278a2a97e422c8075207d17195b29e7f4ff15e1:detect/detect_test.go:generic-api-key:39
- 2278a2a97e422c8075207d17195b29e7f4ff15e1:detect/detect_test.go:jwt:32
- 2278a2a97e422c8075207d17195b29e7f4ff15e1:detect/detect_test.go:private-key:365
- 2278a2a97e422c8075207d17195b29e7f4ff15e1:detect/detect_test.go:private-key:366
- 2278a2a97e422c8075207d17195b29e7f4ff15e1:detect/detect_test.go:private-key:368
- 2278a2a97e422c8075207d17195b29e7f4ff15e1:detect/detect_test.go:private-key:393
- 2278a2a97e422c8075207d17195b29e7f4ff15e1:detect/detect_test.go:private-key:394
- 2278a2a97e422c8075207d17195b29e7f4ff15e1:detect/detect_test.go:aws-access-token:407
- 2278a2a97e422c8075207d17195b29e7f4ff15e1:detect/detect_test.go:aws-access-token:408
- 2278a2a97e422c8075207d17195b29e7f4ff15e1:detect/detect_test.go:generic-api-key:452
- f8dcd838da26f591c70acbbc3dea8d8b4d1649c7:detect/detect_test.go:generic-api-key:616
- f8dcd838da26f591c70acbbc3dea8d8b4d1649c7:detect/detect_test.go:generic-api-key:618
- f8dcd838da26f591c70acbbc3dea8d8b4d1649c7:testdata/repos/nogit/.env.prod:generic-api-key:4
- 032c47e7e1ebfb745d3b66ef448697d4cbf6a406:detect/detect_test.go:generic-api-key:38
- 032c47e7e1ebfb745d3b66ef448697d4cbf6a406:detect/detect_test.go:generic-api-key:451
- 6c5e01c144b3d5e48422ab66a353f4cbdc14b24a:detect/detect_test.go:private-key:22
- 6c5e01c144b3d5e48422ab66a353f4cbdc14b24a:detect/detect_test.go:jwt:31
- 6c5e01c144b3d5e48422ab66a353f4cbdc14b24a:detect/decoder_test.go:generic-api-key:22
- 6c5e01c144b3d5e48422ab66a353f4cbdc14b24a:detect/decoder_test.go:generic-api-key:32
- 6c5e01c144b3d5e48422ab66a353f4cbdc14b24a:detect/decoder_test.go:generic-api-key:37
- 6c5e01c144b3d5e48422ab66a353f4cbdc14b24a:detect/decoder_test.go:generic-api-key:54
- 6c5e01c144b3d5e48422ab66a353f4cbdc14b24a:detect/decoder_test.go:generic-api-key:59
- 6c5e01c144b3d5e48422ab66a353f4cbdc14b24a:detect/decoder_test.go:generic-api-key:64
- 6c5e01c144b3d5e48422ab66a353f4cbdc14b24a:detect/detect_test.go:private-key:359
- 6c5e01c144b3d5e48422ab66a353f4cbdc14b24a:detect/detect_test.go:private-key:360
- 6c5e01c144b3d5e48422ab66a353f4cbdc14b24a:detect/detect_test.go:private-key:362
- 6c5e01c144b3d5e48422ab66a353f4cbdc14b24a:detect/detect_test.go:private-key:387
- 6c5e01c144b3d5e48422ab66a353f4cbdc14b24a:detect/detect_test.go:private-key:388
- 6c5e01c144b3d5e48422ab66a353f4cbdc14b24a:detect/detect_test.go:aws-access-token:401
- 6c5e01c144b3d5e48422ab66a353f4cbdc14b24a:detect/detect_test.go:aws-access-token:402
- 78f7d3f5dfba03f816418f987ff3a78643c1eda7:cmd/generate/config/rules/flyio.go:flyio-access-token:26
- 78f7d3f5dfba03f816418f987ff3a78643c1eda7:cmd/generate/config/rules/flyio.go:flyio-access-token:30
- 78f7d3f5dfba03f816418f987ff3a78643c1eda7:cmd/generate/config/rules/flyio.go:flyio-access-token:34
- 78f7d3f5dfba03f816418f987ff3a78643c1eda7:cmd/generate/config/rules/flyio.go:flyio-access-token:37
- 78f7d3f5dfba03f816418f987ff3a78643c1eda7:cmd/generate/config/rules/flyio.go:flyio-access-token:38
- 3698060a2bcf926b8ae459270d9bcb7b69339104:cmd/generate/config/rules/kubernetes.go:generic-api-key:56
- 3698060a2bcf926b8ae459270d9bcb7b69339104:cmd/generate/config/rules/kubernetes.go:generic-api-key:68
- 3698060a2bcf926b8ae459270d9bcb7b69339104:cmd/generate/config/rules/kubernetes.go:generic-api-key:79
- 3698060a2bcf926b8ae459270d9bcb7b69339104:cmd/generate/config/rules/kubernetes.go:generic-api-key:147
- 3698060a2bcf926b8ae459270d9bcb7b69339104:cmd/generate/config/rules/kubernetes.go:generic-api-key:153
- 3698060a2bcf926b8ae459270d9bcb7b69339104:cmd/generate/config/rules/kubernetes.go:generic-api-key:162
- 5740eddd75b2a1149374438afe80c7cf2535b35f:README.md:aws-access-token:221
- 5740eddd75b2a1149374438afe80c7cf2535b35f:README.md:aws-access-token:223
- 5740eddd75b2a1149374438afe80c7cf2535b35f:README.md:aws-access-token:259
- 5740eddd75b2a1149374438afe80c7cf2535b35f:cmd/generate/config/rules/generic.go:clojars-api-token:42
- 372d99cfdb92a1e177badbfc1cd65bd692df9025:cmd/generate/config/rules/hashicorp.go:hashicorp-tf-api-token:24
- 372d99cfdb92a1e177badbfc1cd65bd692df9025:cmd/generate/config/rules/vault.go:vault-service-token:22
- 372d99cfdb92a1e177badbfc1cd65bd692df9025:cmd/generate/config/rules/vault.go:vault-service-token:25
- 3be7faa1ffc80f1aa071192a09141d5e829e1af3:cmd/generate/config/rules/vault.go:vault-service-token:22
- 3be7faa1ffc80f1aa071192a09141d5e829e1af3:cmd/generate/config/rules/hashicorp.go:hashicorp-tf-api-token:24
- 3be7faa1ffc80f1aa071192a09141d5e829e1af3:cmd/generate/config/rules/vault.go:vault-service-token:25
- 840c3cb24dcf14bf3332793f0702e75085ff5de2:detect/verify_test.go:generic-api-key:39
- 840c3cb24dcf14bf3332793f0702e75085ff5de2:detect/verify_test.go:generic-api-key:47
- 840c3cb24dcf14bf3332793f0702e75085ff5de2:detect/verify_test.go:generic-api-key:88
- c1345e1b2b63260d860637530ba4d17571d547d6:cmd/generate/config/rules/openshift.go:openshift-user-token:27
- c1345e1b2b63260d860637530ba4d17571d547d6:cmd/generate/config/rules/openshift.go:openshift-user-token:28
- 821b2323940b1792d9001d0812a2a4f7480a69c0:cmd/generate/config/rules/cloudflare.go:cloudflare-origin-ca-key:20
- 821b2323940b1792d9001d0812a2a4f7480a69c0:cmd/generate/config/rules/cloudflare.go:cloudflare-origin-ca-key:21
- e265bfbbc3b208a23f0e46dd4a96795817068b77:detect/validate_test.go:generic-api-key:93
- 9d06c40017ba6710032e9bc08ebbc056175629cf:detect/validate_test.go:github-pat:33
- 9d06c40017ba6710032e9bc08ebbc056175629cf:detect/validate_test.go:github-pat:36
- 9d06c40017ba6710032e9bc08ebbc056175629cf:detect/validate_test.go:generic-api-key:43
- 9d06c40017ba6710032e9bc08ebbc056175629cf:detect/validate_test.go:generic-api-key:49
- 9d06c40017ba6710032e9bc08ebbc056175629cf:detect/validate_test.go:generic-api-key:57
- e9135cf0b598738b5fc63ca004db8ab30845393d:cmd/generate/config/rules/jwt.go:jwt:48
- 9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-organization-api-token:85
- 9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-organization-api-token:86
- 9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-organization-api-token:87
- 9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-organization-api-token:88
- 9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-organization-api-token:89
- 9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-organization-api-token:90
- 9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-organization-api-token:91
- 9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-organization-api-token:93
- 9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-organization-api-token:95
- 9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-organization-api-token:96
- 9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-organization-api-token:97
- 9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-access-token:30
- 9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-access-token:31
- 9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-access-token:32
- 9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-access-token:33
- 9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-access-token:34
- 9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-access-token:35
- 9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-access-token:36
- 9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-access-token:37
- 9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-access-token:38
- 9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-access-token:39
- 9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-access-token:40
- 9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-access-token:41
- 9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-access-token:42
- 9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-access-token:43
- 9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-access-token:45
- 9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-access-token:46
- 463d24618fa42fc7629dc30c9744ebe36c5df1ab:cmd/generate/config/rules/slack.go:slack-user-token:66
- 463d24618fa42fc7629dc30c9744ebe36c5df1ab:cmd/generate/config/rules/slack.go:slack-config-access-token:115
- 463d24618fa42fc7629dc30c9744ebe36c5df1ab:cmd/generate/config/rules/slack.go:slack-legacy-workspace-token:210
- 025908808f2ad1ce244f9806b8dd593bd9afbab0:detect/detect_test.go:discord-api-token:326
- e002920355ac91770a329cfa69d6359bd665ba66:cmd/generate/config/rules/privatekey.go:private-key:26
- e890a8e8098ee8021d25a429315a6c153126db22:cmd/generate/config/rules/jwt.go:jwt:17
- 9326f35380636bcbe61e94b0584d1618c4b5c2c2:detect/detect_test.go:pypi-upload-token:27
- 9326f35380636bcbe61e94b0584d1618c4b5c2c2:detect/detect_test.go:pypi-upload-token:32
- 9326f35380636bcbe61e94b0584d1618c4b5c2c2:detect/detect_test.go:pypi-upload-token:33
- 3a3e13c3b5f85b0116cf2a0cd92529baf22d0ac9:testdata/repos/with_square_and_google/env:gcp-api-key:3
- 45c898c5ea56ee503a048c1bac1404cf63855edc:test_data/test_repos/test_dir_2/env:gcp-api-key:3
- 45c898c5ea56ee503a048c1bac1404cf63855edc:test_data/test_dir_one_google_leak_and_square_leak.json:gcp-api-key:20
- 45c898c5ea56ee503a048c1bac1404cf63855edc:test_data/test_dir_one_google_leak_and_square_leak.json:gcp-api-key:22
- f6460a7365479a48581e0641b40147914542bb24:test_data/test_local_owner_aws_leak_depth_2.json:aws-access-token:16
- f6460a7365479a48581e0641b40147914542bb24:test_data/test_local_owner_aws_leak_depth_2.json:aws-access-token:17
- f6460a7365479a48581e0641b40147914542bb24:test_data/test_local_owner_aws_leak_depth_2.json:aws-access-token:42
- f6460a7365479a48581e0641b40147914542bb24:test_data/test_local_owner_aws_leak_depth_2.json:aws-access-token:43
- f6460a7365479a48581e0641b40147914542bb24:test_data/test_local_owner_aws_leak_depth_2.json:aws-access-token:68
- f6460a7365479a48581e0641b40147914542bb24:test_data/test_local_owner_aws_leak_depth_2.json:aws-access-token:69
- f6460a7365479a48581e0641b40147914542bb24:test_data/test_local_owner_aws_leak_depth_2.json:aws-access-token:94
- f6460a7365479a48581e0641b40147914542bb24:test_data/test_local_owner_aws_leak_depth_2.json:aws-access-token:95
- 7bd55e33b504f76fc2aec27f4f479a5fb2606480:src/constants.go:private-key:42
- e79ffc6ae8f66931d687407e07bc0632fb262091:src/constants.go:private-key:29
- 2b995fda446e03b7660c327fec41265f03199c71:config.go:private-key:34
- ccef3680d5552443c999345567ea60909c863c0a:checks_test.go:aws-access-token:52
- 1cecd5e0908ab581f217ebb2cb58829204530c79:README.md:aws-access-token:25
- 1cecd5e0908ab581f217ebb2cb58829204530c79:README.md:aws-access-token:27
+8cfa6b2e43544895f52d2e37535ccfe29a6cdfd3:cmd/generate/config/rules/infracost.go:infracost-api-token:24
+8cfa6b2e43544895f52d2e37535ccfe29a6cdfd3:cmd/generate/config/rules/infracost.go:generic-api-key:29
+8cfa6b2e43544895f52d2e37535ccfe29a6cdfd3:cmd/generate/config/rules/discord.go:discord-client-secret:64
+8cfa6b2e43544895f52d2e37535ccfe29a6cdfd3:cmd/generate/config/rules/grafana.go:grafana-cloud-api-token:42
+8cfa6b2e43544895f52d2e37535ccfe29a6cdfd3:cmd/generate/config/rules/grafana.go:grafana-service-account-token:80
+9152eaa57a91d7249bd0b3c3a86b9e837072a828:detect/reader_test.go:aws-access-token:12
+9152eaa57a91d7249bd0b3c3a86b9e837072a828:cmd/generate/config/rules/aws.go:aws-access-token:42
+93acc6e82adb46ef442fcb44bd9fd83489690ca3:cmd/generate/config/rules/1password.go:1password-service-account-token:25
+93acc6e82adb46ef442fcb44bd9fd83489690ca3:cmd/generate/config/rules/1password.go:1password-service-account-token:27
+93acc6e82adb46ef442fcb44bd9fd83489690ca3:cmd/generate/config/rules/1password.go:1password-service-account-token:28
+93acc6e82adb46ef442fcb44bd9fd83489690ca3:cmd/generate/config/rules/1password.go:generic-api-key:37
+83a57244cdd0bfe1634326ab04a29b9b139bf158:cmd/generate/config/rules/curl.go:openai-api-key:125
+83a57244cdd0bfe1634326ab04a29b9b139bf158:cmd/generate/config/rules/curl.go:curl-auth-header:100
+83a57244cdd0bfe1634326ab04a29b9b139bf158:cmd/generate/config/rules/curl.go:curl-auth-header:102
+83a57244cdd0bfe1634326ab04a29b9b139bf158:cmd/generate/config/rules/curl.go:curl-auth-header:108
+83a57244cdd0bfe1634326ab04a29b9b139bf158:cmd/generate/config/rules/curl.go:curl-auth-header:112
+83a57244cdd0bfe1634326ab04a29b9b139bf158:cmd/generate/config/rules/curl.go:curl-auth-header:121
+83a57244cdd0bfe1634326ab04a29b9b139bf158:cmd/generate/config/rules/curl.go:curl-auth-header:122
+83a57244cdd0bfe1634326ab04a29b9b139bf158:cmd/generate/config/rules/curl.go:curl-auth-header:123
+83a57244cdd0bfe1634326ab04a29b9b139bf158:cmd/generate/config/rules/curl.go:curl-auth-header:126
+83a57244cdd0bfe1634326ab04a29b9b139bf158:cmd/generate/config/rules/curl.go:curl-auth-header:131
+83a57244cdd0bfe1634326ab04a29b9b139bf158:cmd/generate/config/rules/curl.go:curl-auth-header:134
+83a57244cdd0bfe1634326ab04a29b9b139bf158:cmd/generate/config/rules/curl.go:curl-auth-header:137
+83a57244cdd0bfe1634326ab04a29b9b139bf158:cmd/generate/config/rules/curl.go:curl-auth-header:137
+83a57244cdd0bfe1634326ab04a29b9b139bf158:cmd/generate/config/rules/curl.go:generic-api-key:139
+83a57244cdd0bfe1634326ab04a29b9b139bf158:cmd/generate/config/rules/curl.go:jwt:134
+83a57244cdd0bfe1634326ab04a29b9b139bf158:cmd/generate/config/rules/curl.go:jwt:170
+cf5334fd61d16fb4af1362856ebfb98397c5d4b3:cmd/generate/config/rules/curl.go:curl-auth-user:32
+cf5334fd61d16fb4af1362856ebfb98397c5d4b3:cmd/generate/config/rules/curl.go:curl-auth-user:33
+cf5334fd61d16fb4af1362856ebfb98397c5d4b3:cmd/generate/config/rules/curl.go:curl-auth-user:40
+cf5334fd61d16fb4af1362856ebfb98397c5d4b3:cmd/generate/config/rules/curl.go:curl-auth-user:42
+cf5334fd61d16fb4af1362856ebfb98397c5d4b3:cmd/generate/config/rules/curl.go:curl-auth-user:43
+cf5334fd61d16fb4af1362856ebfb98397c5d4b3:cmd/generate/config/rules/curl.go:curl-auth-user:44
+cf5334fd61d16fb4af1362856ebfb98397c5d4b3:cmd/generate/config/rules/curl.go:curl-auth-user:45
+aabe3815394d24d5b8198ba6068a99e0ba7601b1:config/config_test.go:aws-access-token:72
+b9f7fdaacb9e3799a9b3e4f7f6181963b8931b73:config/config_test.go:aws-access-token:67
+3ef444d24677c863bb724fa406dd12464b7f2362:config/config_test.go:aws-access-token:39
+8fb39ba8dc9d872d57cc3151b3750e8234b9b980:cmd/generate/config/rules/azure.go:azure-ad-client-secret:33
+2278a2a97e422c8075207d17195b29e7f4ff15e1:detect/decoder_test.go:generic-api-key:22
+2278a2a97e422c8075207d17195b29e7f4ff15e1:detect/decoder_test.go:generic-api-key:32
+2278a2a97e422c8075207d17195b29e7f4ff15e1:detect/decoder_test.go:generic-api-key:37
+2278a2a97e422c8075207d17195b29e7f4ff15e1:detect/decoder_test.go:generic-api-key:54
+2278a2a97e422c8075207d17195b29e7f4ff15e1:detect/decoder_test.go:generic-api-key:59
+2278a2a97e422c8075207d17195b29e7f4ff15e1:detect/decoder_test.go:generic-api-key:64
+2278a2a97e422c8075207d17195b29e7f4ff15e1:detect/detect_test.go:private-key:23
+2278a2a97e422c8075207d17195b29e7f4ff15e1:detect/detect_test.go:generic-api-key:39
+2278a2a97e422c8075207d17195b29e7f4ff15e1:detect/detect_test.go:jwt:32
+2278a2a97e422c8075207d17195b29e7f4ff15e1:detect/detect_test.go:private-key:365
+2278a2a97e422c8075207d17195b29e7f4ff15e1:detect/detect_test.go:private-key:366
+2278a2a97e422c8075207d17195b29e7f4ff15e1:detect/detect_test.go:private-key:368
+2278a2a97e422c8075207d17195b29e7f4ff15e1:detect/detect_test.go:private-key:393
+2278a2a97e422c8075207d17195b29e7f4ff15e1:detect/detect_test.go:private-key:394
+2278a2a97e422c8075207d17195b29e7f4ff15e1:detect/detect_test.go:aws-access-token:407
+2278a2a97e422c8075207d17195b29e7f4ff15e1:detect/detect_test.go:aws-access-token:408
+2278a2a97e422c8075207d17195b29e7f4ff15e1:detect/detect_test.go:generic-api-key:452
+f8dcd838da26f591c70acbbc3dea8d8b4d1649c7:detect/detect_test.go:generic-api-key:616
+f8dcd838da26f591c70acbbc3dea8d8b4d1649c7:detect/detect_test.go:generic-api-key:618
+f8dcd838da26f591c70acbbc3dea8d8b4d1649c7:testdata/repos/nogit/.env.prod:generic-api-key:4
+032c47e7e1ebfb745d3b66ef448697d4cbf6a406:detect/detect_test.go:generic-api-key:38
+032c47e7e1ebfb745d3b66ef448697d4cbf6a406:detect/detect_test.go:generic-api-key:451
+6c5e01c144b3d5e48422ab66a353f4cbdc14b24a:detect/detect_test.go:private-key:22
+6c5e01c144b3d5e48422ab66a353f4cbdc14b24a:detect/detect_test.go:jwt:31
+6c5e01c144b3d5e48422ab66a353f4cbdc14b24a:detect/decoder_test.go:generic-api-key:22
+6c5e01c144b3d5e48422ab66a353f4cbdc14b24a:detect/decoder_test.go:generic-api-key:32
+6c5e01c144b3d5e48422ab66a353f4cbdc14b24a:detect/decoder_test.go:generic-api-key:37
+6c5e01c144b3d5e48422ab66a353f4cbdc14b24a:detect/decoder_test.go:generic-api-key:54
+6c5e01c144b3d5e48422ab66a353f4cbdc14b24a:detect/decoder_test.go:generic-api-key:59
+6c5e01c144b3d5e48422ab66a353f4cbdc14b24a:detect/decoder_test.go:generic-api-key:64
+6c5e01c144b3d5e48422ab66a353f4cbdc14b24a:detect/detect_test.go:private-key:359
+6c5e01c144b3d5e48422ab66a353f4cbdc14b24a:detect/detect_test.go:private-key:360
+6c5e01c144b3d5e48422ab66a353f4cbdc14b24a:detect/detect_test.go:private-key:362
+6c5e01c144b3d5e48422ab66a353f4cbdc14b24a:detect/detect_test.go:private-key:387
+6c5e01c144b3d5e48422ab66a353f4cbdc14b24a:detect/detect_test.go:private-key:388
+6c5e01c144b3d5e48422ab66a353f4cbdc14b24a:detect/detect_test.go:aws-access-token:401
+6c5e01c144b3d5e48422ab66a353f4cbdc14b24a:detect/detect_test.go:aws-access-token:402
+78f7d3f5dfba03f816418f987ff3a78643c1eda7:cmd/generate/config/rules/flyio.go:flyio-access-token:26
+78f7d3f5dfba03f816418f987ff3a78643c1eda7:cmd/generate/config/rules/flyio.go:flyio-access-token:30
+78f7d3f5dfba03f816418f987ff3a78643c1eda7:cmd/generate/config/rules/flyio.go:flyio-access-token:34
+78f7d3f5dfba03f816418f987ff3a78643c1eda7:cmd/generate/config/rules/flyio.go:flyio-access-token:37
+78f7d3f5dfba03f816418f987ff3a78643c1eda7:cmd/generate/config/rules/flyio.go:flyio-access-token:38
+3698060a2bcf926b8ae459270d9bcb7b69339104:cmd/generate/config/rules/kubernetes.go:generic-api-key:56
+3698060a2bcf926b8ae459270d9bcb7b69339104:cmd/generate/config/rules/kubernetes.go:generic-api-key:68
+3698060a2bcf926b8ae459270d9bcb7b69339104:cmd/generate/config/rules/kubernetes.go:generic-api-key:79
+3698060a2bcf926b8ae459270d9bcb7b69339104:cmd/generate/config/rules/kubernetes.go:generic-api-key:147
+3698060a2bcf926b8ae459270d9bcb7b69339104:cmd/generate/config/rules/kubernetes.go:generic-api-key:153
+3698060a2bcf926b8ae459270d9bcb7b69339104:cmd/generate/config/rules/kubernetes.go:generic-api-key:162
+5740eddd75b2a1149374438afe80c7cf2535b35f:README.md:aws-access-token:221
+5740eddd75b2a1149374438afe80c7cf2535b35f:README.md:aws-access-token:223
+5740eddd75b2a1149374438afe80c7cf2535b35f:README.md:aws-access-token:259
+5740eddd75b2a1149374438afe80c7cf2535b35f:cmd/generate/config/rules/generic.go:clojars-api-token:42
+372d99cfdb92a1e177badbfc1cd65bd692df9025:cmd/generate/config/rules/hashicorp.go:hashicorp-tf-api-token:24
+372d99cfdb92a1e177badbfc1cd65bd692df9025:cmd/generate/config/rules/vault.go:vault-service-token:22
+372d99cfdb92a1e177badbfc1cd65bd692df9025:cmd/generate/config/rules/vault.go:vault-service-token:25
+3be7faa1ffc80f1aa071192a09141d5e829e1af3:cmd/generate/config/rules/vault.go:vault-service-token:22
+3be7faa1ffc80f1aa071192a09141d5e829e1af3:cmd/generate/config/rules/hashicorp.go:hashicorp-tf-api-token:24
+3be7faa1ffc80f1aa071192a09141d5e829e1af3:cmd/generate/config/rules/vault.go:vault-service-token:25
+840c3cb24dcf14bf3332793f0702e75085ff5de2:detect/verify_test.go:generic-api-key:39
+840c3cb24dcf14bf3332793f0702e75085ff5de2:detect/verify_test.go:generic-api-key:47
+840c3cb24dcf14bf3332793f0702e75085ff5de2:detect/verify_test.go:generic-api-key:88
+c1345e1b2b63260d860637530ba4d17571d547d6:cmd/generate/config/rules/openshift.go:openshift-user-token:27
+c1345e1b2b63260d860637530ba4d17571d547d6:cmd/generate/config/rules/openshift.go:openshift-user-token:28
+821b2323940b1792d9001d0812a2a4f7480a69c0:cmd/generate/config/rules/cloudflare.go:cloudflare-origin-ca-key:20
+821b2323940b1792d9001d0812a2a4f7480a69c0:cmd/generate/config/rules/cloudflare.go:cloudflare-origin-ca-key:21
+e265bfbbc3b208a23f0e46dd4a96795817068b77:detect/validate_test.go:generic-api-key:93
+9d06c40017ba6710032e9bc08ebbc056175629cf:detect/validate_test.go:github-pat:33
+9d06c40017ba6710032e9bc08ebbc056175629cf:detect/validate_test.go:github-pat:36
+9d06c40017ba6710032e9bc08ebbc056175629cf:detect/validate_test.go:generic-api-key:43
+9d06c40017ba6710032e9bc08ebbc056175629cf:detect/validate_test.go:generic-api-key:49
+9d06c40017ba6710032e9bc08ebbc056175629cf:detect/validate_test.go:generic-api-key:57
+e9135cf0b598738b5fc63ca004db8ab30845393d:cmd/generate/config/rules/jwt.go:jwt:48
+9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-organization-api-token:85
+9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-organization-api-token:86
+9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-organization-api-token:87
+9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-organization-api-token:88
+9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-organization-api-token:89
+9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-organization-api-token:90
+9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-organization-api-token:91
+9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-organization-api-token:93
+9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-organization-api-token:95
+9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-organization-api-token:96
+9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-organization-api-token:97
+9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-access-token:30
+9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-access-token:31
+9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-access-token:32
+9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-access-token:33
+9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-access-token:34
+9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-access-token:35
+9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-access-token:36
+9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-access-token:37
+9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-access-token:38
+9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-access-token:39
+9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-access-token:40
+9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-access-token:41
+9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-access-token:42
+9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-access-token:43
+9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-access-token:45
+9fb36b242d75aac1a2bf885724dfd9886db08ea7:cmd/generate/config/rules/huggingface.go:huggingface-access-token:46
+463d24618fa42fc7629dc30c9744ebe36c5df1ab:cmd/generate/config/rules/slack.go:slack-user-token:66
+463d24618fa42fc7629dc30c9744ebe36c5df1ab:cmd/generate/config/rules/slack.go:slack-config-access-token:115
+463d24618fa42fc7629dc30c9744ebe36c5df1ab:cmd/generate/config/rules/slack.go:slack-legacy-workspace-token:210
+025908808f2ad1ce244f9806b8dd593bd9afbab0:detect/detect_test.go:discord-api-token:326
+e002920355ac91770a329cfa69d6359bd665ba66:cmd/generate/config/rules/privatekey.go:private-key:26
+e890a8e8098ee8021d25a429315a6c153126db22:cmd/generate/config/rules/jwt.go:jwt:17
+9326f35380636bcbe61e94b0584d1618c4b5c2c2:detect/detect_test.go:pypi-upload-token:27
+9326f35380636bcbe61e94b0584d1618c4b5c2c2:detect/detect_test.go:pypi-upload-token:32
+9326f35380636bcbe61e94b0584d1618c4b5c2c2:detect/detect_test.go:pypi-upload-token:33
+3a3e13c3b5f85b0116cf2a0cd92529baf22d0ac9:testdata/repos/with_square_and_google/env:gcp-api-key:3
+45c898c5ea56ee503a048c1bac1404cf63855edc:test_data/test_repos/test_dir_2/env:gcp-api-key:3
+45c898c5ea56ee503a048c1bac1404cf63855edc:test_data/test_dir_one_google_leak_and_square_leak.json:gcp-api-key:20
+45c898c5ea56ee503a048c1bac1404cf63855edc:test_data/test_dir_one_google_leak_and_square_leak.json:gcp-api-key:22
+f6460a7365479a48581e0641b40147914542bb24:test_data/test_local_owner_aws_leak_depth_2.json:aws-access-token:16
+f6460a7365479a48581e0641b40147914542bb24:test_data/test_local_owner_aws_leak_depth_2.json:aws-access-token:17
+f6460a7365479a48581e0641b40147914542bb24:test_data/test_local_owner_aws_leak_depth_2.json:aws-access-token:42
+f6460a7365479a48581e0641b40147914542bb24:test_data/test_local_owner_aws_leak_depth_2.json:aws-access-token:43
+f6460a7365479a48581e0641b40147914542bb24:test_data/test_local_owner_aws_leak_depth_2.json:aws-access-token:68
+f6460a7365479a48581e0641b40147914542bb24:test_data/test_local_owner_aws_leak_depth_2.json:aws-access-token:69
+f6460a7365479a48581e0641b40147914542bb24:test_data/test_local_owner_aws_leak_depth_2.json:aws-access-token:94
+f6460a7365479a48581e0641b40147914542bb24:test_data/test_local_owner_aws_leak_depth_2.json:aws-access-token:95
+7bd55e33b504f76fc2aec27f4f479a5fb2606480:src/constants.go:private-key:42
+e79ffc6ae8f66931d687407e07bc0632fb262091:src/constants.go:private-key:29
+2b995fda446e03b7660c327fec41265f03199c71:config.go:private-key:34
+ccef3680d5552443c999345567ea60909c863c0a:checks_test.go:aws-access-token:52
+1cecd5e0908ab581f217ebb2cb58829204530c79:README.md:aws-access-token:25
+1cecd5e0908ab581f217ebb2cb58829204530c79:README.md:aws-access-token:27
+e56870aecf8ac2733affc82e1ac25e3be9092db3:cmd/generate/config/rules/curl.go:generic-api-key:116
+239e6323639b18ba8a1081f17788a658da075dd7:cmd/generate/config/rules/sumologic.go:sumologic-access-token:72
+239e6323639b18ba8a1081f17788a658da075dd7:cmd/generate/config/rules/sumologic.go:sumologic-access-id:40
+239e6323639b18ba8a1081f17788a658da075dd7:cmd/generate/config/rules/readme.go:readme-api-token:26
+239e6323639b18ba8a1081f17788a658da075dd7:cmd/generate/config/rules/prefect.go:prefect-api-token:26
+239e6323639b18ba8a1081f17788a658da075dd7:cmd/generate/config/rules/databricks.go:databricks-api-token:25
+239e6323639b18ba8a1081f17788a658da075dd7:cmd/generate/config/rules/databricks.go:generic-api-key:22

+ 5 - 3
cmd/generate/config/rules/adobe.go

@@ -9,9 +9,10 @@ import (
 func AdobeClientID() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Detected a pattern that resembles an Adobe OAuth Web Client ID, posing a risk of compromised Adobe integrations and data breaches.",
 		RuleID:      "adobe-client-id",
+		Description: "Detected a pattern that resembles an Adobe OAuth Web Client ID, posing a risk of compromised Adobe integrations and data breaches.",
 		Regex:       utils.GenerateSemiGenericRegex([]string{"adobe"}, utils.Hex("32"), true),
+		Entropy:     2,
 		Keywords:    []string{"adobe"},
 	}
 
@@ -25,9 +26,10 @@ func AdobeClientID() *config.Rule {
 func AdobeClientSecret() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Discovered a potential Adobe Client Secret, which, if exposed, could allow unauthorized Adobe service access and data manipulation.",
 		RuleID:      "adobe-client-secret",
-		Regex:       utils.GenerateUniqueTokenRegex(`(p8e-)(?i)[a-z0-9]{32}`, true),
+		Description: "Discovered a potential Adobe Client Secret, which, if exposed, could allow unauthorized Adobe service access and data manipulation.",
+		Regex:       utils.GenerateUniqueTokenRegex(`p8e-(?i)[a-z0-9]{32}`, false),
+		Entropy:     2,
 		Keywords:    []string{"p8e-"},
 	}
 

+ 7 - 7
cmd/generate/config/rules/alibaba.go

@@ -9,9 +9,10 @@ import (
 func AlibabaAccessKey() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Detected an Alibaba Cloud AccessKey ID, posing a risk of unauthorized cloud resource access and potential data compromise.",
 		RuleID:      "alibaba-access-key-id",
-		Regex:       utils.GenerateUniqueTokenRegex(`(LTAI)(?i)[a-z0-9]{20}`, true),
+		Description: "Detected an Alibaba Cloud AccessKey ID, posing a risk of unauthorized cloud resource access and potential data compromise.",
+		Regex:       utils.GenerateUniqueTokenRegex(`LTAI(?i)[a-z0-9]{20}`, false),
+		Entropy:     2,
 		Keywords:    []string{"LTAI"},
 	}
 
@@ -26,12 +27,11 @@ func AlibabaAccessKey() *config.Rule {
 func AlibabaSecretKey() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Discovered a potential Alibaba Cloud Secret Key, potentially allowing unauthorized operations and data access within Alibaba Cloud.",
 		RuleID:      "alibaba-secret-key",
-		Regex: utils.GenerateSemiGenericRegex([]string{"alibaba"},
-			utils.AlphaNumeric("30"), true),
-
-		Keywords: []string{"alibaba"},
+		Description: "Discovered a potential Alibaba Cloud Secret Key, potentially allowing unauthorized operations and data access within Alibaba Cloud.",
+		Regex:       utils.GenerateSemiGenericRegex([]string{"alibaba"}, utils.AlphaNumeric("30"), true),
+		Entropy:     2,
+		Keywords:    []string{"alibaba"},
 	}
 
 	// validate

+ 3 - 2
cmd/generate/config/rules/authress.go

@@ -12,9 +12,10 @@ func Authress() *config.Rule {
 	// Rule Definition
 	// (Note: When changes are made to this, rerun `go generate ./...` and commit the config/gitleaks.toml file
 	r := config.Rule{
-		Description: "Uncovered a possible Authress Service Client Access Key, which may compromise access control services and sensitive data.",
 		RuleID:      "authress-service-client-access-key",
-		Regex:       utils.GenerateUniqueTokenRegex(`(?:sc|ext|scauth|authress)_[a-z0-9]{5,30}\.[a-z0-9]{4,6}\.acc[_-][a-z0-9-]{10,32}\.[a-z0-9+/_=-]{30,120}`, true),
+		Description: "Uncovered a possible Authress Service Client Access Key, which may compromise access control services and sensitive data.",
+		Regex:       utils.GenerateUniqueTokenRegex(`(?:sc|ext|scauth|authress)_(?i)[a-z0-9]{5,30}\.[a-z0-9]{4,6}\.(?-i:acc)[_-][a-z0-9-]{10,32}\.[a-z0-9+/_=-]{30,120}`, false),
+		Entropy:     2,
 		Keywords:    []string{"sc_", "ext_", "scauth_", "authress_"},
 	}
 

+ 3 - 2
cmd/generate/config/rules/clojars.go

@@ -11,10 +11,11 @@ import (
 func Clojars() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Uncovered a possible Clojars API token, risking unauthorized access to Clojure libraries and potential code manipulation.",
 		RuleID:      "clojars-api-token",
+		Description: "Uncovered a possible Clojars API token, risking unauthorized access to Clojure libraries and potential code manipulation.",
 		Regex:       regexp.MustCompile(`(?i)CLOJARS_[a-z0-9]{60}`),
-		Keywords:    []string{"clojars"},
+		Entropy:     2,
+		Keywords:    []string{"clojars_"},
 	}
 
 	// validate

+ 8 - 8
cmd/generate/config/rules/cloudflare.go

@@ -27,11 +27,11 @@ var identifiers = []string{"cloudflare"}
 func CloudflareGlobalAPIKey() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Detected a Cloudflare Global API Key, potentially compromising cloud application deployments and operational security.",
 		RuleID:      "cloudflare-global-api-key",
+		Description: "Detected a Cloudflare Global API Key, potentially compromising cloud application deployments and operational security.",
 		Regex:       utils.GenerateSemiGenericRegex(identifiers, utils.Hex("37"), true),
-
-		Keywords: identifiers,
+		Entropy:     2,
+		Keywords:    identifiers,
 	}
 
 	// validate
@@ -44,11 +44,11 @@ func CloudflareGlobalAPIKey() *config.Rule {
 func CloudflareAPIKey() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Detected a Cloudflare API Key, potentially compromising cloud application deployments and operational security.",
 		RuleID:      "cloudflare-api-key",
+		Description: "Detected a Cloudflare API Key, potentially compromising cloud application deployments and operational security.",
 		Regex:       utils.GenerateSemiGenericRegex(identifiers, utils.AlphaNumericExtendedShort("40"), true),
-
-		Keywords: identifiers,
+		Entropy:     2,
+		Keywords:    identifiers,
 	}
 
 	// validate
@@ -65,8 +65,8 @@ func CloudflareOriginCAKey() *config.Rule {
 		Description: "Detected a Cloudflare Origin CA Key, potentially compromising cloud application deployments and operational security.",
 		RuleID:      "cloudflare-origin-ca-key",
 		Regex:       utils.GenerateUniqueTokenRegex(`v1\.0-`+utils.Hex("24")+"-"+utils.Hex("146"), false),
-
-		Keywords: ca_identifiers,
+		Entropy:     2,
+		Keywords:    ca_identifiers,
 	}
 
 	// validate

+ 34 - 12
cmd/generate/config/rules/curl.go

@@ -13,15 +13,18 @@ func CurlBasicAuth() *config.Rule {
 	r := config.Rule{
 		RuleID: "curl-auth-user",
 		// TODO: Description: "",
-		Regex:    regexp.MustCompile(`\bcurl\b(?:.*|.*(?:[\r\n]{1,2}.*){1,5})[ \t\n\r](?:-u|--user)[ =](?:("[^:"]{3,}:[^"]{3,}")|('[^:']{3,}:[^']{3,}')|((?:"[^"]{3,}"|'[^']{3,}'|[\w$@.-]+):(?:"[^"]{3,}"|'[^']{3,}'|[\w$@.-]+))|)(?:\s|\z)`),
+		Regex:    regexp.MustCompile(`\bcurl\b(?:.*|.*(?:[\r\n]{1,2}.*){1,5})[ \t\n\r](?:-u|--user)(?:=|[ \t]{0,5})(?:"([^:"]{3,}:[^"]{3,})"|'([^:']{3,}:[^']{3,})'|((?:"[^"]{3,}"|'[^']{3,}'|[\w$@.-]+):(?:"[^"]{3,}"|'[^']{3,}'|[\w${}@.-]+)))(?:\s|\z)`),
 		Keywords: []string{"curl"},
+		Entropy:  2,
 		Allowlists: []config.Allowlist{
 			{
 				Regexes: []*regexp.Regexp{
-					regexp.MustCompile(`[^:]+:(changeme|pass(word)?|pwd|\*+|x+)`),    // common placeholder passwords
-					regexp.MustCompile(`<[^>]+>:<[^>]+>|<[^:]+:[^>]+>`),              // <placeholder>
-					regexp.MustCompile(`[^:]+:\[[^]]+]`),                             // [placeholder]
-					regexp.MustCompile(`(?i)[^:]+:\$(\d|[a-z]\w+|(\{\d|[a-z]\w+}))`), // $1 or $VARIABLE
+					regexp.MustCompile(`[^:]+:(change(it|me)|pass(word)?|pwd|test|token|\*+|x+)`), // common placeholder passwords
+					regexp.MustCompile(`<[^>]+>:<[^>]+>|<[^:]+:[^>]+>`),                           // <placeholder>
+					regexp.MustCompile(`[^:]+:\[[^]]+]`),                                          // [placeholder]
+					regexp.MustCompile(`[^:]+:\$(\d|\w+|\{(\d|\w+)})`),                            // $1 or $VARIABLE
+					regexp.MustCompile(`\$\([^)]+\):\$\([^)]+\)`),                                 // $(cat login.txt)
+					regexp.MustCompile(`\$?{{[^}]+}}:\$?{{[^}]+}}`),                               // ${{ secrets.FOO }} or {{ .Values.foo }}
 				},
 			},
 		},
@@ -37,6 +40,7 @@ func CurlBasicAuth() *config.Rule {
   -u developer:yqDVtkqPECriaLRi`, // different line
 
 		// long
+		`curl -sw '%{http_code}' -X POST --user  'johns:h0pk1ns~21s' $GItHUB_API_URL/$GIT_COMMIT --data`,
 		`curl --user roger23@gmail.com:pQ9wTxu4Fg https://www.dropbox.com/cli_link?host_id=abcdefg -v`, // same line, no quotes
 		`curl -s --user 'api:d2LkV78zLx!t' \
     https://api.mailgun.net/v2/sandbox91d3515882ecfaa1c65be642.mailgun.org/messages`, // same line, single quotes
@@ -52,13 +56,25 @@ func CurlBasicAuth() *config.Rule {
 	}
 	fps := []string{
 		// short
+		`curl -i -u 'test:test'`,
 		`   curl -sL --user "$1:$2" "$3" > "$4"`,                      // environment variable
 		`curl -u <user:password> https://test.com/endpoint`,           // placeholder
 		`curl --user neo4j:[PASSWORD] http://[IP]:7474/db/data/`,      // placeholder
 		`curl -u "myusername" http://localhost:15130/api/check_user/`, // no password
+		`curl -u username:token`,
+		`curl -u "${_username}:${_password}"`,
+		`curl -k -X POST -I -u "SRVC_JENKINS:${APPID}"`,
 
 		// long
-		`           curl -sL --user "$GITHUB_USERNAME:$GITHUB_PASSWORD" "$GITHUB_URL" > "$TESTS_PATH"`,                                                             // environment variable
+		`curl -sw '%{http_code}' -X POST --user '$USERNAME:$PASSWORD' $GItHUB_API_URL/$GIT_COMMIT --data`,
+		`curl --user "xxx:yyy"`,
+		`           curl -sL --user "$GITHUB_USERNAME:$GITHUB_PASSWORD" "$GITHUB_URL" > "$TESTS_PATH"`, // environment variable
+		// variable interpolation
+		`curl --silent --fail {{- if and $.Values.username $.Values.password }} --user "{{ $.Values.username }}:{{ $.Values.password }}"`,
+		`curl -XGET -i -u "${{ env.ELK_ID }}:${{ build.env.ELK_PASS }}"`,
+		`curl -XGET -i -u "${{needs.vault.outputs.account_id}}:${{needs.vault.outputs.account_password}}"`,
+		`curl -XGET -i -u "${{ steps.vault.outputs.account_id }}:${{ steps.vault.outputs.account_password }}"`,
+		`curl -X POST --user "$(cat ./login.txt):$(cat ./password.txt)"`,                                                                                           // command
 		`curl http://127.0.0.1:5000/file --user user:pass --digest        # digest auth`,                                                                           // placeholder
 		`   curl -X GET --insecure --user "username:password" \`,                                                                                                   // placeholder
 		`curl --silent --insecure --user ${f5user}:${f5pass} \`,                                                                                                    // placeholder
@@ -80,12 +96,13 @@ nc -u -l 41234`,
 // https://curl.se/docs/manpage.html#-H
 func CurlHeaderAuth() *config.Rule {
 	// language=regexp
-	authPat := `(?i)(?:Authorization:[ \t]?(?:Basic[ \t]([a-z0-9+/]{8,}={0,3})|(?:Bearer|Token)[ \t]([\w=@.+/-]{8,})|([\w=.+/-]{8,}))|(?:ApiKey|Token|X-API-KEY):[ \t]?([\w=@.+/-]{8,}))`
+	authPat := `(?i)(?:Authorization:[ \t]{0,5}(?:Basic[ \t]([a-z0-9+/]{8,}={0,3})|(?:Bearer|(?:Api-)?Token)[ \t]([\w=~@.+/-]{8,})|([\w=~@.+/-]{8,}))|(?:(?:X-)?Api-?(?:Key|Token)|Token):[ \t]{0,5}([\w=~@.+/-]{8,}))`
 	r := config.Rule{
 		RuleID: "curl-auth-header",
 		// TODO: Description: "",
 		Regex: regexp.MustCompile(
-			fmt.Sprintf(`\bcurl\b(?:.*?|.*?(?:[\r\n]{1,2}.*?){1,5})[ \t\n\r](?:-H|--header)[ =](?:"%s"|'%s')(?:\B|\s|\z)`, authPat, authPat)),
+			// language=regexp
+			fmt.Sprintf(`\bcurl\b(?:.*?|.*?(?:[\r\n]{1,2}.*?){1,5})[ \t\n\r](?:-H|--header)(?:=|[ \t]{0,5})(?:"%s"|'%s')(?:\B|\s|\z)`, authPat, authPat)),
 		Entropy:  2.75,
 		Keywords: []string{"curl"},
 		//Allowlists: []config.Allowlist{
@@ -96,6 +113,7 @@ func CurlHeaderAuth() *config.Rule {
 	}
 
 	tps := []string{
+		`curl --header  'Authorization:  5eb4223e-5008-46e5-be67-c7b8f2732305'`,
 		// Short flag.
 		`curl -H 'Authorization: Basic YnJvd3Nlcjo=' \`, // same line, single quotes
 		// TODO: Handle short flags combined.
@@ -105,7 +123,7 @@ func CurlHeaderAuth() *config.Rule {
 		`curl -k -X POST --header "Authorization: Basic djJlNEpYa0NJUHZ5a2FWT0VRXzRqZmZUdDkwYTp2emNBZGFzZWpmlWZiUDc2VUJjNDNNVDExclVh" "https://api-qa.example.com:8243/token" -d "grant_type=client_credentials"`, // same line, double quotes
 
 		// Basic auth.
-		` curl -X POST -H "Content-Type: application/json" \
+		`curl -X POST -H "Content-Type: application/json" \
  -H "Authorization: Basic MzUzYjMwMmM0NDU3NGY1NjUwNDU2ODdlNTM0ZTdkNmE6Mjg2OTI0Njk3ZTYxNWE2NzJhNjQ2YTQ5MzU0NTY0NmM=" \
   -d '{"user":{"emailAddress":"test@example.com"}, "password":"password"}' \
   'http://localhost:8080/oauth2-provider/v1.0/users'`, // different line, double quotes
@@ -126,18 +144,22 @@ func CurlHeaderAuth() *config.Rule {
 		`curl -X GET "https://api.cloudflare.com/client/v4/user/tokens/verify" \
      -H "Authorization: Bearer _FXNljbSRYMWx3TWrd7lgKhLtVZX6iskC8Wcbb4b" \
      -H "Content-Type:application/json"`,
+		`curl -H "Authorization: Bearer sha256~bRLFnzd59Z3XpZH5_seJPHALOuvbWiKwbFKSsoALkgp"`,
 
 		// Token auth
-		`curl -H "Authorization: Token 22cb987851bc5659229114c62e60c79abd0d2c08" --request PUT https://appsecclass.report/api/use/635`, // token
+		`curl -H "Authorization: Api-Token 22cb987851bc5659l29114c62e60c79abd0d2c08" --request PUT https://appsecclass.report/api/use/635`, // token
+		`curl -H "Authorization: Token 22cb987851bc5659229114c62e60c79abd0d2c08" --request PUT https://appsecclass.report/api/use/635`,     // token
 
 		// Nothing
 		`curl -L -H "Authorization:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb25maWRlbmNlIjowLjh9.kvRPfjAhLhtRTczoRgctVGp7KY1QVH3UBZM-gM0x8ec" service1.local -> correct jwt `, // no prefix
+		`curl -L -H "Authorization: sha256~bRLFnzd5@=-.a+/hgdS"`, // no prefix
 
 		// Non-authorization headers.
-		`curl -XPOST http://localhost:8080/api/tasks -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" -H "Token: 3fea6af1349166ea" -d "content=hello-curl"`, // token
 		`curl -X GET \
      -H "apikey: c4ed6c21-9dd5-4a05-8e3f-c56d1151cce8" \
-     -H "Accept: application/json" \`, // API Key placeholder
+     -H "Accept: application/json" \`, // apikey
+		`curl -X POST --header "Api-Token: Sk94HG7f6KB"`, // api-token
+		`curl -XPOST http://localhost:8080/api/tasks -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" -H "Token: 3fea6af1349166ea" -d "content=hello-curl"`, // token
 	}
 	fps := []string{
 		// Placeholders

+ 8 - 3
cmd/generate/config/rules/databricks.go

@@ -9,15 +9,20 @@ import (
 func Databricks() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Uncovered a Databricks API token, which may compromise big data analytics platforms and sensitive data processing.",
 		RuleID:      "databricks-api-token",
-		Regex:       utils.GenerateUniqueTokenRegex(`dapi[a-h0-9]{32}`, true),
+		Description: "Uncovered a Databricks API token, which may compromise big data analytics platforms and sensitive data processing.",
+		Regex:       utils.GenerateUniqueTokenRegex(`dapi[a-f0-9]{32}(?:-\d)?`, false),
+		Entropy:     3,
 		Keywords:    []string{"dapi"},
 	}
 
 	// validate
 	tps := []string{
 		utils.GenerateSampleSecret("databricks", "dapi"+secrets.NewSecret(utils.Hex("32"))),
+		`token = dapif13ac4b49d1cb31f69f678e39602e381-2`, // gitleaks:ignore
+	}
+	fps := []string{
+		`DATABRICKS_TOKEN=dapi123456789012345678a9bc01234defg5`,
 	}
-	return utils.Validate(r, tps, nil)
+	return utils.Validate(r, tps, fps)
 }

+ 7 - 6
cmd/generate/config/rules/digitalocean.go

@@ -8,9 +8,10 @@ import (
 
 func DigitalOceanPAT() *config.Rule {
 	r := config.Rule{
-		Description: "Discovered a DigitalOcean Personal Access Token, posing a threat to cloud infrastructure security and data privacy.",
 		RuleID:      "digitalocean-pat",
-		Regex:       utils.GenerateUniqueTokenRegex(`dop_v1_[a-f0-9]{64}`, true),
+		Description: "Discovered a DigitalOcean Personal Access Token, posing a threat to cloud infrastructure security and data privacy.",
+		Regex:       utils.GenerateUniqueTokenRegex(`dop_v1_[a-f0-9]{64}`, false),
+		Entropy:     3,
 		Keywords:    []string{"dop_v1_"},
 	}
 
@@ -22,11 +23,11 @@ func DigitalOceanPAT() *config.Rule {
 
 func DigitalOceanOAuthToken() *config.Rule {
 	r := config.Rule{
-		Description: "Found a DigitalOcean OAuth Access Token, risking unauthorized cloud resource access and data compromise.",
 		RuleID:      "digitalocean-access-token",
-
-		Regex:    utils.GenerateUniqueTokenRegex(`doo_v1_[a-f0-9]{64}`, true),
-		Keywords: []string{"doo_v1_"},
+		Description: "Found a DigitalOcean OAuth Access Token, risking unauthorized cloud resource access and data compromise.",
+		Entropy:     3,
+		Regex:       utils.GenerateUniqueTokenRegex(`doo_v1_[a-f0-9]{64}`, false),
+		Keywords:    []string{"doo_v1_"},
 	}
 
 	tps := []string{

+ 3 - 2
cmd/generate/config/rules/doppler.go

@@ -11,10 +11,11 @@ import (
 func Doppler() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Discovered a Doppler API token, posing a risk to environment and secrets management security.",
 		RuleID:      "doppler-api-token",
+		Description: "Discovered a Doppler API token, posing a risk to environment and secrets management security.",
 		Regex:       regexp.MustCompile(`dp\.pt\.(?i)[a-z0-9]{43}`),
-		Keywords:    []string{"doppler"},
+		Entropy:     2,
+		Keywords:    []string{`dp.pt.`},
 	}
 
 	// validate

+ 2 - 1
cmd/generate/config/rules/duffel.go

@@ -14,7 +14,8 @@ func Duffel() *config.Rule {
 		RuleID:      "duffel-api-token",
 		Description: "Uncovered a Duffel API token, which may compromise travel platform integrations and sensitive customer data.",
 		Regex:       regexp.MustCompile(`duffel_(?:test|live)_(?i)[a-z0-9_\-=]{43}`),
-		Keywords:    []string{"duffel"},
+		Entropy:     2,
+		Keywords:    []string{"duffel_"},
 	}
 
 	// validate

+ 3 - 2
cmd/generate/config/rules/dynatrace.go

@@ -11,10 +11,11 @@ import (
 func Dynatrace() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Detected a Dynatrace API token, potentially risking application performance monitoring and data exposure.",
 		RuleID:      "dynatrace-api-token",
+		Description: "Detected a Dynatrace API token, potentially risking application performance monitoring and data exposure.",
 		Regex:       regexp.MustCompile(`dt0c01\.(?i)[a-z0-9]{24}\.[a-z0-9]{64}`),
-		Keywords:    []string{"dynatrace"},
+		Entropy:     4,
+		Keywords:    []string{"dt0c01"},
 	}
 
 	// validate

+ 4 - 2
cmd/generate/config/rules/easypost.go

@@ -11,9 +11,10 @@ import (
 func EasyPost() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Identified an EasyPost API token, which could lead to unauthorized postal and shipment service access and data exposure.",
 		RuleID:      "easypost-api-token",
+		Description: "Identified an EasyPost API token, which could lead to unauthorized postal and shipment service access and data exposure.",
 		Regex:       regexp.MustCompile(`\bEZAK(?i)[a-z0-9]{54}`),
+		Entropy:     2,
 		Keywords:    []string{"EZAK"},
 	}
 
@@ -27,9 +28,10 @@ func EasyPost() *config.Rule {
 func EasyPostTestAPI() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Detected an EasyPost test API token, risking exposure of test environments and potentially sensitive shipment data.",
 		RuleID:      "easypost-test-api-token",
+		Description: "Detected an EasyPost test API token, risking exposure of test environments and potentially sensitive shipment data.",
 		Regex:       regexp.MustCompile(`\bEZTK(?i)[a-z0-9]{54}`),
+		Entropy:     2,
 		Keywords:    []string{"EZTK"},
 	}
 

+ 12 - 7
cmd/generate/config/rules/facebook.go

@@ -11,11 +11,11 @@ import (
 func FacebookSecret() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Discovered a Facebook Application secret, posing a risk of unauthorized access to Facebook accounts and personal data exposure.",
 		RuleID:      "facebook-secret",
+		Description: "Discovered a Facebook Application secret, posing a risk of unauthorized access to Facebook accounts and personal data exposure.",
 		Regex:       utils.GenerateSemiGenericRegex([]string{"facebook"}, utils.Hex("32"), true),
-
-		Keywords: []string{"facebook"},
+		Entropy:     3,
+		Keywords:    []string{"facebook"},
 	}
 
 	// validate
@@ -31,9 +31,10 @@ func FacebookSecret() *config.Rule {
 func FacebookAccessToken() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Discovered a Facebook Access Token, posing a risk of unauthorized access to Facebook accounts and personal data exposure.",
 		RuleID:      "facebook-access-token",
+		Description: "Discovered a Facebook Access Token, posing a risk of unauthorized access to Facebook accounts and personal data exposure.",
 		Regex:       utils.GenerateUniqueTokenRegex(`\d{15,16}(\||%)[0-9a-z\-_]{27,40}`, true),
+		Entropy:     3,
 	}
 
 	// validate
@@ -49,9 +50,10 @@ func FacebookAccessToken() *config.Rule {
 func FacebookPageAccessToken() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Discovered a Facebook Page Access Token, posing a risk of unauthorized access to Facebook accounts and personal data exposure.",
 		RuleID:      "facebook-page-access-token",
-		Regex:       utils.GenerateUniqueTokenRegex("EAA[MC]"+utils.AlphaNumeric("20,"), true),
+		Description: "Discovered a Facebook Page Access Token, posing a risk of unauthorized access to Facebook accounts and personal data exposure.",
+		Regex:       utils.GenerateUniqueTokenRegex("EAA[MC](?i)"+utils.AlphaNumeric("20,"), false),
+		Entropy:     3,
 		Keywords:    []string{"EAAM", "EAAC"},
 	}
 
@@ -62,5 +64,8 @@ func FacebookPageAccessToken() *config.Rule {
 		`- name: FACEBOOK_TOKEN
 		value: "EAACEdEose0cBA1bad3afsf2aew"`, // gitleaks:allow
 	}
-	return utils.Validate(r, tps, nil)
+	fps := []string{
+		`eaaaC0b75a9329fded2ffa9a02b47e0117831b82`,
+	}
+	return utils.Validate(r, tps, fps)
 }

+ 6 - 3
cmd/generate/config/rules/flutterwave.go

@@ -11,9 +11,10 @@ import (
 func FlutterwavePublicKey() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Detected a Finicity Public Key, potentially exposing public cryptographic operations and integrations.",
 		RuleID:      "flutterwave-public-key",
+		Description: "Detected a Finicity Public Key, potentially exposing public cryptographic operations and integrations.",
 		Regex:       regexp.MustCompile(`FLWPUBK_TEST-(?i)[a-h0-9]{32}-X`),
+		Entropy:     2,
 		Keywords:    []string{"FLWPUBK_TEST"},
 	}
 
@@ -27,9 +28,10 @@ func FlutterwavePublicKey() *config.Rule {
 func FlutterwaveSecretKey() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Identified a Flutterwave Secret Key, risking unauthorized financial transactions and data breaches.",
 		RuleID:      "flutterwave-secret-key",
+		Description: "Identified a Flutterwave Secret Key, risking unauthorized financial transactions and data breaches.",
 		Regex:       regexp.MustCompile(`FLWSECK_TEST-(?i)[a-h0-9]{32}-X`),
+		Entropy:     2,
 		Keywords:    []string{"FLWSECK_TEST"},
 	}
 
@@ -43,9 +45,10 @@ func FlutterwaveSecretKey() *config.Rule {
 func FlutterwaveEncKey() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Uncovered a Flutterwave Encryption Key, which may compromise payment processing and sensitive financial information.",
 		RuleID:      "flutterwave-encryption-key",
+		Description: "Uncovered a Flutterwave Encryption Key, which may compromise payment processing and sensitive financial information.",
 		Regex:       regexp.MustCompile(`FLWSECK_TEST-(?i)[a-h0-9]{12}`),
+		Entropy:     2,
 		Keywords:    []string{"FLWSECK_TEST"},
 	}
 

+ 16 - 5
cmd/generate/config/rules/github.go

@@ -8,14 +8,24 @@ import (
 	"github.com/zricethezav/gitleaks/v8/config"
 )
 
+var githubAllowlist = []config.Allowlist{
+	{
+		Paths: []*regexp.Regexp{
+			// https://github.com/octokit/auth-token.js/?tab=readme-ov-file#createtokenauthtoken-options
+			regexp.MustCompile(`(^|/)@octokit/auth-token/README\.md$`),
+		},
+	},
+}
+
 func GitHubPat() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Uncovered a GitHub Personal Access Token, potentially leading to unauthorized repository access and sensitive content exposure.",
 		RuleID:      "github-pat",
+		Description: "Uncovered a GitHub Personal Access Token, potentially leading to unauthorized repository access and sensitive content exposure.",
 		Regex:       regexp.MustCompile(`ghp_[0-9a-zA-Z]{36}`),
 		Entropy:     3,
 		Keywords:    []string{"ghp_"},
+		Allowlists:  githubAllowlist,
 	}
 
 	// validate
@@ -31,8 +41,8 @@ func GitHubPat() *config.Rule {
 func GitHubFineGrainedPat() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Found a GitHub Fine-Grained Personal Access Token, risking unauthorized repository access and code manipulation.",
 		RuleID:      "github-fine-grained-pat",
+		Description: "Found a GitHub Fine-Grained Personal Access Token, risking unauthorized repository access and code manipulation.",
 		Regex:       regexp.MustCompile(`github_pat_\w{82}`),
 		Entropy:     3,
 		Keywords:    []string{"github_pat_"},
@@ -51,8 +61,8 @@ func GitHubFineGrainedPat() *config.Rule {
 func GitHubOauth() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Discovered a GitHub OAuth Access Token, posing a risk of compromised GitHub account integrations and data leaks.",
 		RuleID:      "github-oauth",
+		Description: "Discovered a GitHub OAuth Access Token, posing a risk of compromised GitHub account integrations and data leaks.",
 		Regex:       regexp.MustCompile(`gho_[0-9a-zA-Z]{36}`),
 		Entropy:     3,
 		Keywords:    []string{"gho_"},
@@ -71,11 +81,12 @@ func GitHubOauth() *config.Rule {
 func GitHubApp() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Identified a GitHub App Token, which may compromise GitHub application integrations and source code security.",
 		RuleID:      "github-app-token",
+		Description: "Identified a GitHub App Token, which may compromise GitHub application integrations and source code security.",
 		Regex:       regexp.MustCompile(`(?:ghu|ghs)_[0-9a-zA-Z]{36}`),
 		Entropy:     3,
 		Keywords:    []string{"ghu_", "ghs_"},
+		Allowlists:  githubAllowlist,
 	}
 
 	// validate
@@ -93,8 +104,8 @@ func GitHubApp() *config.Rule {
 func GitHubRefresh() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Detected a GitHub Refresh Token, which could allow prolonged unauthorized access to GitHub services.",
 		RuleID:      "github-refresh-token",
+		Description: "Detected a GitHub Refresh Token, which could allow prolonged unauthorized access to GitHub services.",
 		Regex:       regexp.MustCompile(`ghr_[0-9a-zA-Z]{36}`),
 		Entropy:     3,
 		Keywords:    []string{"ghr_"},

+ 2 - 3
cmd/generate/config/rules/grafana.go

@@ -12,14 +12,13 @@ func GrafanaApiKey() *config.Rule {
 		RuleID:      "grafana-api-key",
 		Description: "Identified a Grafana API key, which could compromise monitoring dashboards and sensitive data analytics.",
 		Regex:       utils.GenerateUniqueTokenRegex(`eyJrIjoi[A-Za-z0-9]{70,400}={0,3}`, true),
+		Entropy:     3,
 		Keywords:    []string{"eyJrIjoi"},
 	}
 
 	// validate
 	tps := []string{
-		utils.GenerateSampleSecret("grafana-api-key",
-			"eyJrIjoi"+
-				secrets.NewSecret(utils.AlphaNumeric("70"))),
+		utils.GenerateSampleSecret("grafana-api-key", "eyJrIjoi"+secrets.NewSecret(utils.AlphaNumeric("70"))),
 	}
 	return utils.Validate(r, tps, nil)
 }

+ 4 - 3
cmd/generate/config/rules/hashicorp.go

@@ -12,8 +12,8 @@ import (
 func HashiCorpTerraform() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Uncovered a HashiCorp Terraform user/org API token, which may lead to unauthorized infrastructure management and security breaches.",
 		RuleID:      "hashicorp-tf-api-token",
+		Description: "Uncovered a HashiCorp Terraform user/org API token, which may lead to unauthorized infrastructure management and security breaches.",
 		Regex:       regexp.MustCompile(`(?i)[a-z0-9]{14}\.(?-i:atlasv1)\.[a-z0-9\-_=]{60,70}`),
 		Entropy:     3.5,
 		Keywords:    []string{"atlasv1"},
@@ -34,11 +34,12 @@ func HashicorpField() *config.Rule {
 	keywords := []string{"administrator_login_password", "password"}
 	// define rule
 	r := config.Rule{
-		Description: "Identified a HashiCorp Terraform password field, risking unauthorized infrastructure configuration and security breaches.",
 		RuleID:      "hashicorp-tf-password",
+		Description: "Identified a HashiCorp Terraform password field, risking unauthorized infrastructure configuration and security breaches.",
 		Regex:       utils.GenerateSemiGenericRegex(keywords, fmt.Sprintf(`"%s"`, utils.AlphaNumericExtended("8,20")), true),
-		Keywords:    keywords,
+		Entropy:     2,
 		Path:        regexp.MustCompile(`(?i)\.(?:tf|hcl)$`),
+		Keywords:    keywords,
 	}
 
 	tps := map[string]string{

+ 6 - 4
cmd/generate/config/rules/hashicorp_vault.go

@@ -14,7 +14,7 @@ func VaultServiceToken() *config.Rule {
 		Description: "Identified a Vault Service Token, potentially compromising infrastructure security and access to sensitive credentials.",
 		Regex:       utils.GenerateUniqueTokenRegex(`(?:hvs\.[\w-]{90,120}|s\.(?i:[a-z0-9]{24}))`, false),
 		Entropy:     3.5,
-		Keywords:    []string{"hvs", "s."},
+		Keywords:    []string{"hvs.", "s."},
 		Allowlists: []config.Allowlist{
 			{
 				Regexes: []*regexp.Regexp{
@@ -52,15 +52,17 @@ func VaultServiceToken() *config.Rule {
 func VaultBatchToken() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Detected a Vault Batch Token, risking unauthorized access to secret management services and sensitive data.",
 		RuleID:      "vault-batch-token",
-		Regex:       utils.GenerateUniqueTokenRegex(`hvb\.[a-z0-9_-]{138,212}`, true),
-		Keywords:    []string{"hvb"},
+		Description: "Detected a Vault Batch Token, risking unauthorized access to secret management services and sensitive data.",
+		Regex:       utils.GenerateUniqueTokenRegex(`hvb\.[\w-]{138,300}`, false),
+		Entropy:     4,
+		Keywords:    []string{"hvb."},
 	}
 
 	// validate
 	tps := []string{
 		utils.GenerateSampleSecret("vault", "hvb."+secrets.NewSecret(utils.AlphaNumericExtendedShort("138"))),
+		`hvb.AAAAAQJgxDgqsGNorpoOR7hPZ5SU-ynBvCl764jyRP_fnX7WvkdkDzGjbLNGdPdtlY33Als2P36yDZueqzfdGw9RsaTeaYXSH7E4RYSWuRoQ9YRKIw8o7mDDY2ZcT3KOB7RwtW1w1FN2eDqcy_sbCjXPaM1iBVH-mqMSYRmRd2nb5D1SJPeBzIYRqSglLc31wUGN7xEzyrKUczqOKsIcybQA`, // gitleaks:allow
 	}
 	return utils.Validate(r, tps, nil)
 }

+ 1 - 2
cmd/generate/config/rules/huggingface.go

@@ -19,8 +19,7 @@ func HuggingFaceAccessToken() *config.Rule {
 		RuleID:      "huggingface-access-token",
 		Description: "Discovered a Hugging Face Access token, which could lead to unauthorized access to AI models and sensitive data.",
 		Regex:       regexp.MustCompile(`(?:^|[\\'"` + "`" + ` >=:])(hf_[a-zA-Z]{34})(?:$|[\\'"` + "`" + ` <])`),
-
-		Entropy: 1,
+		Entropy:     2,
 		Keywords: []string{
 			"hf_",
 		},

+ 2 - 1
cmd/generate/config/rules/intra42.go

@@ -11,7 +11,8 @@ func Intra42ClientSecret() *config.Rule {
 	r := config.Rule{
 		Description: "Found a Intra42 client secret, which could lead to unauthorized access to the 42School API and sensitive data.",
 		RuleID:      "intra42-client-secret",
-		Regex:       utils.GenerateUniqueTokenRegex(`s-s4t2(?:ud|af)-[abcdef0123456789]{64}`, true),
+		Regex:       utils.GenerateUniqueTokenRegex(`s-s4t2(?:ud|af)-(?i)[abcdef0123456789]{64}`, false),
+		Entropy:     3,
 		Keywords: []string{
 			"intra",
 			"s-s4t2ud-",

+ 2 - 0
cmd/generate/config/rules/jwt.go

@@ -15,6 +15,7 @@ func JWT() *config.Rule {
 		Description: "Uncovered a JSON Web Token, which may lead to unauthorized access to web applications and sensitive user data.",
 		RuleID:      "jwt",
 		Regex:       utils.GenerateUniqueTokenRegex(`ey[a-zA-Z0-9]{17,}\.ey[a-zA-Z0-9\/\\_-]{17,}\.(?:[a-zA-Z0-9\/\\_-]{10,}={0,2})?`, false),
+		Entropy:     3,
 		Keywords:    []string{"ey"},
 	}
 
@@ -72,6 +73,7 @@ func JWTBase64() *config.Rule {
 		Description: "Detected a Base64-encoded JSON Web Token, posing a risk of exposing encoded authentication and data exchange information.",
 		Regex: regexp.MustCompile(
 			`\bZXlK(?:(?P<alg>aGJHY2lPaU)|(?P<apu>aGNIVWlPaU)|(?P<apv>aGNIWWlPaU)|(?P<aud>aGRXUWlPaU)|(?P<b64>aU5qUWlP)|(?P<crit>amNtbDBJanBi)|(?P<cty>amRIa2lPaU)|(?P<epk>bGNHc2lPbn)|(?P<enc>bGJtTWlPaU)|(?P<jku>cWEzVWlPaU)|(?P<jwk>cWQyc2lPb)|(?P<iss>cGMzTWlPaU)|(?P<iv>cGRpSTZJ)|(?P<kid>cmFXUWlP)|(?P<key_ops>clpYbGZiM0J6SWpwY)|(?P<kty>cmRIa2lPaUp)|(?P<nonce>dWIyNWpaU0k2)|(?P<p2c>d01tTWlP)|(?P<p2s>d01uTWlPaU)|(?P<ppt>d2NIUWlPaU)|(?P<sub>emRXSWlPaU)|(?P<svt>emRuUWlP)|(?P<tag>MFlXY2lPaU)|(?P<typ>MGVYQWlPaUp)|(?P<url>MWNtd2l)|(?P<use>MWMyVWlPaUp)|(?P<ver>MlpYSWlPaU)|(?P<version>MlpYSnphVzl1SWpv)|(?P<x>NElqb2)|(?P<x5c>NE5XTWlP)|(?P<x5t>NE5YUWlPaU)|(?P<x5ts256>NE5YUWpVekkxTmlJNkl)|(?P<x5u>NE5YVWlPaU)|(?P<zip>NmFYQWlPaU))[a-zA-Z0-9\/\\_+\-\r\n]{40,}={0,2}`),
+		Entropy:  2,
 		Keywords: []string{"zxlk"},
 	}
 

+ 6 - 1
cmd/generate/config/rules/kubernetes.go

@@ -17,7 +17,7 @@ func KubernetesSecret() *config.Rule {
 	// - valid base64 characters
 	// - longer than 10 characters (no "YmFyCg==")
 	//language=regexp
-	dataPat := `\bdata:(?:.|\s){0,100}?\s+([\w.-]+:(?:[ \t]*(?:\||>[-+]?)\s+)?[ \t]*(?:["']?[a-z0-9]{10,}={0,3}["']?|\{\{[ \t\w"|$:=,.-]+}}|""|''))`
+	dataPat := `\bdata:(?:.|\s){0,100}?\s+([\w.-]+:(?:[ \t]*(?:\||>[-+]?)\s+)?[ \t]*(?:["']?[a-z0-9+/]{10,}={0,3}["']?|\{\{[ \t\w"|$:=,.-]+}}|""|''))`
 
 	// define rule
 	r := config.Rule{
@@ -46,6 +46,11 @@ func KubernetesSecret() *config.Rule {
 
 	// validate
 	tps := map[string]string{
+		"base64-characters.yaml": `
+apiVersion: v1
+kind: Secret
+data:
+	password: AAAAAAAAAAC7hjsA+H3owFygUv4w5B67lcSx14zff9FCPADiNbSwYWgE+O7Dhiy5tkRecs21ljjofvebe6xsYlA4cVmght0=`,
 		"comment.yaml": `
 apiVersion: v1
 kind: Secret

+ 4 - 2
cmd/generate/config/rules/linear.go

@@ -11,9 +11,10 @@ import (
 func LinearAPIToken() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Detected a Linear API Token, posing a risk to project management tools and sensitive task data.",
 		RuleID:      "linear-api-key",
+		Description: "Detected a Linear API Token, posing a risk to project management tools and sensitive task data.",
 		Regex:       regexp.MustCompile(`lin_api_(?i)[a-z0-9]{40}`),
+		Entropy:     2,
 		Keywords:    []string{"lin_api_"},
 	}
 
@@ -27,9 +28,10 @@ func LinearAPIToken() *config.Rule {
 func LinearClientSecret() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Identified a Linear Client Secret, which may compromise secure integrations and sensitive project management data.",
 		RuleID:      "linear-client-secret",
+		Description: "Identified a Linear Client Secret, which may compromise secure integrations and sensitive project management data.",
 		Regex:       utils.GenerateSemiGenericRegex([]string{"linear"}, utils.Hex("32"), true),
+		Entropy:     2,
 		Keywords:    []string{"linear"},
 	}
 

+ 1 - 1
cmd/generate/config/rules/npm.go

@@ -12,7 +12,7 @@ func NPM() *config.Rule {
 		RuleID:      "npm-access-token",
 		Description: "Uncovered an npm access token, potentially compromising package management and code repository access.",
 		Regex:       utils.GenerateUniqueTokenRegex(`npm_[a-z0-9]{36}`, true),
-
+		Entropy:     2,
 		Keywords: []string{
 			"npm_",
 		},

+ 6 - 4
cmd/generate/config/rules/okta.go

@@ -11,9 +11,8 @@ func OktaAccessToken() *config.Rule {
 	r := config.Rule{
 		RuleID:      "okta-access-token",
 		Description: "Identified an Okta Access Token, which may compromise identity management services and user authentication data.",
-		Regex: utils.GenerateSemiGenericRegex([]string{"okta"},
-			utils.AlphaNumericExtended("42"), true),
-
+		Regex:       utils.GenerateSemiGenericRegex([]string{"okta"}, utils.AlphaNumericExtended("42"), true),
+		Entropy:     3,
 		Keywords: []string{
 			"okta",
 		},
@@ -23,5 +22,8 @@ func OktaAccessToken() *config.Rule {
 	tps := []string{
 		utils.GenerateSampleSecret("okta", secrets.NewSecret(utils.AlphaNumeric("42"))),
 	}
-	return utils.Validate(r, tps, nil)
+	fps := []string{
+		"00000000000000000000000000000000000TUVWXYZ",
+	}
+	return utils.Validate(r, tps, fps)
 }

+ 2 - 2
cmd/generate/config/rules/openai.go

@@ -11,8 +11,8 @@ func OpenAI() *config.Rule {
 	r := config.Rule{
 		RuleID:      "openai-api-key",
 		Description: "Found an OpenAI API Key, posing a risk of unauthorized access to AI services and data manipulation.",
-		Regex:       utils.GenerateUniqueTokenRegex(`sk-[a-zA-Z0-9]{20}T3BlbkFJ[a-zA-Z0-9]{20}`, true),
-
+		Regex:       utils.GenerateUniqueTokenRegex(`sk-[a-zA-Z0-9]{20}T3BlbkFJ[a-zA-Z0-9]{20}`, false),
+		Entropy:     3,
 		Keywords: []string{
 			"T3BlbkFJ",
 		},

+ 2 - 3
cmd/generate/config/rules/openshift.go

@@ -15,9 +15,8 @@ func OpenshiftUserToken() *config.Rule {
 		RuleID:      "openshift-user-token",
 		Description: "Found an OpenShift user token, potentially compromising an OpenShift/Kubernetes cluster.",
 		// TODO: Do tokens vary in length or are they always 43?
-		Regex:       regexp.MustCompile(`\b(sha256~[\w-]{43})(?:[^\w-]|\z)`),
-		Entropy:     3.5,
-		SecretGroup: 0,
+		Regex:   regexp.MustCompile(`\b(sha256~[\w-]{43})(?:[^\w-]|\z)`),
+		Entropy: 3.5,
 		Keywords: []string{
 			"sha256~",
 		},

+ 6 - 6
cmd/generate/config/rules/planetscale.go

@@ -11,8 +11,8 @@ func PlanetScalePassword() *config.Rule {
 	r := config.Rule{
 		RuleID:      "planetscale-password",
 		Description: "Discovered a PlanetScale password, which could lead to unauthorized database operations and data breaches.",
-		Regex:       utils.GenerateUniqueTokenRegex(`pscale_pw_(?i)[a-z0-9=\-_\.]{32,64}`, true),
-
+		Regex:       utils.GenerateUniqueTokenRegex(`pscale_pw_(?i)[\w=\.-]{32,64}`, true),
+		Entropy:     3,
 		Keywords: []string{
 			"pscale_pw_",
 		},
@@ -32,8 +32,8 @@ func PlanetScaleAPIToken() *config.Rule {
 	r := config.Rule{
 		RuleID:      "planetscale-api-token",
 		Description: "Identified a PlanetScale API token, potentially compromising database management and operations.",
-		Regex:       utils.GenerateUniqueTokenRegex(`pscale_tkn_(?i)[a-z0-9=\-_\.]{32,64}`, true),
-
+		Regex:       utils.GenerateUniqueTokenRegex(`pscale_tkn_(?i)[\w=\.-]{32,64}`, false),
+		Entropy:     3,
 		Keywords: []string{
 			"pscale_tkn_",
 		},
@@ -53,8 +53,8 @@ func PlanetScaleOAuthToken() *config.Rule {
 	r := config.Rule{
 		RuleID:      "planetscale-oauth-token",
 		Description: "Found a PlanetScale OAuth token, posing a risk to database access control and sensitive data integrity.",
-		Regex:       utils.GenerateUniqueTokenRegex(`pscale_oauth_(?i)[a-z0-9=\-_\.]{32,64}`, true),
-
+		Regex:       utils.GenerateUniqueTokenRegex(`pscale_oauth_[\w=\.-]{32,64}`, false),
+		Entropy:     3,
 		Keywords: []string{
 			"pscale_oauth_",
 		},

+ 2 - 2
cmd/generate/config/rules/postman.go

@@ -11,8 +11,8 @@ func PostManAPI() *config.Rule {
 	r := config.Rule{
 		RuleID:      "postman-api-token",
 		Description: "Uncovered a Postman API token, potentially compromising API testing and development workflows.",
-		Regex:       utils.GenerateUniqueTokenRegex(`PMAK-(?i)[a-f0-9]{24}\-[a-f0-9]{34}`, true),
-
+		Regex:       utils.GenerateUniqueTokenRegex(`PMAK-(?i)[a-f0-9]{24}\-[a-f0-9]{34}`, false),
+		Entropy:     3,
 		Keywords: []string{
 			"PMAK-",
 		},

+ 6 - 3
cmd/generate/config/rules/prefect.go

@@ -11,8 +11,8 @@ func Prefect() *config.Rule {
 	r := config.Rule{
 		RuleID:      "prefect-api-token",
 		Description: "Detected a Prefect API token, risking unauthorized access to workflow management and automation services.",
-		Regex:       utils.GenerateUniqueTokenRegex(`pnu_[a-z0-9]{36}`, true),
-
+		Regex:       utils.GenerateUniqueTokenRegex(`pnu_[a-zA-Z0-9]{36}`, false),
+		Entropy:     2,
 		Keywords: []string{
 			"pnu_",
 		},
@@ -22,5 +22,8 @@ func Prefect() *config.Rule {
 	tps := []string{
 		utils.GenerateSampleSecret("api-token", "pnu_"+secrets.NewSecret(utils.AlphaNumeric("36"))),
 	}
-	return utils.Validate(r, tps, nil)
+	fps := []string{
+		`PREFECT_API_KEY = "pnu_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"`,
+	}
+	return utils.Validate(r, tps, fps)
 }

+ 6 - 3
cmd/generate/config/rules/pulumi.go

@@ -11,8 +11,8 @@ func PulumiAPIToken() *config.Rule {
 	r := config.Rule{
 		RuleID:      "pulumi-api-token",
 		Description: "Found a Pulumi API token, posing a risk to infrastructure as code services and cloud resource management.",
-		Regex:       utils.GenerateUniqueTokenRegex(`pul-[a-f0-9]{40}`, true),
-
+		Regex:       utils.GenerateUniqueTokenRegex(`pul-[a-f0-9]{40}`, false),
+		Entropy:     2,
 		Keywords: []string{
 			"pul-",
 		},
@@ -22,5 +22,8 @@ func PulumiAPIToken() *config.Rule {
 	tps := []string{
 		utils.GenerateSampleSecret("pulumi-api-token", "pul-"+secrets.NewSecret(utils.Hex("40"))),
 	}
-	return utils.Validate(r, tps, nil)
+	fps := []string{
+		`                        <img src="./assets/vipul-f0eb1acf0da84c06a50c5b2c59932001997786b176dec02bd16128ee9ea83628.png" alt="" class="w-16 h-16 rounded-full">`,
+	}
+	return utils.Validate(r, tps, fps)
 }

+ 2 - 2
cmd/generate/config/rules/pypi.go

@@ -13,8 +13,8 @@ func PyPiUploadToken() *config.Rule {
 	r := config.Rule{
 		Description: "Discovered a PyPI upload token, potentially compromising Python package distribution and repository integrity.",
 		RuleID:      "pypi-upload-token",
-		Regex: regexp.MustCompile(
-			`pypi-AgEIcHlwaS5vcmc[A-Za-z0-9\-_]{50,1000}`),
+		Regex:       regexp.MustCompile(`pypi-AgEIcHlwaS5vcmc[\w-]{50,1000}`),
+		Entropy:     3,
 		Keywords: []string{
 			"pypi-AgEIcHlwaS5vcmc",
 		},

+ 6 - 3
cmd/generate/config/rules/readme.go

@@ -11,8 +11,8 @@ func ReadMe() *config.Rule {
 	r := config.Rule{
 		RuleID:      "readme-api-token",
 		Description: "Detected a Readme API token, risking unauthorized documentation management and content exposure.",
-		Regex:       utils.GenerateUniqueTokenRegex(`rdme_[a-z0-9]{70}`, true),
-
+		Regex:       utils.GenerateUniqueTokenRegex(`rdme_[a-z0-9]{70}`, false),
+		Entropy:     2,
 		Keywords: []string{
 			"rdme_",
 		},
@@ -22,5 +22,8 @@ func ReadMe() *config.Rule {
 	tps := []string{
 		utils.GenerateSampleSecret("api-token", "rdme_"+secrets.NewSecret(utils.AlphaNumeric("70"))),
 	}
-	return utils.Validate(r, tps, nil)
+	fps := []string{
+		`const API_KEY = 'rdme_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';`,
+	}
+	return utils.Validate(r, tps, fps)
 }

+ 2 - 2
cmd/generate/config/rules/rubygems.go

@@ -11,8 +11,8 @@ func RubyGemsAPIToken() *config.Rule {
 	r := config.Rule{
 		RuleID:      "rubygems-api-token",
 		Description: "Identified a Rubygem API token, potentially compromising Ruby library distribution and package management.",
-		Regex:       utils.GenerateUniqueTokenRegex(`rubygems_[a-f0-9]{48}`, true),
-
+		Regex:       utils.GenerateUniqueTokenRegex(`rubygems_[a-f0-9]{48}`, false),
+		Entropy:     2,
 		Keywords: []string{
 			"rubygems_",
 		},

+ 2 - 1
cmd/generate/config/rules/scalingo.go

@@ -11,7 +11,8 @@ func ScalingoAPIToken() *config.Rule {
 	r := config.Rule{
 		Description: "Found a Scalingo API token, posing a risk to cloud platform services and application deployment security.",
 		RuleID:      "scalingo-api-token",
-		Regex:       utils.GenerateUniqueTokenRegex(`tk-us-[a-zA-Z0-9-_]{48}`, false),
+		Regex:       utils.GenerateUniqueTokenRegex(`tk-us-[\w-]{48}`, false),
+		Entropy:     2,
 		Keywords:    []string{"tk-us-"},
 	}
 

+ 2 - 2
cmd/generate/config/rules/sendgrid.go

@@ -11,8 +11,8 @@ func SendGridAPIToken() *config.Rule {
 	r := config.Rule{
 		RuleID:      "sendgrid-api-token",
 		Description: "Detected a SendGrid API token, posing a risk of unauthorized email service operations and data exposure.",
-		Regex:       utils.GenerateUniqueTokenRegex(`SG\.(?i)[a-z0-9=_\-\.]{66}`, true),
-
+		Regex:       utils.GenerateUniqueTokenRegex(`SG\.(?i)[a-z0-9=_\-\.]{66}`, false),
+		Entropy:     2,
 		Keywords: []string{
 			"SG.",
 		},

+ 2 - 2
cmd/generate/config/rules/sendinblue.go

@@ -11,8 +11,8 @@ func SendInBlueAPIToken() *config.Rule {
 	r := config.Rule{
 		RuleID:      "sendinblue-api-token",
 		Description: "Identified a Sendinblue API token, which may compromise email marketing services and subscriber data privacy.",
-		Regex:       utils.GenerateUniqueTokenRegex(`xkeysib-[a-f0-9]{64}\-(?i)[a-z0-9]{16}`, true),
-
+		Regex:       utils.GenerateUniqueTokenRegex(`xkeysib-[a-f0-9]{64}\-(?i)[a-z0-9]{16}`, false),
+		Entropy:     2,
 		Keywords: []string{
 			"xkeysib-",
 		},

+ 2 - 2
cmd/generate/config/rules/shippo.go

@@ -11,8 +11,8 @@ func ShippoAPIToken() *config.Rule {
 	r := config.Rule{
 		RuleID:      "shippo-api-token",
 		Description: "Discovered a Shippo API token, potentially compromising shipping services and customer order data.",
-		Regex:       utils.GenerateUniqueTokenRegex(`shippo_(live|test)_[a-f0-9]{40}`, true),
-
+		Regex:       utils.GenerateUniqueTokenRegex(`shippo_(?:live|test)_[a-fA-F0-9]{40}`, false),
+		Entropy:     2,
 		Keywords: []string{
 			"shippo_",
 		},

+ 8 - 4
cmd/generate/config/rules/shopify.go

@@ -11,9 +11,10 @@ import (
 func ShopifySharedSecret() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Found a Shopify shared secret, posing a risk to application authentication and e-commerce platform security.",
 		RuleID:      "shopify-shared-secret",
+		Description: "Found a Shopify shared secret, posing a risk to application authentication and e-commerce platform security.",
 		Regex:       regexp.MustCompile(`shpss_[a-fA-F0-9]{32}`),
+		Entropy:     2,
 		Keywords:    []string{"shpss_"},
 	}
 
@@ -25,9 +26,10 @@ func ShopifySharedSecret() *config.Rule {
 func ShopifyAccessToken() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Uncovered a Shopify access token, which could lead to unauthorized e-commerce platform access and data breaches.",
 		RuleID:      "shopify-access-token",
+		Description: "Uncovered a Shopify access token, which could lead to unauthorized e-commerce platform access and data breaches.",
 		Regex:       regexp.MustCompile(`shpat_[a-fA-F0-9]{32}`),
+		Entropy:     2,
 		Keywords:    []string{"shpat_"},
 	}
 
@@ -39,9 +41,10 @@ func ShopifyAccessToken() *config.Rule {
 func ShopifyCustomAccessToken() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Detected a Shopify custom access token, potentially compromising custom app integrations and e-commerce data security.",
 		RuleID:      "shopify-custom-access-token",
+		Description: "Detected a Shopify custom access token, potentially compromising custom app integrations and e-commerce data security.",
 		Regex:       regexp.MustCompile(`shpca_[a-fA-F0-9]{32}`),
+		Entropy:     2,
 		Keywords:    []string{"shpca_"},
 	}
 
@@ -53,9 +56,10 @@ func ShopifyCustomAccessToken() *config.Rule {
 func ShopifyPrivateAppAccessToken() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Identified a Shopify private app access token, risking unauthorized access to private app data and store operations.",
 		RuleID:      "shopify-private-app-access-token",
+		Description: "Identified a Shopify private app access token, risking unauthorized access to private app data and store operations.",
 		Regex:       regexp.MustCompile(`shppa_[a-fA-F0-9]{32}`),
+		Entropy:     2,
 		Keywords:    []string{"shppa_"},
 	}
 

+ 21 - 16
cmd/generate/config/rules/slack.go

@@ -13,10 +13,10 @@ import (
 func SlackBotToken() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Identified a Slack Bot token, which may compromise bot integrations and communication channel security.",
 		RuleID:      "slack-bot-token",
-		Regex: regexp.MustCompile(
-			`(xoxb-[0-9]{10,13}\-[0-9]{10,13}[a-zA-Z0-9-]*)`),
+		Description: "Identified a Slack Bot token, which may compromise bot integrations and communication channel security.",
+		Regex:       regexp.MustCompile(`xoxb-[0-9]{10,13}-[0-9]{10,13}[a-zA-Z0-9-]*`),
+		Entropy:     3,
 		Keywords: []string{
 			"xoxb",
 		},
@@ -44,10 +44,11 @@ func SlackBotToken() *config.Rule {
 func SlackUserToken() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Found a Slack User token, posing a risk of unauthorized user impersonation and data access within Slack workspaces.",
 		RuleID:      "slack-user-token",
+		Description: "Found a Slack User token, posing a risk of unauthorized user impersonation and data access within Slack workspaces.",
 		// The last segment seems to be consistently 32 characters. I've made it 28-34 just in case.
 		Regex:    regexp.MustCompile(`xox[pe](?:-[0-9]{10,13}){3}-[a-zA-Z0-9-]{28,34}`),
+		Entropy:  2,
 		Keywords: []string{"xoxp-", "xoxe-"},
 	}
 
@@ -82,10 +83,11 @@ func SlackUserToken() *config.Rule {
 func SlackAppLevelToken() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Detected a Slack App-level token, risking unauthorized access to Slack applications and workspace data.",
 		RuleID:      "slack-app-token",
+		Description: "Detected a Slack App-level token, risking unauthorized access to Slack applications and workspace data.",
 		// This regex is based on a limited number of examples and may not be 100% accurate.
 		Regex:    regexp.MustCompile(`(?i)xapp-\d-[A-Z0-9]+-\d+-[a-z0-9]+`),
+		Entropy:  2,
 		Keywords: []string{"xapp"},
 	}
 
@@ -103,9 +105,10 @@ func SlackAppLevelToken() *config.Rule {
 func SlackConfigurationToken() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Found a Slack Configuration access token, posing a risk to workspace configuration and sensitive data access.",
 		RuleID:      "slack-config-access-token",
+		Description: "Found a Slack Configuration access token, posing a risk to workspace configuration and sensitive data access.",
 		Regex:       regexp.MustCompile(`(?i)xoxe.xox[bp]-\d-[A-Z0-9]{163,166}`),
+		Entropy:     2,
 		Keywords:    []string{"xoxe.xoxb-", "xoxe.xoxp-"},
 	}
 
@@ -128,9 +131,10 @@ func SlackConfigurationToken() *config.Rule {
 func SlackConfigurationRefreshToken() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Discovered a Slack Configuration refresh token, potentially allowing prolonged unauthorized access to configuration settings.",
 		RuleID:      "slack-config-refresh-token",
+		Description: "Discovered a Slack Configuration refresh token, potentially allowing prolonged unauthorized access to configuration settings.",
 		Regex:       regexp.MustCompile(`(?i)xoxe-\d-[A-Z0-9]{146}`),
+		Entropy:     2,
 		Keywords:    []string{"xoxe-"},
 	}
 
@@ -146,11 +150,11 @@ func SlackConfigurationRefreshToken() *config.Rule {
 // Reference: https://api.slack.com/authentication/token-types#legacy_bot
 func SlackLegacyBotToken() *config.Rule {
 	r := config.Rule{
-		Description: "Uncovered a Slack Legacy bot token, which could lead to compromised legacy bot operations and data exposure.",
 		RuleID:      "slack-legacy-bot-token",
+		Description: "Uncovered a Slack Legacy bot token, which could lead to compromised legacy bot operations and data exposure.",
 		// This rule is based off the limited information I could find and may not be 100% accurate.
-		Regex: regexp.MustCompile(
-			`(xoxb-[0-9]{8,14}\-[a-zA-Z0-9]{18,26})`),
+		Regex:   regexp.MustCompile(`xoxb-[0-9]{8,14}-[a-zA-Z0-9]{18,26}`),
+		Entropy: 2,
 		Keywords: []string{
 			"xoxb",
 		},
@@ -189,11 +193,11 @@ func SlackLegacyBotToken() *config.Rule {
 // Reference: https://api.slack.com/authentication/token-types#workspace
 func SlackLegacyWorkspaceToken() *config.Rule {
 	r := config.Rule{
-		Description: "Identified a Slack Legacy Workspace token, potentially compromising access to workspace data and legacy features.",
 		RuleID:      "slack-legacy-workspace-token",
+		Description: "Identified a Slack Legacy Workspace token, potentially compromising access to workspace data and legacy features.",
 		// This is by far the least confident pattern.
-		Regex: regexp.MustCompile(
-			`(xox[ar]-(?:\d-)?[0-9a-zA-Z]{8,48})`),
+		Regex:   regexp.MustCompile(`xox[ar]-(?:\d-)?[0-9a-zA-Z]{8,48}`),
+		Entropy: 2,
 		Keywords: []string{
 			"xoxa",
 			"xoxr",
@@ -224,9 +228,10 @@ func SlackLegacyWorkspaceToken() *config.Rule {
 func SlackLegacyToken() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Detected a Slack Legacy token, risking unauthorized access to older Slack integrations and user data.",
 		RuleID:      "slack-legacy-token",
+		Description: "Detected a Slack Legacy token, risking unauthorized access to older Slack integrations and user data.",
 		Regex:       regexp.MustCompile(`xox[os]-\d+-\d+-\d+-[a-fA-F\d]+`),
+		Entropy:     2,
 		Keywords:    []string{"xoxo", "xoxs"},
 	}
 
@@ -255,11 +260,11 @@ func SlackLegacyToken() *config.Rule {
 func SlackWebHookUrl() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Discovered a Slack Webhook, which could lead to unauthorized message posting and data leakage in Slack channels.",
 		RuleID:      "slack-webhook-url",
+		Description: "Discovered a Slack Webhook, which could lead to unauthorized message posting and data leakage in Slack channels.",
 		// If this generates too many false-positives we should define an allowlist (e.g., "xxxx", "00000").
 		Regex: regexp.MustCompile(
-			`(https?:\/\/)?hooks.slack.com\/(services|workflows)\/[A-Za-z0-9+\/]{43,46}`),
+			`(?:https?://)?hooks.slack.com/(?:services|workflows)/[A-Za-z0-9+/]{43,46}`),
 		Keywords: []string{
 			"hooks.slack.com",
 		},

+ 2 - 0
cmd/generate/config/rules/square.go

@@ -12,6 +12,7 @@ func SquareAccessToken() *config.Rule {
 		RuleID:      "square-access-token",
 		Description: "Detected a Square Access Token, risking unauthorized payment processing and financial transaction exposure.",
 		Regex:       utils.GenerateUniqueTokenRegex(`(?:EAAA|sq0atp-)[\w-]{22,60}`, false),
+		Entropy:     2,
 		Keywords:    []string{"sq0atp-", "EAAA"},
 	}
 
@@ -33,6 +34,7 @@ func SquareSecret() *config.Rule {
 		RuleID:      "square-secret",
 		Description: "Square Secret",
 		Regex:       utils.GenerateUniqueTokenRegex(`sq0csp-[\w-]{43}`, false),
+		Entropy:     2,
 		Keywords:    []string{"sq0csp-"},
 	}
 

+ 3 - 2
cmd/generate/config/rules/stripe.go

@@ -9,9 +9,10 @@ import (
 func StripeAccessToken() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Found a Stripe Access Token, posing a risk to payment processing services and sensitive financial data.",
 		RuleID:      "stripe-access-token",
-		Regex:       utils.GenerateUniqueTokenRegex(`(sk|rk)_(test|live|prod)_[0-9a-z]{10,99}`, true),
+		Description: "Found a Stripe Access Token, posing a risk to payment processing services and sensitive financial data.",
+		Regex:       utils.GenerateUniqueTokenRegex(`(?:sk|rk)_(?:test|live|prod)_[a-zA-Z0-9]{10,99}`, false),
+		Entropy:     2,
 		Keywords: []string{
 			"sk_test",
 			"sk_live",

+ 5 - 15
cmd/generate/config/rules/sumologic.go

@@ -2,8 +2,6 @@ package rules
 
 import (
 	"github.com/zricethezav/gitleaks/v8/cmd/generate/config/utils"
-	"regexp"
-
 	"github.com/zricethezav/gitleaks/v8/cmd/generate/secrets"
 	"github.com/zricethezav/gitleaks/v8/config"
 )
@@ -14,19 +12,11 @@ func SumoLogicAccessID() *config.Rule {
 		RuleID:      "sumologic-access-id",
 		Description: "Discovered a SumoLogic Access ID, potentially compromising log management services and data analytics integrity.",
 		// TODO: Make 'su' case-sensitive.
-		Regex: utils.GenerateSemiGenericRegex([]string{"sumo"},
-			"su[a-zA-Z0-9]{12}", false),
-
+		Regex:   utils.GenerateSemiGenericRegex([]string{"(?-i:[Ss]umo|SUMO)"}, "su[a-zA-Z0-9]{12}", false),
 		Entropy: 3,
 		Keywords: []string{
 			"sumo",
 		},
-		Allowlists: []config.Allowlist{
-			{
-				RegexTarget: "line",
-				Regexes:     []*regexp.Regexp{regexp.MustCompile(`sumOf`)},
-			},
-		},
 	}
 
 	// validate
@@ -47,6 +37,7 @@ func SumoLogicAccessID() *config.Rule {
 		`sumologic_access_id         = ""`,
 		`SUMOLOGIC_ACCESSID: ${SUMOLOGIC_ACCESSID}`,
 		`export SUMOLOGIC_ACCESSID=XXXXXXXXXXXXXX`, // gitleaks:allow
+		`sumObj = suGyI5imvADdvU`,
 	}
 	return utils.Validate(r, tps, fps)
 }
@@ -56,10 +47,8 @@ func SumoLogicAccessToken() *config.Rule {
 	r := config.Rule{
 		RuleID:      "sumologic-access-token",
 		Description: "Uncovered a SumoLogic Access Token, which could lead to unauthorized access to log data and analytics insights.",
-		Regex: utils.GenerateSemiGenericRegex([]string{"sumo"},
-			utils.AlphaNumeric("64"), true),
-
-		Entropy: 3,
+		Regex:       utils.GenerateSemiGenericRegex([]string{"(?-i:[Ss]umo|SUMO)"}, utils.AlphaNumeric("64"), true),
+		Entropy:     3,
 		Keywords: []string{
 			"sumo",
 		},
@@ -80,6 +69,7 @@ func SumoLogicAccessToken() *config.Rule {
 		`SUMO_ACCESS_KEY=${SUMO_ACCESS_KEY:=$2}`,
 		`sumo_access_key   = "<SUMOLOGIC ACCESS KEY>"`,
 		`SUMO_ACCESS_KEY: AbCeFG123`,
+		`sumOfExposures = 3Kof2VffNQ0QgYIhXUPJosVlCaQKm2hfpWE6F1fT9YGY74blQBIPsrkCcf1TwKE5;`,
 	}
 	return utils.Validate(r, tps, fps)
 }

+ 2 - 2
cmd/generate/config/rules/teams.go

@@ -11,10 +11,10 @@ import (
 func TeamsWebhook() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Uncovered a Microsoft Teams Webhook, which could lead to unauthorized access to team collaboration tools and data leaks.",
 		RuleID:      "microsoft-teams-webhook",
+		Description: "Uncovered a Microsoft Teams Webhook, which could lead to unauthorized access to team collaboration tools and data leaks.",
 		Regex: regexp.MustCompile(
-			`https:\/\/[a-z0-9]+\.webhook\.office\.com\/webhookb2\/[a-z0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}@[a-z0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}\/IncomingWebhook\/[a-z0-9]{32}\/[a-z0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}`),
+			`https://[a-z0-9]+\.webhook\.office\.com/webhookb2/[a-z0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}@[a-z0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}/IncomingWebhook/[a-z0-9]{32}/[a-z0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}`),
 		Keywords: []string{
 			"webhook.office.com",
 			"webhookb2",

+ 3 - 2
cmd/generate/config/rules/twilio.go

@@ -11,10 +11,11 @@ import (
 func Twilio() *config.Rule {
 	// define rule
 	r := config.Rule{
-		Description: "Found a Twilio API Key, posing a risk to communication services and sensitive customer interaction data.",
 		RuleID:      "twilio-api-key",
+		Description: "Found a Twilio API Key, posing a risk to communication services and sensitive customer interaction data.",
 		Regex:       regexp.MustCompile(`SK[0-9a-fA-F]{32}`),
-		Keywords:    []string{"twilio"},
+		Entropy:     3,
+		Keywords:    []string{"SK"},
 	}
 
 	// validate

+ 119 - 50
config/gitleaks.toml

@@ -72,12 +72,14 @@ keywords = ["adafruit"]
 id = "adobe-client-id"
 description = "Detected a pattern that resembles an Adobe OAuth Web Client ID, posing a risk of compromised Adobe integrations and data breaches."
 regex = '''(?i)[\w.-]{0,10}?(?:adobe)(?:[ \t\w.-]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:{1,3}=|\|\|:|<=|=>|:|\?=)(?:'|\"|\s|=|\x60){0,5}([a-f0-9]{32})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+entropy = 2
 keywords = ["adobe"]
 
 [[rules]]
 id = "adobe-client-secret"
 description = "Discovered a potential Adobe Client Secret, which, if exposed, could allow unauthorized Adobe service access and data manipulation."
-regex = '''(?i)\b((p8e-)(?i)[a-z0-9]{32})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+regex = '''\b(p8e-(?i)[a-z0-9]{32})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+entropy = 2
 keywords = ["p8e-"]
 
 [[rules]]
@@ -101,13 +103,15 @@ keywords = ["algolia"]
 [[rules]]
 id = "alibaba-access-key-id"
 description = "Detected an Alibaba Cloud AccessKey ID, posing a risk of unauthorized cloud resource access and potential data compromise."
-regex = '''(?i)\b((LTAI)(?i)[a-z0-9]{20})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+regex = '''\b(LTAI(?i)[a-z0-9]{20})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+entropy = 2
 keywords = ["ltai"]
 
 [[rules]]
 id = "alibaba-secret-key"
 description = "Discovered a potential Alibaba Cloud Secret Key, potentially allowing unauthorized operations and data access within Alibaba Cloud."
 regex = '''(?i)[\w.-]{0,10}?(?:alibaba)(?:[ \t\w.-]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:{1,3}=|\|\|:|<=|=>|:|\?=)(?:'|\"|\s|=|\x60){0,5}([a-z0-9]{30})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+entropy = 2
 keywords = ["alibaba"]
 
 [[rules]]
@@ -135,7 +139,8 @@ keywords = [
 [[rules]]
 id = "authress-service-client-access-key"
 description = "Uncovered a possible Authress Service Client Access Key, which may compromise access control services and sensitive data."
-regex = '''(?i)\b((?:sc|ext|scauth|authress)_[a-z0-9]{5,30}\.[a-z0-9]{4,6}\.acc[_-][a-z0-9-]{10,32}\.[a-z0-9+/_=-]{30,120})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+regex = '''\b((?:sc|ext|scauth|authress)_(?i)[a-z0-9]{5,30}\.[a-z0-9]{4,6}\.(?-i:acc)[_-][a-z0-9-]{10,32}\.[a-z0-9+/_=-]{30,120})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+entropy = 2
 keywords = [
     "sc_",
     "ext_",
@@ -202,24 +207,28 @@ keywords = ["bittrex"]
 id = "clojars-api-token"
 description = "Uncovered a possible Clojars API token, risking unauthorized access to Clojure libraries and potential code manipulation."
 regex = '''(?i)CLOJARS_[a-z0-9]{60}'''
-keywords = ["clojars"]
+entropy = 2
+keywords = ["clojars_"]
 
 [[rules]]
 id = "cloudflare-api-key"
 description = "Detected a Cloudflare API Key, potentially compromising cloud application deployments and operational security."
 regex = '''(?i)[\w.-]{0,10}?(?:cloudflare)(?:[ \t\w.-]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:{1,3}=|\|\|:|<=|=>|:|\?=)(?:'|\"|\s|=|\x60){0,5}([a-z0-9_-]{40})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+entropy = 2
 keywords = ["cloudflare"]
 
 [[rules]]
 id = "cloudflare-global-api-key"
 description = "Detected a Cloudflare Global API Key, potentially compromising cloud application deployments and operational security."
 regex = '''(?i)[\w.-]{0,10}?(?:cloudflare)(?:[ \t\w.-]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:{1,3}=|\|\|:|<=|=>|:|\?=)(?:'|\"|\s|=|\x60){0,5}([a-f0-9]{37})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+entropy = 2
 keywords = ["cloudflare"]
 
 [[rules]]
 id = "cloudflare-origin-ca-key"
 description = "Detected a Cloudflare Origin CA Key, potentially compromising cloud application deployments and operational security."
 regex = '''\b(v1\.0-[a-f0-9]{24}-[a-f0-9]{146})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+entropy = 2
 keywords = [
     "cloudflare",
     "v1.0-",
@@ -268,28 +277,32 @@ keywords = ["contentful"]
 [[rules]]
 id = "curl-auth-header"
 description = ""
-regex = '''\bcurl\b(?:.*?|.*?(?:[\r\n]{1,2}.*?){1,5})[ \t\n\r](?:-H|--header)[ =](?:"(?i)(?:Authorization:[ \t]?(?:Basic[ \t]([a-z0-9+/]{8,}={0,3})|(?:Bearer|Token)[ \t]([\w=@.+/-]{8,})|([\w=.+/-]{8,}))|(?:ApiKey|Token|X-API-KEY):[ \t]?([\w=@.+/-]{8,}))"|'(?i)(?:Authorization:[ \t]?(?:Basic[ \t]([a-z0-9+/]{8,}={0,3})|(?:Bearer|Token)[ \t]([\w=@.+/-]{8,})|([\w=.+/-]{8,}))|(?:ApiKey|Token|X-API-KEY):[ \t]?([\w=@.+/-]{8,}))')(?:\B|\s|\z)'''
+regex = '''\bcurl\b(?:.*?|.*?(?:[\r\n]{1,2}.*?){1,5})[ \t\n\r](?:-H|--header)(?:=|[ \t]{0,5})(?:"(?i)(?:Authorization:[ \t]{0,5}(?:Basic[ \t]([a-z0-9+/]{8,}={0,3})|(?:Bearer|(?:Api-)?Token)[ \t]([\w=~@.+/-]{8,})|([\w=~@.+/-]{8,}))|(?:(?:X-)?Api-?(?:Key|Token)|Token):[ \t]{0,5}([\w=~@.+/-]{8,}))"|'(?i)(?:Authorization:[ \t]{0,5}(?:Basic[ \t]([a-z0-9+/]{8,}={0,3})|(?:Bearer|(?:Api-)?Token)[ \t]([\w=~@.+/-]{8,})|([\w=~@.+/-]{8,}))|(?:(?:X-)?Api-?(?:Key|Token)|Token):[ \t]{0,5}([\w=~@.+/-]{8,}))')(?:\B|\s|\z)'''
 entropy = 2.75
 keywords = ["curl"]
 
 [[rules]]
 id = "curl-auth-user"
 description = ""
-regex = '''\bcurl\b(?:.*|.*(?:[\r\n]{1,2}.*){1,5})[ \t\n\r](?:-u|--user)[ =](?:("[^:"]{3,}:[^"]{3,}")|('[^:']{3,}:[^']{3,}')|((?:"[^"]{3,}"|'[^']{3,}'|[\w$@.-]+):(?:"[^"]{3,}"|'[^']{3,}'|[\w$@.-]+))|)(?:\s|\z)'''
+regex = '''\bcurl\b(?:.*|.*(?:[\r\n]{1,2}.*){1,5})[ \t\n\r](?:-u|--user)(?:=|[ \t]{0,5})(?:"([^:"]{3,}:[^"]{3,})"|'([^:']{3,}:[^']{3,})'|((?:"[^"]{3,}"|'[^']{3,}'|[\w$@.-]+):(?:"[^"]{3,}"|'[^']{3,}'|[\w${}@.-]+)))(?:\s|\z)'''
+entropy = 2
 keywords = ["curl"]
 # NOTE: Gitleaks >= v8.21.0 should use [[rules.allowlists] instead.
 [rules.allowlist]
 regexes = [
-    '''[^:]+:(changeme|pass(word)?|pwd|\*+|x+)''',
+    '''[^:]+:(change(it|me)|pass(word)?|pwd|test|token|\*+|x+)''',
     '''<[^>]+>:<[^>]+>|<[^:]+:[^>]+>''',
     '''[^:]+:\[[^]]+]''',
-    '''(?i)[^:]+:\$(\d|[a-z]\w+|(\{\d|[a-z]\w+}))''',
+    '''[^:]+:\$(\d|\w+|\{(\d|\w+)})''',
+    '''\$\([^)]+\):\$\([^)]+\)''',
+    '''\$?{{[^}]+}}:\$?{{[^}]+}}''',
 ]
 
 [[rules]]
 id = "databricks-api-token"
 description = "Uncovered a Databricks API token, which may compromise big data analytics platforms and sensitive data processing."
-regex = '''(?i)\b(dapi[a-h0-9]{32})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+regex = '''\b(dapi[a-f0-9]{32}(?:-\d)?)(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+entropy = 3
 keywords = ["dapi"]
 
 [[rules]]
@@ -307,13 +320,15 @@ keywords = ["dnkey"]
 [[rules]]
 id = "digitalocean-access-token"
 description = "Found a DigitalOcean OAuth Access Token, risking unauthorized cloud resource access and data compromise."
-regex = '''(?i)\b(doo_v1_[a-f0-9]{64})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+regex = '''\b(doo_v1_[a-f0-9]{64})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+entropy = 3
 keywords = ["doo_v1_"]
 
 [[rules]]
 id = "digitalocean-pat"
 description = "Discovered a DigitalOcean Personal Access Token, posing a threat to cloud infrastructure security and data privacy."
-regex = '''(?i)\b(dop_v1_[a-f0-9]{64})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+regex = '''\b(dop_v1_[a-f0-9]{64})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+entropy = 3
 keywords = ["dop_v1_"]
 
 [[rules]]
@@ -346,7 +361,8 @@ keywords = ["discord"]
 id = "doppler-api-token"
 description = "Discovered a Doppler API token, posing a risk to environment and secrets management security."
 regex = '''dp\.pt\.(?i)[a-z0-9]{43}'''
-keywords = ["doppler"]
+entropy = 2
+keywords = ["dp.pt."]
 
 [[rules]]
 id = "droneci-access-token"
@@ -376,24 +392,28 @@ keywords = ["dropbox"]
 id = "duffel-api-token"
 description = "Uncovered a Duffel API token, which may compromise travel platform integrations and sensitive customer data."
 regex = '''duffel_(?:test|live)_(?i)[a-z0-9_\-=]{43}'''
-keywords = ["duffel"]
+entropy = 2
+keywords = ["duffel_"]
 
 [[rules]]
 id = "dynatrace-api-token"
 description = "Detected a Dynatrace API token, potentially risking application performance monitoring and data exposure."
 regex = '''dt0c01\.(?i)[a-z0-9]{24}\.[a-z0-9]{64}'''
-keywords = ["dynatrace"]
+entropy = 4
+keywords = ["dt0c01"]
 
 [[rules]]
 id = "easypost-api-token"
 description = "Identified an EasyPost API token, which could lead to unauthorized postal and shipment service access and data exposure."
 regex = '''\bEZAK(?i)[a-z0-9]{54}'''
+entropy = 2
 keywords = ["ezak"]
 
 [[rules]]
 id = "easypost-test-api-token"
 description = "Detected an EasyPost test API token, risking exposure of test environments and potentially sensitive shipment data."
 regex = '''\bEZTK(?i)[a-z0-9]{54}'''
+entropy = 2
 keywords = ["eztk"]
 
 [[rules]]
@@ -407,11 +427,13 @@ keywords = ["etsy"]
 id = "facebook-access-token"
 description = "Discovered a Facebook Access Token, posing a risk of unauthorized access to Facebook accounts and personal data exposure."
 regex = '''(?i)\b(\d{15,16}(\||%)[0-9a-z\-_]{27,40})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+entropy = 3
 
 [[rules]]
 id = "facebook-page-access-token"
 description = "Discovered a Facebook Page Access Token, posing a risk of unauthorized access to Facebook accounts and personal data exposure."
-regex = '''(?i)\b(EAA[MC][a-z0-9]{20,})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+regex = '''\b(EAA[MC](?i)[a-z0-9]{20,})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+entropy = 3
 keywords = [
     "eaam",
     "eaac",
@@ -421,6 +443,7 @@ keywords = [
 id = "facebook-secret"
 description = "Discovered a Facebook Application secret, posing a risk of unauthorized access to Facebook accounts and personal data exposure."
 regex = '''(?i)[\w.-]{0,10}?(?:facebook)(?:[ \t\w.-]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:{1,3}=|\|\|:|<=|=>|:|\?=)(?:'|\"|\s|=|\x60){0,5}([a-f0-9]{32})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+entropy = 3
 keywords = ["facebook"]
 
 [[rules]]
@@ -457,18 +480,21 @@ keywords = ["flickr"]
 id = "flutterwave-encryption-key"
 description = "Uncovered a Flutterwave Encryption Key, which may compromise payment processing and sensitive financial information."
 regex = '''FLWSECK_TEST-(?i)[a-h0-9]{12}'''
+entropy = 2
 keywords = ["flwseck_test"]
 
 [[rules]]
 id = "flutterwave-public-key"
 description = "Detected a Finicity Public Key, potentially exposing public cryptographic operations and integrations."
 regex = '''FLWPUBK_TEST-(?i)[a-h0-9]{32}-X'''
+entropy = 2
 keywords = ["flwpubk_test"]
 
 [[rules]]
 id = "flutterwave-secret-key"
 description = "Identified a Flutterwave Secret Key, risking unauthorized financial transactions and data breaches."
 regex = '''FLWSECK_TEST-(?i)[a-h0-9]{32}-X'''
+entropy = 2
 keywords = ["flwseck_test"]
 
 [[rules]]
@@ -2005,6 +2031,11 @@ keywords = [
     "ghu_",
     "ghs_",
 ]
+# NOTE: Gitleaks >= v8.21.0 should use [[rules.allowlists] instead.
+[rules.allowlist]
+paths = [
+    '''(^|/)@octokit/auth-token/README\.md$''',
+]
 
 [[rules]]
 id = "github-fine-grained-pat"
@@ -2026,6 +2057,11 @@ description = "Uncovered a GitHub Personal Access Token, potentially leading to
 regex = '''ghp_[0-9a-zA-Z]{36}'''
 entropy = 3
 keywords = ["ghp_"]
+# NOTE: Gitleaks >= v8.21.0 should use [[rules.allowlists] instead.
+[rules.allowlist]
+paths = [
+    '''(^|/)@octokit/auth-token/README\.md$''',
+]
 
 [[rules]]
 id = "github-refresh-token"
@@ -2074,6 +2110,7 @@ keywords = [
 id = "grafana-api-key"
 description = "Identified a Grafana API key, which could compromise monitoring dashboards and sensitive data analytics."
 regex = '''(?i)\b(eyJrIjoi[A-Za-z0-9]{70,400}={0,3})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+entropy = 3
 keywords = ["eyjrijoi"]
 
 [[rules]]
@@ -2111,6 +2148,7 @@ id = "hashicorp-tf-password"
 description = "Identified a HashiCorp Terraform password field, risking unauthorized infrastructure configuration and security breaches."
 regex = '''(?i)[\w.-]{0,10}?(?:administrator_login_password|password)(?:[ \t\w.-]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:{1,3}=|\|\|:|<=|=>|:|\?=)(?:'|\"|\s|=|\x60){0,5}("[a-z0-9=_\-]{8,20}")(?:['|\"|\n|\r|\s|\x60|;]|$)'''
 path = '''(?i)\.(?:tf|hcl)$'''
+entropy = 2
 keywords = [
     "administrator_login_password",
     "password",
@@ -2132,7 +2170,7 @@ keywords = ["hubspot"]
 id = "huggingface-access-token"
 description = "Discovered a Hugging Face Access token, which could lead to unauthorized access to AI models and sensitive data."
 regex = '''(?:^|[\\'"` >=:])(hf_[a-zA-Z]{34})(?:$|[\\'"` <])'''
-entropy = 1
+entropy = 2
 keywords = ["hf_"]
 
 [[rules]]
@@ -2158,7 +2196,8 @@ keywords = ["intercom"]
 [[rules]]
 id = "intra42-client-secret"
 description = "Found a Intra42 client secret, which could lead to unauthorized access to the 42School API and sensitive data."
-regex = '''(?i)\b(s-s4t2(?:ud|af)-[abcdef0123456789]{64})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+regex = '''\b(s-s4t2(?:ud|af)-(?i)[abcdef0123456789]{64})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+entropy = 3
 keywords = [
     "intra",
     "s-s4t2ud-",
@@ -2191,12 +2230,14 @@ keywords = [
 id = "jwt"
 description = "Uncovered a JSON Web Token, which may lead to unauthorized access to web applications and sensitive user data."
 regex = '''\b(ey[a-zA-Z0-9]{17,}\.ey[a-zA-Z0-9\/\\_-]{17,}\.(?:[a-zA-Z0-9\/\\_-]{10,}={0,2})?)(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+entropy = 3
 keywords = ["ey"]
 
 [[rules]]
 id = "jwt-base64"
 description = "Detected a Base64-encoded JSON Web Token, posing a risk of exposing encoded authentication and data exchange information."
 regex = '''\bZXlK(?:(?P<alg>aGJHY2lPaU)|(?P<apu>aGNIVWlPaU)|(?P<apv>aGNIWWlPaU)|(?P<aud>aGRXUWlPaU)|(?P<b64>aU5qUWlP)|(?P<crit>amNtbDBJanBi)|(?P<cty>amRIa2lPaU)|(?P<epk>bGNHc2lPbn)|(?P<enc>bGJtTWlPaU)|(?P<jku>cWEzVWlPaU)|(?P<jwk>cWQyc2lPb)|(?P<iss>cGMzTWlPaU)|(?P<iv>cGRpSTZJ)|(?P<kid>cmFXUWlP)|(?P<key_ops>clpYbGZiM0J6SWpwY)|(?P<kty>cmRIa2lPaUp)|(?P<nonce>dWIyNWpaU0k2)|(?P<p2c>d01tTWlP)|(?P<p2s>d01uTWlPaU)|(?P<ppt>d2NIUWlPaU)|(?P<sub>emRXSWlPaU)|(?P<svt>emRuUWlP)|(?P<tag>MFlXY2lPaU)|(?P<typ>MGVYQWlPaUp)|(?P<url>MWNtd2l)|(?P<use>MWMyVWlPaUp)|(?P<ver>MlpYSWlPaU)|(?P<version>MlpYSnphVzl1SWpv)|(?P<x>NElqb2)|(?P<x5c>NE5XTWlP)|(?P<x5t>NE5YUWlPaU)|(?P<x5ts256>NE5YUWpVekkxTmlJNkl)|(?P<x5u>NE5YVWlPaU)|(?P<zip>NmFYQWlPaU))[a-zA-Z0-9\/\\_+\-\r\n]{40,}={0,2}'''
+entropy = 2
 keywords = ["zxlk"]
 
 [[rules]]
@@ -2208,7 +2249,7 @@ keywords = ["kraken"]
 [[rules]]
 id = "kubernetes-secret-yaml"
 description = "Possible Kubernetes Secret detected, posing a risk of leaking credentials/tokens from your deployments"
-regex = '''(?i)(?:\bkind:[ \t]*["']?secret["']?(?:.|\s){0,200}?\bdata:(?:.|\s){0,100}?\s+([\w.-]+:(?:[ \t]*(?:\||>[-+]?)\s+)?[ \t]*(?:["']?[a-z0-9]{10,}={0,3}["']?|\{\{[ \t\w"|$:=,.-]+}}|""|''))|\bdata:(?:.|\s){0,100}?\s+([\w.-]+:(?:[ \t]*(?:\||>[-+]?)\s+)?[ \t]*(?:["']?[a-z0-9]{10,}={0,3}["']?|\{\{[ \t\w"|$:=,.-]+}}|""|''))(?:.|\s){0,200}?\bkind:[ \t]*["']?secret["']?)'''
+regex = '''(?i)(?:\bkind:[ \t]*["']?secret["']?(?:.|\s){0,200}?\bdata:(?:.|\s){0,100}?\s+([\w.-]+:(?:[ \t]*(?:\||>[-+]?)\s+)?[ \t]*(?:["']?[a-z0-9+/]{10,}={0,3}["']?|\{\{[ \t\w"|$:=,.-]+}}|""|''))|\bdata:(?:.|\s){0,100}?\s+([\w.-]+:(?:[ \t]*(?:\||>[-+]?)\s+)?[ \t]*(?:["']?[a-z0-9+/]{10,}={0,3}["']?|\{\{[ \t\w"|$:=,.-]+}}|""|''))(?:.|\s){0,200}?\bkind:[ \t]*["']?secret["']?)'''
 path = '''(?i)\.ya?ml$'''
 keywords = ["secret"]
 # NOTE: Gitleaks >= v8.21.0 should use [[rules.allowlists] instead.
@@ -2239,12 +2280,14 @@ keywords = ["launchdarkly"]
 id = "linear-api-key"
 description = "Detected a Linear API Token, posing a risk to project management tools and sensitive task data."
 regex = '''lin_api_(?i)[a-z0-9]{40}'''
+entropy = 2
 keywords = ["lin_api_"]
 
 [[rules]]
 id = "linear-client-secret"
 description = "Identified a Linear Client Secret, which may compromise secure integrations and sensitive project management data."
 regex = '''(?i)[\w.-]{0,10}?(?:linear)(?:[ \t\w.-]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:{1,3}=|\|\|:|<=|=>|:|\?=)(?:'|\"|\s|=|\x60){0,5}([a-f0-9]{32})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+entropy = 2
 keywords = ["linear"]
 
 [[rules]]
@@ -2343,7 +2386,7 @@ keywords = [
 [[rules]]
 id = "microsoft-teams-webhook"
 description = "Uncovered a Microsoft Teams Webhook, which could lead to unauthorized access to team collaboration tools and data leaks."
-regex = '''https:\/\/[a-z0-9]+\.webhook\.office\.com\/webhookb2\/[a-z0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}@[a-z0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}\/IncomingWebhook\/[a-z0-9]{32}\/[a-z0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}'''
+regex = '''https://[a-z0-9]+\.webhook\.office\.com/webhookb2/[a-z0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}@[a-z0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}/IncomingWebhook/[a-z0-9]{32}/[a-z0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}'''
 keywords = [
     "webhook.office.com",
     "webhookb2",
@@ -2388,6 +2431,7 @@ keywords = ["nrak"]
 id = "npm-access-token"
 description = "Uncovered an npm access token, potentially compromising package management and code repository access."
 regex = '''(?i)\b(npm_[a-z0-9]{36})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+entropy = 2
 keywords = ["npm_"]
 
 [[rules]]
@@ -2419,12 +2463,14 @@ keywords = [
 id = "okta-access-token"
 description = "Identified an Okta Access Token, which may compromise identity management services and user authentication data."
 regex = '''(?i)[\w.-]{0,10}?(?:okta)(?:[ \t\w.-]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:{1,3}=|\|\|:|<=|=>|:|\?=)(?:'|\"|\s|=|\x60){0,5}([a-z0-9=_\-]{42})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+entropy = 3
 keywords = ["okta"]
 
 [[rules]]
 id = "openai-api-key"
 description = "Found an OpenAI API Key, posing a risk of unauthorized access to AI services and data manipulation."
-regex = '''(?i)\b(sk-[a-zA-Z0-9]{20}T3BlbkFJ[a-zA-Z0-9]{20})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+regex = '''\b(sk-[a-zA-Z0-9]{20}T3BlbkFJ[a-zA-Z0-9]{20})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+entropy = 3
 keywords = ["t3blbkfj"]
 
 [[rules]]
@@ -2457,31 +2503,36 @@ keywords = ["plaid"]
 [[rules]]
 id = "planetscale-api-token"
 description = "Identified a PlanetScale API token, potentially compromising database management and operations."
-regex = '''(?i)\b(pscale_tkn_(?i)[a-z0-9=\-_\.]{32,64})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+regex = '''\b(pscale_tkn_(?i)[\w=\.-]{32,64})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+entropy = 3
 keywords = ["pscale_tkn_"]
 
 [[rules]]
 id = "planetscale-oauth-token"
 description = "Found a PlanetScale OAuth token, posing a risk to database access control and sensitive data integrity."
-regex = '''(?i)\b(pscale_oauth_(?i)[a-z0-9=\-_\.]{32,64})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+regex = '''\b(pscale_oauth_[\w=\.-]{32,64})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+entropy = 3
 keywords = ["pscale_oauth_"]
 
 [[rules]]
 id = "planetscale-password"
 description = "Discovered a PlanetScale password, which could lead to unauthorized database operations and data breaches."
-regex = '''(?i)\b(pscale_pw_(?i)[a-z0-9=\-_\.]{32,64})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+regex = '''(?i)\b(pscale_pw_(?i)[\w=\.-]{32,64})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+entropy = 3
 keywords = ["pscale_pw_"]
 
 [[rules]]
 id = "postman-api-token"
 description = "Uncovered a Postman API token, potentially compromising API testing and development workflows."
-regex = '''(?i)\b(PMAK-(?i)[a-f0-9]{24}\-[a-f0-9]{34})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+regex = '''\b(PMAK-(?i)[a-f0-9]{24}\-[a-f0-9]{34})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+entropy = 3
 keywords = ["pmak-"]
 
 [[rules]]
 id = "prefect-api-token"
 description = "Detected a Prefect API token, risking unauthorized access to workflow management and automation services."
-regex = '''(?i)\b(pnu_[a-z0-9]{36})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+regex = '''\b(pnu_[a-zA-Z0-9]{36})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+entropy = 2
 keywords = ["pnu_"]
 
 [[rules]]
@@ -2504,13 +2555,15 @@ keywords = [
 [[rules]]
 id = "pulumi-api-token"
 description = "Found a Pulumi API token, posing a risk to infrastructure as code services and cloud resource management."
-regex = '''(?i)\b(pul-[a-f0-9]{40})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+regex = '''\b(pul-[a-f0-9]{40})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+entropy = 2
 keywords = ["pul-"]
 
 [[rules]]
 id = "pypi-upload-token"
 description = "Discovered a PyPI upload token, potentially compromising Python package distribution and repository integrity."
-regex = '''pypi-AgEIcHlwaS5vcmc[A-Za-z0-9\-_]{50,1000}'''
+regex = '''pypi-AgEIcHlwaS5vcmc[\w-]{50,1000}'''
+entropy = 3
 keywords = ["pypi-ageichlwas5vcmc"]
 
 [[rules]]
@@ -2522,19 +2575,22 @@ keywords = ["rapidapi"]
 [[rules]]
 id = "readme-api-token"
 description = "Detected a Readme API token, risking unauthorized documentation management and content exposure."
-regex = '''(?i)\b(rdme_[a-z0-9]{70})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+regex = '''\b(rdme_[a-z0-9]{70})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+entropy = 2
 keywords = ["rdme_"]
 
 [[rules]]
 id = "rubygems-api-token"
 description = "Identified a Rubygem API token, potentially compromising Ruby library distribution and package management."
-regex = '''(?i)\b(rubygems_[a-f0-9]{48})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+regex = '''\b(rubygems_[a-f0-9]{48})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+entropy = 2
 keywords = ["rubygems_"]
 
 [[rules]]
 id = "scalingo-api-token"
 description = "Found a Scalingo API token, posing a risk to cloud platform services and application deployment security."
-regex = '''\b(tk-us-[a-zA-Z0-9-_]{48})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+regex = '''\b(tk-us-[\w-]{48})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+entropy = 2
 keywords = ["tk-us-"]
 
 [[rules]]
@@ -2552,13 +2608,15 @@ keywords = ["sendbird"]
 [[rules]]
 id = "sendgrid-api-token"
 description = "Detected a SendGrid API token, posing a risk of unauthorized email service operations and data exposure."
-regex = '''(?i)\b(SG\.(?i)[a-z0-9=_\-\.]{66})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+regex = '''\b(SG\.(?i)[a-z0-9=_\-\.]{66})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+entropy = 2
 keywords = ["sg."]
 
 [[rules]]
 id = "sendinblue-api-token"
 description = "Identified a Sendinblue API token, which may compromise email marketing services and subscriber data privacy."
-regex = '''(?i)\b(xkeysib-[a-f0-9]{64}\-(?i)[a-z0-9]{16})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+regex = '''\b(xkeysib-[a-f0-9]{64}\-(?i)[a-z0-9]{16})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+entropy = 2
 keywords = ["xkeysib-"]
 
 [[rules]]
@@ -2570,31 +2628,36 @@ keywords = ["sentry"]
 [[rules]]
 id = "shippo-api-token"
 description = "Discovered a Shippo API token, potentially compromising shipping services and customer order data."
-regex = '''(?i)\b(shippo_(live|test)_[a-f0-9]{40})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+regex = '''\b(shippo_(?:live|test)_[a-fA-F0-9]{40})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+entropy = 2
 keywords = ["shippo_"]
 
 [[rules]]
 id = "shopify-access-token"
 description = "Uncovered a Shopify access token, which could lead to unauthorized e-commerce platform access and data breaches."
 regex = '''shpat_[a-fA-F0-9]{32}'''
+entropy = 2
 keywords = ["shpat_"]
 
 [[rules]]
 id = "shopify-custom-access-token"
 description = "Detected a Shopify custom access token, potentially compromising custom app integrations and e-commerce data security."
 regex = '''shpca_[a-fA-F0-9]{32}'''
+entropy = 2
 keywords = ["shpca_"]
 
 [[rules]]
 id = "shopify-private-app-access-token"
 description = "Identified a Shopify private app access token, risking unauthorized access to private app data and store operations."
 regex = '''shppa_[a-fA-F0-9]{32}'''
+entropy = 2
 keywords = ["shppa_"]
 
 [[rules]]
 id = "shopify-shared-secret"
 description = "Found a Shopify shared secret, posing a risk to application authentication and e-commerce platform security."
 regex = '''shpss_[a-fA-F0-9]{32}'''
+entropy = 2
 keywords = ["shpss_"]
 
 [[rules]]
@@ -2619,18 +2682,21 @@ keywords = [
 id = "slack-app-token"
 description = "Detected a Slack App-level token, risking unauthorized access to Slack applications and workspace data."
 regex = '''(?i)xapp-\d-[A-Z0-9]+-\d+-[a-z0-9]+'''
+entropy = 2
 keywords = ["xapp"]
 
 [[rules]]
 id = "slack-bot-token"
 description = "Identified a Slack Bot token, which may compromise bot integrations and communication channel security."
-regex = '''(xoxb-[0-9]{10,13}\-[0-9]{10,13}[a-zA-Z0-9-]*)'''
+regex = '''xoxb-[0-9]{10,13}-[0-9]{10,13}[a-zA-Z0-9-]*'''
+entropy = 3
 keywords = ["xoxb"]
 
 [[rules]]
 id = "slack-config-access-token"
 description = "Found a Slack Configuration access token, posing a risk to workspace configuration and sensitive data access."
 regex = '''(?i)xoxe.xox[bp]-\d-[A-Z0-9]{163,166}'''
+entropy = 2
 keywords = [
     "xoxe.xoxb-",
     "xoxe.xoxp-",
@@ -2640,18 +2706,21 @@ keywords = [
 id = "slack-config-refresh-token"
 description = "Discovered a Slack Configuration refresh token, potentially allowing prolonged unauthorized access to configuration settings."
 regex = '''(?i)xoxe-\d-[A-Z0-9]{146}'''
+entropy = 2
 keywords = ["xoxe-"]
 
 [[rules]]
 id = "slack-legacy-bot-token"
 description = "Uncovered a Slack Legacy bot token, which could lead to compromised legacy bot operations and data exposure."
-regex = '''(xoxb-[0-9]{8,14}\-[a-zA-Z0-9]{18,26})'''
+regex = '''xoxb-[0-9]{8,14}-[a-zA-Z0-9]{18,26}'''
+entropy = 2
 keywords = ["xoxb"]
 
 [[rules]]
 id = "slack-legacy-token"
 description = "Detected a Slack Legacy token, risking unauthorized access to older Slack integrations and user data."
 regex = '''xox[os]-\d+-\d+-\d+-[a-fA-F\d]+'''
+entropy = 2
 keywords = [
     "xoxo",
     "xoxs",
@@ -2660,7 +2729,8 @@ keywords = [
 [[rules]]
 id = "slack-legacy-workspace-token"
 description = "Identified a Slack Legacy Workspace token, potentially compromising access to workspace data and legacy features."
-regex = '''(xox[ar]-(?:\d-)?[0-9a-zA-Z]{8,48})'''
+regex = '''xox[ar]-(?:\d-)?[0-9a-zA-Z]{8,48}'''
+entropy = 2
 keywords = [
     "xoxa",
     "xoxr",
@@ -2670,6 +2740,7 @@ keywords = [
 id = "slack-user-token"
 description = "Found a Slack User token, posing a risk of unauthorized user impersonation and data access within Slack workspaces."
 regex = '''xox[pe](?:-[0-9]{10,13}){3}-[a-zA-Z0-9-]{28,34}'''
+entropy = 2
 keywords = [
     "xoxp-",
     "xoxe-",
@@ -2678,7 +2749,7 @@ keywords = [
 [[rules]]
 id = "slack-webhook-url"
 description = "Discovered a Slack Webhook, which could lead to unauthorized message posting and data leakage in Slack channels."
-regex = '''(https?:\/\/)?hooks.slack.com\/(services|workflows)\/[A-Za-z0-9+\/]{43,46}'''
+regex = '''(?:https?://)?hooks.slack.com/(?:services|workflows)/[A-Za-z0-9+/]{43,46}'''
 keywords = ["hooks.slack.com"]
 
 [[rules]]
@@ -2697,6 +2768,7 @@ keywords = [
 id = "square-access-token"
 description = "Detected a Square Access Token, risking unauthorized payment processing and financial transaction exposure."
 regex = '''\b((?:EAAA|sq0atp-)[\w-]{22,60})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+entropy = 2
 keywords = [
     "sq0atp-",
     "eaaa",
@@ -2711,7 +2783,8 @@ keywords = ["squarespace"]
 [[rules]]
 id = "stripe-access-token"
 description = "Found a Stripe Access Token, posing a risk to payment processing services and sensitive financial data."
-regex = '''(?i)\b((sk|rk)_(test|live|prod)_[0-9a-z]{10,99})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+regex = '''\b((?:sk|rk)_(?:test|live|prod)_[a-zA-Z0-9]{10,99})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+entropy = 2
 keywords = [
     "sk_test",
     "sk_live",
@@ -2724,20 +2797,14 @@ keywords = [
 [[rules]]
 id = "sumologic-access-id"
 description = "Discovered a SumoLogic Access ID, potentially compromising log management services and data analytics integrity."
-regex = '''[\w.-]{0,10}?(?i:[\w.-]{0,10}?(?:sumo)(?:[ \t\w.-]{0,20})(?:[\s|']|[\s|"]){0,3})(?:=|>|:{1,3}=|\|\|:|<=|=>|:|\?=)(?:'|\"|\s|=|\x60){0,5}(su[a-zA-Z0-9]{12})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+regex = '''[\w.-]{0,10}?(?i:[\w.-]{0,10}?(?:(?-i:[Ss]umo|SUMO))(?:[ \t\w.-]{0,20})(?:[\s|']|[\s|"]){0,3})(?:=|>|:{1,3}=|\|\|:|<=|=>|:|\?=)(?:'|\"|\s|=|\x60){0,5}(su[a-zA-Z0-9]{12})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
 entropy = 3
 keywords = ["sumo"]
-# NOTE: Gitleaks >= v8.21.0 should use [[rules.allowlists] instead.
-[rules.allowlist]
-regexTarget = "line"
-regexes = [
-    '''sumOf''',
-]
 
 [[rules]]
 id = "sumologic-access-token"
 description = "Uncovered a SumoLogic Access Token, which could lead to unauthorized access to log data and analytics insights."
-regex = '''(?i)[\w.-]{0,10}?(?:sumo)(?:[ \t\w.-]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:{1,3}=|\|\|:|<=|=>|:|\?=)(?:'|\"|\s|=|\x60){0,5}([a-z0-9]{64})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+regex = '''(?i)[\w.-]{0,10}?(?:(?-i:[Ss]umo|SUMO))(?:[ \t\w.-]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:{1,3}=|\|\|:|<=|=>|:|\?=)(?:'|\"|\s|=|\x60){0,5}([a-z0-9]{64})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
 entropy = 3
 keywords = ["sumo"]
 
@@ -2757,7 +2824,8 @@ keywords = ["travis"]
 id = "twilio-api-key"
 description = "Found a Twilio API Key, posing a risk to communication services and sensitive customer interaction data."
 regex = '''SK[0-9a-fA-F]{32}'''
-keywords = ["twilio"]
+entropy = 3
+keywords = ["sk"]
 
 [[rules]]
 id = "twitch-api-token"
@@ -2804,8 +2872,9 @@ keywords = ["tfp_"]
 [[rules]]
 id = "vault-batch-token"
 description = "Detected a Vault Batch Token, risking unauthorized access to secret management services and sensitive data."
-regex = '''(?i)\b(hvb\.[a-z0-9_-]{138,212})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
-keywords = ["hvb"]
+regex = '''\b(hvb\.[\w-]{138,300})(?:['|\"|\n|\r|\s|\x60|;]|$)'''
+entropy = 4
+keywords = ["hvb."]
 
 [[rules]]
 id = "vault-service-token"
@@ -2813,7 +2882,7 @@ description = "Identified a Vault Service Token, potentially compromising infras
 regex = '''\b((?:hvs\.[\w-]{90,120}|s\.(?i:[a-z0-9]{24})))(?:['|\"|\n|\r|\s|\x60|;]|$)'''
 entropy = 3.5
 keywords = [
-    "hvs",
+    "hvs.",
     "s.",
 ]
 # NOTE: Gitleaks >= v8.21.0 should use [[rules.allowlists] instead.