4
0

hashicorp_vault.go 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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. "regexp"
  7. )
  8. func VaultServiceToken() *config.Rule {
  9. // define rule
  10. r := config.Rule{
  11. RuleID: "vault-service-token",
  12. Description: "Identified a Vault Service Token, potentially compromising infrastructure security and access to sensitive credentials.",
  13. Regex: utils.GenerateUniqueTokenRegex(`(?:hvs\.[\w-]{90,120}|s\.(?i:[a-z0-9]{24}))`, false),
  14. Entropy: 3.5,
  15. Keywords: []string{"hvs.", "s."},
  16. Allowlists: []config.Allowlist{
  17. {
  18. Regexes: []*regexp.Regexp{
  19. // https://github.com/gitleaks/gitleaks/issues/1490#issuecomment-2334166357
  20. regexp.MustCompile(`s\.[A-Za-z]{24}`),
  21. },
  22. },
  23. },
  24. }
  25. // validate
  26. // Old
  27. tps := utils.GenerateSampleSecrets("vault", "s."+secrets.NewSecret(`s\.[a-zA-Z0-9]{24}`))
  28. tps = append(tps,
  29. `token: s.ZC9Ecf4M5g9o34Q6RkzGsj0z`,
  30. )
  31. // New
  32. tps = append(tps, utils.GenerateSampleSecrets("vault", secrets.NewSecret(`hvs\.[\w\-]{90}`))...)
  33. tps = append(tps,
  34. `-vaultToken hvs.CAESIP2jTxc9S2K7Z6CtcFWQv7-044m_oSsxnPE1H3nF89l3GiYKHGh2cy5sQmlIZVNyTWJNcDRsYWJpQjlhYjVlb1cQh6PL8wEYAg"`, // longer than 100 chars
  35. )
  36. fps := []string{
  37. // Old
  38. ` credentials: new AWS.SharedIniFileCredentials({ profile: '<YOUR_PROFILE>' })`, // word boundary start
  39. `INFO 4 --- [ main] o.s.b.f.s.DefaultListableBeanFactory : Overriding bean definition for bean`, // word boundary end
  40. `s.xxxxxxxxxxxxxxxxxxxxxxxx`, // low entropy
  41. `s.THISSTRINGISALLUPPERCASE`, // uppercase
  42. `s.thisstringisalllowercase`, // lowercase
  43. `s.AcceptanceTimeoutSeconds `, // pascal-case
  44. `s.makeKubeConfigController = args`, // camel-case
  45. // New
  46. `hvs.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`, // low entropy
  47. }
  48. return utils.Validate(r, tps, fps)
  49. }
  50. func VaultBatchToken() *config.Rule {
  51. // define rule
  52. r := config.Rule{
  53. RuleID: "vault-batch-token",
  54. Description: "Detected a Vault Batch Token, risking unauthorized access to secret management services and sensitive data.",
  55. Regex: utils.GenerateUniqueTokenRegex(`hvb\.[\w-]{138,300}`, false),
  56. Entropy: 4,
  57. Keywords: []string{"hvb."},
  58. }
  59. // validate
  60. tps := utils.GenerateSampleSecrets("vault", "hvb."+secrets.NewSecret(utils.AlphaNumericExtendedShort("138")))
  61. tps = append(tps, `hvb.AAAAAQJgxDgqsGNorpoOR7hPZ5SU-ynBvCl764jyRP_fnX7WvkdkDzGjbLNGdPdtlY33Als2P36yDZueqzfdGw9RsaTeaYXSH7E4RYSWuRoQ9YRKIw8o7mDDY2ZcT3KOB7RwtW1w1FN2eDqcy_sbCjXPaM1iBVH-mqMSYRmRd2nb5D1SJPeBzIYRqSglLc31wUGN7xEzyrKUczqOKsIcybQA`) // gitleaks:allow
  62. return utils.Validate(r, tps, nil)
  63. }