infracost.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  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 InfracostAPIToken() *config.Rule {
  8. // define rule
  9. r := config.Rule{
  10. RuleID: "infracost-api-token",
  11. Description: "Detected an Infracost API Token, risking unauthorized access to cloud cost estimation tools and financial data.",
  12. Regex: utils.GenerateUniqueTokenRegex(`ico-[a-zA-Z0-9]{32}`, false),
  13. Entropy: 3,
  14. Keywords: []string{"ico-"},
  15. }
  16. // validate
  17. tps := utils.GenerateSampleSecrets("ico", "ico-"+secrets.NewSecret("[A-Za-z0-9]{32}"))
  18. tps = append(tps,
  19. ` variable {
  20. name = "INFRACOST_API_KEY"
  21. secret_value = "ico-mlCr1Mn3SRcRiZMObUZOTHLcgtH2Lpgt"
  22. is_secret = true
  23. }`,
  24. // TODO: New format with longer keys?
  25. // ` headers = {
  26. //'X-Api-Key': 'ico-EeDdSfctrmjD14f45f45te5gJ7l6lw4o6M36sXT62a6',
  27. //'Content-Type': 'application/json',
  28. //}`,
  29. )
  30. fps := []string{
  31. // Low entropy
  32. `ico-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX`,
  33. // Invalid
  34. `http://assets.r7.com/assets/media_box_tv_tres_colunas/video_box.ico-7a388b69018576d24b59331fd60aab0c.png`,
  35. `https://explosivelab.notion.site/Pianificazione-Nerdz-Ng-pubblico-1bc826ecc0994dd8915be97fc3489cde?pvs=74`,
  36. `http://ece252-2.uwaterloo.ca:2540/image?q=gAAAAABdHkoqb9ZaJ3q4dlzEvTgG9WYwKcD9Aw7OUXeFicO-5M5IdNDjHBpKw7KBK3nCVqtuga4yzUaFEpJn8BqA1LzZprIJBw==`,
  37. }
  38. return utils.Validate(r, tps, fps)
  39. }