vault.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package rules
  2. import (
  3. "github.com/zricethezav/gitleaks/v8/cmd/generate/config/utils"
  4. "github.com/zricethezav/gitleaks/v8/cmd/generate/secrets"
  5. "github.com/zricethezav/gitleaks/v8/config"
  6. )
  7. func VaultServiceToken() *config.Rule {
  8. // define rule
  9. r := config.Rule{
  10. RuleID: "vault-service-token",
  11. Description: "Identified a Vault Service Token, potentially compromising infrastructure security and access to sensitive credentials.",
  12. Regex: utils.GenerateUniqueTokenRegex(`(?:hvs\.[\w-]{90,120}|s\.(?i:[a-z0-9]{24}))`, false),
  13. Entropy: 3.5,
  14. Keywords: []string{"hvs", "s."},
  15. }
  16. // validate
  17. tps := []string{
  18. // Old
  19. utils.GenerateSampleSecret("vault", "s."+secrets.NewSecret(utils.AlphaNumeric("24"))),
  20. `token: s.ZC9Ecf4M5g9o34Q6RkzGsj0z`,
  21. // New
  22. utils.GenerateSampleSecret("vault", "hvs."+secrets.NewSecret(utils.AlphaNumericExtendedShort("90"))),
  23. `-vaultToken hvs.CAESIP2jTxc9S2K7Z6CtcFWQv7-044m_oSsxnPE1H3nF89l3GiYKHGh2cy5sQmlIZVNyTWJNcDRsYWJpQjlhYjVlb1cQh6PL8wEYAg"`, // longer than 100 chars
  24. }
  25. fps := []string{
  26. // Old
  27. ` credentials: new AWS.SharedIniFileCredentials({ profile: '<YOUR_PROFILE>' })`, // word boundary start
  28. `INFO 4 --- [ main] o.s.b.f.s.DefaultListableBeanFactory : Overriding bean definition for bean`, // word boundary end
  29. `s.xxxxxxxxxxxxxxxxxxxxxxxx`, // low entropy
  30. // New
  31. `hvs.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`, // low entropy
  32. }
  33. return utils.Validate(r, tps, fps)
  34. }
  35. func VaultBatchToken() *config.Rule {
  36. // define rule
  37. r := config.Rule{
  38. Description: "Detected a Vault Batch Token, risking unauthorized access to secret management services and sensitive data.",
  39. RuleID: "vault-batch-token",
  40. Regex: utils.GenerateUniqueTokenRegex(`hvb\.[a-z0-9_-]{138,212}`, true),
  41. Keywords: []string{"hvb"},
  42. }
  43. // validate
  44. tps := []string{
  45. utils.GenerateSampleSecret("vault", "hvb."+secrets.NewSecret(utils.AlphaNumericExtendedShort("138"))),
  46. }
  47. return utils.Validate(r, tps, nil)
  48. }