slack.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package rules
  2. import (
  3. "regexp"
  4. "github.com/zricethezav/gitleaks/v8/cmd/generate/secrets"
  5. "github.com/zricethezav/gitleaks/v8/config"
  6. )
  7. func SlackAccessToken() *config.Rule {
  8. // define rule
  9. r := config.Rule{
  10. Description: "Slack token",
  11. RuleID: "slack-access-token",
  12. Regex: regexp.MustCompile(
  13. "xox[baprs]-([0-9a-zA-Z]{10,48})"),
  14. Keywords: []string{
  15. "xoxb",
  16. "xoxa",
  17. "xoxp",
  18. "xoxr",
  19. "xoxs",
  20. },
  21. }
  22. // validate
  23. tps := []string{
  24. "\"slackToken\": \"xoxb-" + secrets.NewSecret(alphaNumeric("30")) + "\"",
  25. }
  26. return validate(r, tps, nil)
  27. }
  28. func SlackWebHook() *config.Rule {
  29. // define rule
  30. r := config.Rule{
  31. Description: "Slack Webhook",
  32. RuleID: "slack-web-hook",
  33. Regex: regexp.MustCompile(
  34. `https:\/\/hooks.slack.com\/(services|workflows)\/[A-Za-z0-9+\/]{44,46}`),
  35. Keywords: []string{
  36. "hooks.slack.com",
  37. },
  38. }
  39. // validate
  40. tps := []string{
  41. "https://hooks.slack.com/services/" + secrets.NewSecret(alphaNumeric("44")), // gitleaks:allow
  42. "https://hooks.slack.com/workflows/" + secrets.NewSecret(alphaNumeric("44")), // gitleaks:allow
  43. }
  44. return validate(r, tps, nil)
  45. }