privatekey.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package rules
  2. import (
  3. "github.com/zricethezav/gitleaks/v8/cmd/generate/config/utils"
  4. "github.com/zricethezav/gitleaks/v8/config"
  5. "github.com/zricethezav/gitleaks/v8/regexp"
  6. )
  7. func PrivateKey() *config.Rule {
  8. // define rule
  9. r := config.Rule{
  10. RuleID: "private-key",
  11. Description: "Identified a Private Key, which may compromise cryptographic security and sensitive data encryption.",
  12. Regex: regexp.MustCompile(`(?i)-----BEGIN[ A-Z0-9_-]{0,100}PRIVATE KEY(?: BLOCK)?-----[\s\S-]{64,}?KEY(?: BLOCK)?-----`),
  13. Keywords: []string{"-----BEGIN"},
  14. }
  15. // validate
  16. tps := []string{`-----BEGIN PRIVATE KEY-----
  17. MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDAC4AWkdwKYSd8
  18. Ks14IReLcYgADhoXk56ZzXI=
  19. -----END PRIVATE KEY-----`,
  20. `-----BEGIN RSA PRIVATE KEY-----
  21. MIIEpQIBAAKCAQEAn6/O8li+SX4m98LLYt/PKSzEmQ++ZBD7Loh9P13f4yQ92EF3
  22. yxR5MsXFu9PRsrYQA7/4UTPHiC4y2sAVCBg4C2yyBpUEtMQjyCESi6Y=
  23. -----END RSA PRIVATE KEY-----
  24. `,
  25. `-----BEGIN PGP PRIVATE KEY BLOCK-----
  26. lQWGBGSVV4YBDAClvRnxezIRy2Yv7SFlzC0iFiRF/O/jePSw+XYhvcrTaqSYTGic
  27. =8xQN
  28. -----END PGP PRIVATE KEY BLOCK-----`,
  29. } // gitleaks:allow
  30. fps := []string{
  31. `-----BEGIN PRIVATE KEY-----
  32. anything
  33. -----END PRIVATE KEY-----`,
  34. `-----BEGIN OPENSSH PRIVATE KEY----------END OPENSSH PRIVATE KEY-----`,
  35. }
  36. return utils.Validate(r, tps, fps)
  37. }
  38. func PrivateKeyPKCS12File() *config.Rule {
  39. // https://en.wikipedia.org/wiki/PKCS_12
  40. r := config.Rule{
  41. RuleID: "pkcs12-file",
  42. Description: "Found a PKCS #12 file, which commonly contain bundled private keys.",
  43. Path: regexp.MustCompile(`(?i)(?:^|\/)[^\/]+\.p(?:12|fx)$`),
  44. }
  45. // validate
  46. tps := map[string]string{
  47. "security/es_certificates/opensearch/es_kibana_client.p12": "",
  48. "cagw_key.P12": "",
  49. "ToDo/ToDo.UWP/ToDo.UWP_TemporaryKey.pfx": "",
  50. }
  51. fps := map[string]string{
  52. "doc/typenum/type.P126.html": "",
  53. "scripts/keeneland/syntest.p1200.sh": "",
  54. }
  55. return utils.ValidateWithPaths(r, tps, fps)
  56. }