main.go 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. package main
  2. import (
  3. "os"
  4. "text/template"
  5. "github.com/rs/zerolog/log"
  6. "github.com/zricethezav/gitleaks/v8/cmd/generate/config/rules"
  7. "github.com/zricethezav/gitleaks/v8/config"
  8. )
  9. const (
  10. templatePath = "rules/config.tmpl"
  11. )
  12. func main() {
  13. configRules := []*config.Rule{}
  14. configRules = append(configRules, rules.AgeSecretKey())
  15. configRules = append(configRules, rules.AdobeClientID())
  16. configRules = append(configRules, rules.AdobeClientSecret())
  17. configRules = append(configRules, rules.AlibabaAccessKey())
  18. configRules = append(configRules, rules.AlibabaSecretKey())
  19. configRules = append(configRules, rules.AsanaClientID())
  20. configRules = append(configRules, rules.AsanaClientSecret())
  21. configRules = append(configRules, rules.Atlassian())
  22. configRules = append(configRules, rules.AWS())
  23. configRules = append(configRules, rules.BitBucketClientID())
  24. configRules = append(configRules, rules.BitBucketClientSecret())
  25. configRules = append(configRules, rules.Beamer())
  26. configRules = append(configRules, rules.Clojars())
  27. configRules = append(configRules, rules.Contentful())
  28. configRules = append(configRules, rules.Databricks())
  29. configRules = append(configRules, rules.DiscordAPIToken())
  30. configRules = append(configRules, rules.DiscordClientID())
  31. configRules = append(configRules, rules.DiscordClientSecret())
  32. configRules = append(configRules, rules.DropBoxAPISecret())
  33. configRules = append(configRules, rules.DropBoxLongLivedAPIToken())
  34. configRules = append(configRules, rules.DropBoxShortLivedAPIToken())
  35. configRules = append(configRules, rules.Doppler())
  36. configRules = append(configRules, rules.Duffel())
  37. configRules = append(configRules, rules.Dynatrace())
  38. configRules = append(configRules, rules.EasyPost())
  39. configRules = append(configRules, rules.EasyPostTestAPI())
  40. configRules = append(configRules, rules.Facebook())
  41. configRules = append(configRules, rules.FastlyAPIToken())
  42. configRules = append(configRules, rules.FinicityClientSecret())
  43. configRules = append(configRules, rules.FinicityAPIToken())
  44. configRules = append(configRules, rules.FlutterwavePublicKey())
  45. configRules = append(configRules, rules.FlutterwaveSecretKey())
  46. configRules = append(configRules, rules.FlutterwaveSecretKey())
  47. configRules = append(configRules, rules.FrameIO())
  48. configRules = append(configRules, rules.GenericCredential())
  49. configRules = append(configRules, rules.GoCardless())
  50. // TODO figure out what makes sense for GCP
  51. // configRules = append(configRules, rules.GCPServiceAccount())
  52. configRules = append(configRules, rules.GitHubPat())
  53. configRules = append(configRules, rules.GitHubOauth())
  54. configRules = append(configRules, rules.GitHubApp())
  55. configRules = append(configRules, rules.GitHubRefresh())
  56. configRules = append(configRules, rules.Gitlab())
  57. configRules = append(configRules, rules.Hashicorp())
  58. configRules = append(configRules, rules.Heroku())
  59. configRules = append(configRules, rules.HubSpot())
  60. configRules = append(configRules, rules.Intercom())
  61. configRules = append(configRules, rules.LinearAPIToken())
  62. configRules = append(configRules, rules.LinearClientSecret())
  63. configRules = append(configRules, rules.LinkedinClientID())
  64. configRules = append(configRules, rules.LinkedinClientSecret())
  65. configRules = append(configRules, rules.LobAPIToken())
  66. configRules = append(configRules, rules.LobPubAPIToken())
  67. configRules = append(configRules, rules.MailChimp())
  68. configRules = append(configRules, rules.MailGunPubAPIToken())
  69. configRules = append(configRules, rules.MailGunPrivateAPIToken())
  70. configRules = append(configRules, rules.MailGunSigningKey())
  71. configRules = append(configRules, rules.MapBox())
  72. configRules = append(configRules, rules.MessageBirdAPIToken())
  73. configRules = append(configRules, rules.MessageBirdClientID())
  74. configRules = append(configRules, rules.NewRelicUserID())
  75. configRules = append(configRules, rules.NewRelicUserKey())
  76. configRules = append(configRules, rules.NewRelicBrowserAPIKey())
  77. configRules = append(configRules, rules.NPM())
  78. configRules = append(configRules, rules.PlanetScalePassword())
  79. configRules = append(configRules, rules.PlanetScaleToken())
  80. configRules = append(configRules, rules.PostManAPI())
  81. configRules = append(configRules, rules.PrivateKey())
  82. configRules = append(configRules, rules.PulumiAPIToken())
  83. configRules = append(configRules, rules.PyPiUploadToken())
  84. configRules = append(configRules, rules.RubyGemsAPIToken())
  85. configRules = append(configRules, rules.SendGridAPIToken())
  86. configRules = append(configRules, rules.SendInBlueAPIToken())
  87. configRules = append(configRules, rules.ShippoAPIToken())
  88. configRules = append(configRules, rules.ShopifyAccessToken())
  89. configRules = append(configRules, rules.ShopifyCustomAccessToken())
  90. configRules = append(configRules, rules.ShopifyPrivateAppAccessToken())
  91. configRules = append(configRules, rules.ShopifySharedSecret())
  92. configRules = append(configRules, rules.SlackAccessToken())
  93. configRules = append(configRules, rules.SlackWebHook())
  94. configRules = append(configRules, rules.StripeAccessToken())
  95. configRules = append(configRules, rules.Twilio())
  96. configRules = append(configRules, rules.TwitchAPIToken())
  97. configRules = append(configRules, rules.Twitter())
  98. configRules = append(configRules, rules.Typeform())
  99. config := config.Config{
  100. Rules: configRules,
  101. }
  102. tmpl, err := template.ParseFiles(templatePath)
  103. if err != nil {
  104. log.Fatal().Err(err).Msg("Failed to parse template")
  105. }
  106. f, err := os.Create("gitleaks.toml")
  107. if err != nil {
  108. log.Fatal().Err(err).Msg("Failed to create rules.toml")
  109. }
  110. tmpl.Execute(f, config)
  111. }
  112. // TODO introduce skiplists:
  113. // https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/wordlist-skipfish.fuzz.txt