Files
wehub-resource-sync 48b3ccf279
gitleaks / gitleaks (push) Has been skipped
Test / test (ubuntu-latest) (push) Failing after 0s
Test / test (windows-latest) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:12:29 +08:00

49 lines
2.1 KiB
Go

package rules
import (
"github.com/zricethezav/gitleaks/v8/cmd/generate/config/utils"
"github.com/zricethezav/gitleaks/v8/config"
"github.com/zricethezav/gitleaks/v8/regexp"
)
func NugetConfigPassword() *config.Rule {
r := config.Rule{
Description: "Identified a password within a Nuget config file, potentially compromising package management access.",
RuleID: "nuget-config-password",
Regex: regexp.MustCompile(`(?i)<add key=\"(?:(?:ClearText)?Password)\"\s*value=\"(.{8,})\"\s*/>`),
Path: regexp.MustCompile(`(?i)nuget\.config$`),
Keywords: []string{"<add key="},
Entropy: 1,
Allowlists: []*config.Allowlist{
{
Regexes: []*regexp.Regexp{
// samples from https://learn.microsoft.com/en-us/nuget/reference/nuget-config-file
regexp.MustCompile(`33f!!lloppa`),
regexp.MustCompile(`hal\+9ooo_da!sY`),
// exclude environment variables
regexp.MustCompile(`^\%\S.*\%$`),
},
},
},
}
tps := map[string]string{
"nuget.config": `<add key="Password" value="CleartextPassword1" />`,
"Nuget.config": `<add key="ClearTextPassword" value="CleartextPassword1" />`,
"Nuget.Config": `<add key="ClearTextPassword" value="TestSourcePassword" />`,
"Nuget.COnfig": `<add key="ClearTextPassword" value="TestSource-Password" />`,
"Nuget.CONfig": `<add key="ClearTextPassword" value="TestSource%Password" />`,
"Nuget.CONFig": `<add key="ClearTextPassword" value="TestSource%Password%" />`,
}
fps := map[string]string{
"some.xml": `<add key="Password" value="CleartextPassword1" />`, // wrong filename
"nuget.config": `<add key="ClearTextPassword" value="XXXXXXXXXXX" />`, // low entropy
"Nuget.config": `<add key="ClearTextPassword" value="abc" />`, // too short
"Nuget.Config": `<add key="ClearTextPassword" value="%TestSourcePassword%" />`, // environment variable
"NUget.Config": `<add key="ClearTextPassword" value="33f!!lloppa" />`, // known sample
"NUGet.Config": `<add key="ClearTextPassword" value="hal+9ooo_da!sY" />`, // known sample
}
return utils.ValidateWithPaths(r, tps, fps)
}