sumologic.go 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package rules
  2. import (
  3. "github.com/zricethezav/gitleaks/v8/cmd/generate/config/utils"
  4. "regexp"
  5. "github.com/zricethezav/gitleaks/v8/cmd/generate/secrets"
  6. "github.com/zricethezav/gitleaks/v8/config"
  7. )
  8. func SumoLogicAccessID() *config.Rule {
  9. // define rule
  10. r := config.Rule{
  11. RuleID: "sumologic-access-id",
  12. Description: "Discovered a SumoLogic Access ID, potentially compromising log management services and data analytics integrity.",
  13. // TODO: Make 'su' case-sensitive.
  14. Regex: utils.GenerateSemiGenericRegex([]string{"sumo"},
  15. "su[a-zA-Z0-9]{12}", false),
  16. Entropy: 3,
  17. Keywords: []string{
  18. "sumo",
  19. },
  20. Allowlists: []config.Allowlist{
  21. {
  22. RegexTarget: "line",
  23. Regexes: []*regexp.Regexp{regexp.MustCompile(`sumOf`)},
  24. },
  25. {
  26. Paths: []*regexp.Regexp{regexp.MustCompile(`tests/.+$`)},
  27. },
  28. },
  29. }
  30. // validate
  31. tps := []string{
  32. `sumologic.accessId = "su9OL59biWiJu7"`, // gitleaks:allow
  33. `sumologic_access_id = "sug5XpdpaoxtOH"`, // gitleaks:allow
  34. `export SUMOLOGIC_ACCESSID="suDbJw97o9WVo0"`, // gitleaks:allow
  35. `SUMO_ACCESS_ID = "suGyI5imvADdvU"`, // gitleaks:allow
  36. utils.GenerateSampleSecret("sumo", "su"+secrets.NewSecret(utils.AlphaNumeric("12"))),
  37. }
  38. fps := []string{
  39. `- (NSNumber *)sumOfProperty:(NSString *)property;`,
  40. `- (NSInteger)sumOfValuesInRange:(NSRange)range;`,
  41. `+ (unsigned char)byteChecksumOfData:(id)arg1;`,
  42. `sumOfExposures = sumOfExposures;`, // gitleaks:allow
  43. `.si-sumologic.si--color::before { color: #000099; }`,
  44. `/// Based on the SumoLogic keyword syntax:`,
  45. `sumologic_access_id = ""`,
  46. `SUMOLOGIC_ACCESSID: ${SUMOLOGIC_ACCESSID}`,
  47. `export SUMOLOGIC_ACCESSID=XXXXXXXXXXXXXX`, // gitleaks:allow
  48. }
  49. return utils.Validate(r, tps, fps)
  50. }
  51. func SumoLogicAccessToken() *config.Rule {
  52. // define rule
  53. r := config.Rule{
  54. RuleID: "sumologic-access-token",
  55. Description: "Uncovered a SumoLogic Access Token, which could lead to unauthorized access to log data and analytics insights.",
  56. Regex: utils.GenerateSemiGenericRegex([]string{"sumo"},
  57. utils.AlphaNumeric("64"), true),
  58. Entropy: 3,
  59. Keywords: []string{
  60. "sumo",
  61. },
  62. }
  63. // validate
  64. tps := []string{
  65. `export SUMOLOGIC_ACCESSKEY="3HSa1hQfz6BYzlxf7Yb1WKG3Hyovm56LMFChV2y9LgkRipsXCujcLb5ej3oQUJlx"`, // gitleaks:allow
  66. `SUMO_ACCESS_KEY: gxq3rJQkS6qovOg9UY2Q70iH1jFZx0WBrrsiAYv4XHodogAwTKyLzvFK4neRN8Dk`, // gitleaks:allow
  67. `SUMOLOGIC_ACCESSKEY: 9RITWb3I3kAnSyUolcVJq4gwM17JRnQK8ugRaixFfxkdSl8ys17ZtEL3LotESKB7`, // gitleaks:allow
  68. `sumo_access_key = "3Kof2VffNQ0QgYIhXUPJosVlCaQKm2hfpWE6F1fT9YGY74blQBIPsrkCcf1TwKE5"`, // gitleaks:allow
  69. utils.GenerateSampleSecret("sumo", secrets.NewSecret(utils.AlphaNumeric("64"))),
  70. }
  71. fps := []string{
  72. `# SUMO_ACCESS_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`, // gitleaks:allow
  73. "-e SUMO_ACCESS_KEY=`etcdctl get /sumologic_secret`",
  74. `SUMO_ACCESS_KEY={SumoAccessKey}`,
  75. `SUMO_ACCESS_KEY=${SUMO_ACCESS_KEY:=$2}`,
  76. `sumo_access_key = "<SUMOLOGIC ACCESS KEY>"`,
  77. `SUMO_ACCESS_KEY: AbCeFG123`,
  78. }
  79. return utils.Validate(r, tps, fps)
  80. }