Skip to content

Commit 76d8a7b

Browse files
Pushed generic-api-key to our side, supporting XML secrets
1 parent 8d8183b commit 76d8a7b

File tree

2 files changed

+21
-15
lines changed

2 files changed

+21
-15
lines changed

engine/rules/generic-key.go

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,7 @@ func GenericCredential() *config.Rule {
1919
"password",
2020
"auth",
2121
"access",
22-
}, `[0-9a-z\-_.=]{10,150}`, true,
23-
[]string{
24-
`<key>\s*(?:access|auth|(?-i:[Aa]pi|API)|API_KEY|credential|creds|key|passw(?:or)?d|secret|token)\s*<\/key>\s*<string>\s*([\w.=-]{10,150}|[a-z0-9][a-z0-9+\/]{11,}={0,3})\s*<\/string>`,
25-
}),
22+
}, `[0-9a-z\-_.=]{10,150}`, true),
2623
Keywords: []string{
2724
"key",
2825
"api",
@@ -41,7 +38,12 @@ func GenericCredential() *config.Rule {
4138
}
4239

4340
// validate
44-
tps := []string{}
41+
tps := []string{
42+
generateSampleSecret("generic", "CLOJARS_34bf0e88955ff5a1c328d6a7491acc4f48e865a7b8dd4d70a70749037443"),
43+
generateSampleSecret("generic", "Zf3D0LXCM3EIMbgJpUNnkRtOfOueHznB"),
44+
`"client_id" : "0afae57f3ccfd9d7f5767067bc48b30f719e271ba470488056e37ab35d4b6506"`,
45+
`"client_secret" : "6da89121079f83b2eb6acccf8219ea982c3d79bccc3e9c6a85856480661f8fde",`,
46+
}
4547
fps := []string{
4648
`client_vpn_endpoint_id = aws_ec2_client_vpn_endpoint.client-vpn-endpoint.id`,
4749
`password combination.

engine/rules/utils.go

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,17 @@ const (
1515
identifierCaseInsensitiveSuffix = `)`
1616
identifierPrefix = `(?:`
1717
identifierSuffix = `)(?:[0-9a-z\-_\t .]{0,20})(?:[\s|']|[\s|"]){0,3}`
18+
identifierSuffixAdditional = `)(?:[0-9a-z\-_\t .]{0,20})(?:<\/key>\s{0,10}<string)?(?:[\s|']|[\s|"]){0,3}`
1819

1920
// commonly used assignment operators or function call
2021
operator = `(?:=|>|:{1,3}=|\|\|:|<=|=>|:|\?=)`
2122

2223
// boundaries for the secret
2324
// \x60 = `
24-
secretPrefixUnique = `\b(`
25-
secretPrefix = `(?:'|\"|\s|=|\x60){0,5}(`
26-
secretSuffix = `)(?:['|\"|\n|\r|\s|\x60|;]|$)`
25+
secretPrefixUnique = `\b(`
26+
secretPrefix = `(?:'|\"|\s|=|\x60){0,5}(`
27+
secretSuffix = `)(?:['|\"|\n|\r|\s|\x60|;]|$)`
28+
secretSuffixAdditional = `)(?:['|\"|\n|\r|\s|\x60|;]|$|\s{0,10}<\/string>)`
2729
)
2830

2931
func generateSemiGenericRegex(identifiers []string, secretRegex string, isCaseInsensitive bool) *regexp.Regexp {
@@ -44,13 +46,13 @@ func generateSemiGenericRegex(identifiers []string, secretRegex string, isCaseIn
4446
sb.WriteString(secretSuffix)
4547
return regexp.MustCompile(sb.String())
4648
}
47-
func generateSemiGenericRegexWithAdditionalRegex(identifiers []string, secretRegex string, isCaseInsensitive bool, addRegex []string) *regexp.Regexp {
49+
func generateSemiGenericRegexWithAdditionalRegex(identifiers []string, secretRegex string, isCaseInsensitive bool) *regexp.Regexp {
4850
var sb strings.Builder
4951
// The identifiers should always be case-insensitive.
5052
// This is inelegant but prevents an extraneous `(?i:)` from being added to the pattern; it could be removed.
5153
if isCaseInsensitive {
5254
sb.WriteString(caseInsensitive)
53-
writeIdentifiers(&sb, identifiers)
55+
writeIdentifiersAdditionalRegex(&sb, identifiers)
5456
} else {
5557
sb.WriteString(identifierCaseInsensitivePrefix)
5658
writeIdentifiers(&sb, identifiers)
@@ -59,15 +61,17 @@ func generateSemiGenericRegexWithAdditionalRegex(identifiers []string, secretReg
5961
sb.WriteString(operator)
6062
sb.WriteString(secretPrefix)
6163
sb.WriteString(secretRegex)
62-
sb.WriteString(secretSuffix)
64+
sb.WriteString(secretSuffixAdditional)
6365

64-
for _, regex := range addRegex {
65-
sb.WriteString(`|`)
66-
sb.WriteString(regex)
67-
}
6866
return regexp.MustCompile(sb.String())
6967
}
7068

69+
func writeIdentifiersAdditionalRegex(sb *strings.Builder, identifiers []string) {
70+
sb.WriteString(identifierPrefix)
71+
sb.WriteString(strings.Join(identifiers, "|"))
72+
sb.WriteString(identifierSuffixAdditional)
73+
}
74+
7175
func writeIdentifiers(sb *strings.Builder, identifiers []string) {
7276
sb.WriteString(identifierPrefix)
7377
sb.WriteString(strings.Join(identifiers, "|"))

0 commit comments

Comments
 (0)