Documentation
¶
Index ¶
- Variables
- func FindSecretsByFilePathMap(fileMap map[string]string, envVars []byte, config Config) ([]share.CLUSSecretLog, []share.CLUSSetIdPermLog, error)
- func FindSecretsByRootpath(rootPath string, envVars []byte, config Config) ([]share.CLUSSecretLog, []share.CLUSSetIdPermLog, error)
- func InspectFile(fullpath, reportPath string, config Config) ([]share.CLUSSecretLog, bool)
- type Config
- type Entropy
- type FileType
- type Rule
Constants ¶
This section is empty.
Variables ¶
View Source
var DefaultFileType []FileType = []FileType{ FileType{Description: "ALL", Expression: `.*`}, }
DefaultFileType is for default profile
View Source
var DefaultRules []Rule = []Rule{ Rule{Description: "Private.Key", Expression: `^-----BEGIN ((EC|PGP|DSA|RSA|OPENSSH|SSH2) )?PRIVATE KEY( BLOCK)?-----`, Tags: []string{share.SecretPrivateKey, "GeneralPrivateKey"}, Suggestion: msgRemove}, Rule{Description: "Private.Key", Expression: `^PuTTY-User-Key-File-2:`, Tags: []string{share.SecretPrivateKey, "PuttyPrivateKey"}, Suggestion: msgRemove}, Rule{Description: "XML.Signature.Private.Key", Expression: `(?m)^<RSAKeyValue>`, Tags: []string{share.SecretPrivateKey, "XmlPrivateKey"}, Suggestion: msgRemove}, Rule{Description: "AWS.Manager.ID", Expression: `(?m)[\s|"|'|=|:]+(A3T[A-Z0-9]|ACCA|AKIA|AGPA|AIDA|AIPA|AKIA|ANPA|ANVA|APKA|AROA|ASCA|ASIA)([A-Z0-9]{16})(?:\s|$|"|')`, Tags: []string{share.SecretRegular, "AWs"}, Suggestion: msgReferVender, Entropies: []Entropy{Entropy{Group: 2, Min: 3.375, Max: 6.0}}}, Rule{Description: "AWS.MWS.Key", Expression: `(?m)[\s|"|'|=|:]+amzn\.mws\.[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}(?:\s|"|')`, Tags: []string{share.SecretRegular, "AWS", "MWS"}, Suggestion: msgReferVender}, Rule{Description: "Facebook.Client.Secret", Expression: `(?im)(facebook|fb)\S{0,32}access_token(.{0,128})client_secret=(?-i)([0-9a-f]{32}\b)`, Tags: []string{share.SecretProgram, "Facebook"}, Suggestion: msgReferVender}, Rule{Description: "Facebook.Endpoint.Secret", Expression: `(?im)(facebook|fb)\S{0,32}&access_token=([0-9a-f]{32}\b)`, Tags: []string{share.SecretProgram, "Facebook"}, Suggestion: msgReferVender}, Rule{Description: "Facebook.App.Secret", Expression: `(?im)^\s*\w*(facebook|fb)\S*\s*[:=]+\s*['"]?([0-9a-f]{32})(?:\s|$|"|')`, Tags: []string{share.SecretRegular, "Facebook"}, Suggestion: msgReferVender, Entropies: []Entropy{Entropy{Group: 2, Min: 3.6, Max: 6.0}}}, Rule{Description: "Twitter.Client.ID", Expression: `(?im)^\s*\w*twitter\S*\s*[:=]+\s*['"]?([0-9a-z]{18,25})(?:\s|$|"|')`, Tags: []string{share.SecretRegular, "Twitter"}, Suggestion: msgReferVender, Entropies: []Entropy{Entropy{Group: 1, Min: 3.75, Max: 6.0}}}, Rule{Description: "Twitter.Secret.Key", Expression: `(?im)^\s*\w*twitter\S*\s*[:=]+\s*['"]?([0-9a-z]{35,44})(?:\s|$|"|')`, Tags: []string{share.SecretRegular, "Twitter"}, Suggestion: msgReferVender, Entropies: []Entropy{Entropy{Group: 1, Min: 4.0, Max: 6.0}}}, Rule{Description: "Github.Secret", Expression: `(?im)^\s*\w*github\S*\s*[:=]+\s*['"]?([0-9a-z]{35,40})(?:\s|$|"|')`, Tags: []string{share.SecretRegular, "Github"}, Suggestion: msgReferVender, Entropies: []Entropy{Entropy{Group: 1, Min: 4.0, Max: 6.0}}}, Rule{Description: "Square.Product.ID", Expression: `(?m)[\s|"|'|=|:]+sq0(at|id)p-[0-9A-Za-z\-_]{22}(?:\s|$|"|')`, Tags: []string{share.SecretRegular, "square"}, Suggestion: msgReferVender}, Rule{Description: "Square.OAuth.Secret", Expression: `(?m)[\s|"|'|=|:]+sq0csp-[0-9A-Za-z]{10}-[0-9A-Za-z]{6}_[0-9A-Za-z]{25}(?:\s|$|"|')`, Tags: []string{share.SecretRegular, "square"}, Suggestion: msgReferVender}, Rule{Description: "Stripe.Access.Key", Expression: `(?m)[\s|"|'|=|:]+(?:r|s|p)k_(live|test)_([0-9a-zA-Z]{24,34})(?:\s|$|"|')`, Tags: []string{share.SecretRegular, "Stripe"}, Suggestion: msgReferVender, Entropies: []Entropy{Entropy{Group: 2, Min: 4.0, Max: 6.0}}}, Rule{Description: "Slack.API.tokens", Expression: `(?m)[\s|"|'|=|:]+xox[baprs]-[0-9a-zA-Z]{4,21}-[0-9a-zA-Z]{4,21}(?:\s|$|"|')`, Tags: []string{share.SecretRegular, "Slack"}, Suggestion: msgReferVender}, Rule{Description: "Slack Webhook", Expression: `(?m)\shttps://hooks.slack.com/services/T[a-zA-Z0-9_]{8}/B[a-zA-Z0-9_]{8}/[a-zA-Z0-9_]{24}`, Tags: []string{share.SecretProgram, "slack"}, Suggestion: msgReferVender}, Rule{Description: "LinkedIn.Client.ID", Expression: `(?im)^\s*\w*linkedin\S*\s*[:=]+\s*['"]?(?-i)([0-9a-z]{14})(?:\s|$|"|')`, Tags: []string{share.SecretRegular, "LinkedIn"}, Suggestion: msgReferVender, Entropies: []Entropy{Entropy{Group: 1, Min: 3.5, Max: 6.0}}}, Rule{Description: "LinkedIn.Secret.Key", Expression: `(?im)^\s*\w*linkedin\S*\s*[:=]+\s*['"]?([0-9a-zA-Z]{16})(?:\s|$|"|')`, Tags: []string{share.SecretRegular, "LinkedIn"}, Suggestion: msgReferVender, Entropies: []Entropy{Entropy{Group: 1, Min: 3.75, Max: 6.0}}}, Rule{Description: "Google.API.Key", Expression: `(?m)[\s|"|'|=|:]+AIza([0-9A-Za-z\\-_]{35})(?:\s|$|"|')`, Tags: []string{share.SecretRegular, "Google"}, Suggestion: msgReferVender, Entropies: []Entropy{Entropy{Group: 1, Min: 4.0, Max: 6.0}}}, Rule{Description: "SendGrid.API.Key", Expression: `(?m)\sSG\.[\w_]{16,32}\.[\w_]{16,64}(?:\s|"|')`, Tags: []string{share.SecretRegular, "SendGrid"}, Suggestion: msgReferVender, Entropies: []Entropy{Entropy{Group: 0, Min: 4.0, Max: 6.0}}}, Rule{Description: "Twilio.API.Key", Expression: `(?im)^\s*\w*twilio\S*\s*[:=]+\s*['"]?(SK[0-9a-f]{32})(?:\s|$|"|')`, Tags: []string{share.SecretRegular, "twilio"}, Suggestion: msgReferVender, Entropies: []Entropy{Entropy{Group: 1, Min: 4.0, Max: 6.0}}}, Rule{Description: "Heroku.API.Key", Expression: `(?im)^\s*\w*wheroku\S*\s*[:=]+\s*['"]?([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})(?:\s|$|"|)'`, Tags: []string{share.SecretRegular, "Heroku"}, Suggestion: msgReferVender, Entropies: []Entropy{Entropy{Group: 1, Min: 4.0, Max: 6.0}}}, Rule{Description: "MailChimp.API.Key", Expression: `(?im)^\s*\w*(mailchimp|mc)\S*\s*[:=]+\s*['"]?([0-9a-f]{32}-us[0-9]{1,2})(?:\s|$|"|')`, Tags: []string{share.SecretRegular, "Mailchimp"}, Suggestion: msgReferVender, Entropies: []Entropy{Entropy{Group: 2, Min: 4.0, Max: 6.0}}}, Rule{Description: "Mailgun.API.Key", Expression: `(?im)^\s*\w*(mailgun|mg)\S*\s*[:=]+\s*['"]?(key-[0-9a-z]{32})(?:\s|$|"|')`, Tags: []string{share.SecretRegular, "Mailgun"}, Suggestion: msgReferVender, Entropies: []Entropy{Entropy{Group: 2, Min: 4.0, Max: 6.0}}}, Rule{Description: "Credential", Expression: `(?im)^\s*\w*(passwd|api_key|apikey|password|secret)\S*\s*[:=]+\s*['"]?([0-9a-z-_.\|!"$%&\/\(\)\?\^\'\\\+\-\*@~\[\];]{20,120})(?:\s|$|"|')`, Tags: []string{share.SecretRegular, "API", "generic"}, Suggestion: msgCloak, Entropies: []Entropy{Entropy{Group: 2, Min: 4.00, Max: 6.0}}}, Rule{Description: "Password.in.YML", Expression: `(?i)(password|passwd|api_token)\S{0,32}\s*:\s*(?-i)([0-9a-zA-Z\/+]{16,40}\b)`, ExprFName: `.*\.ya?ml`, Tags: []string{share.SecretProgram, "yaml", "yml"}, Suggestion: msgReferVender}, }
DefaultRules defines a default rule set
Functions ¶
func FindSecretsByFilePathMap ¶
func FindSecretsByFilePathMap(fileMap map[string]string, envVars []byte, config Config) ([]share.CLUSSecretLog, []share.CLUSSetIdPermLog, error)
For registry scan
func FindSecretsByRootpath ¶
func FindSecretsByRootpath(rootPath string, envVars []byte, config Config) ([]share.CLUSSecretLog, []share.CLUSSetIdPermLog, error)
$EnvVariables provides a common function for recursive search
func InspectFile ¶
func InspectFile(fullpath, reportPath string, config Config) ([]share.CLUSSecretLog, bool)
InspectFile provides a method to scan files
Types ¶
type Config ¶
type Config struct {
RuleList []Rule
Whitelist []FileType
Blacklist []FileType // most common
SkipFolder []FileType //
MaxFileSize int // default: 0 as 4kb, -1 as any size
MiniWeight float64 // minimum portion of a secret file, excluding x.509, <= 0.0: no minimum
TimeoutSec uint // in seconds
}
Config is a configuration is a composite struct of RuleList and file lists
type Entropy ¶
type Entropy struct {
Group int // index of capturing groups, 0: all
Min float64
Max float64 // 5.95 for key[56]1..0A..Z..az
}
Entropy represents an entropy range
type FileType ¶
type FileType struct {
Description string
Expression string
Regex *regexp.Regexp
MinEntropy float64
}
FileType is a file spefification
type Rule ¶
type Rule struct {
Description string
Expression string
ExprFName string
ExprFPath string
Regex *regexp.Regexp
FNameRegex *regexp.Regexp
FPathRegex *regexp.Regexp
Tags []string
Entropies []Entropy
Suggestion string
}
Rule is used in the Config struct as an array of Rules and is iterated over during an audit. Each rule will be checked.
Click to show internal directories.
Click to hide internal directories.