
Scanneur de secrets multi-source détectant les clés API, mots de passe et PII dans les dépôts Git, les buckets S3, les systèmes de fichiers, Confluence, JIRA, Slack et Google Docs à l'aide d'expressions régulières et d'analyse d'entropie.
Rusty Hog est un scanner de secrets construit en Rust pour la performance, et basé sur TruffleHog qui est écrit en Python. Rusty Hog fournit les binaires suivants :
Ce projet fournit un ensemble de scanners qui utilisent des expressions régulières pour tenter de détecter la présence d'informations sensibles, telles que des clés API, des mots de passe et des informations personnelles. Il inclut un ensemble d'expressions régulières par défaut, mais accepte également un objet JSON contenant vos expressions régulières personnalisées.
Téléchargez et décompressez le dernier ZIP
sur l'onglet des versions. Ensuite, exécutez chaque binaire avec -h pour voir l'utilisation.```shell script
wget https://github.com/newrelic/rusty-hog/releases/download/v1.0.11/rustyhogs-darwin-choctaw_hog-1.0.11.zip
unzip rustyhogs-darwin-choctaw_hog-1.0.11.zip
darwin_releases/choctaw_hog -h
## Comment exécuter avec DockerHub
Les images Docker Rusty Hog se trouvent sur la page DockerHub personnelle de l'auteur [ici](https://hub.docker.com/u/wetfeet2000)
Une image Docker est construite pour chaque Hog et pour chaque version. Ainsi, pour utiliser choctaw_hog, vous exécuteriez les commandes suivantes :```shell script
docker pull wetfeet2000/choctaw_hog:1.0.10
docker run -it --rm wetfeet2000/choctaw_hog:1.0.10 --help
cargo build --release. Les binaires se trouvent dans target/release.cargo doc --no-deps --open.cargo test.## Comment compiler sous Windows
Vous devrez compiler les binaires statiques d'OpenSSL et indiquer à Rust/Cargo où les trouver:```
mkdir \Tools
cd \Tools
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
.\bootstrap-vcpkg.bat
.\vcpkg.exe install openssl:x64-windows-static
$env:OPENSSL_DIR = 'C:\Tools\vcpkg\installed\x64-windows-static'
$env:OPENSSL_STATIC = 'Yes'
[System.Environment]::SetEnvironmentVariable('OPENSSL_DIR', $env:OPENSSL_DIR, [System.EnvironmentVariableTarget]::User)
[System.Environment]::SetEnvironmentVariable('OPENSSL_STATIC', $env:OPENSSL_STATIC, [System.EnvironmentVariableTarget]::User)
Vous pouvez maintenant suivre les instructions principales de construction listées ci-dessus.
Utilisez Homebrew pour obtenir les dépendances :``` brew install rpm2cpio FiloSottile/musl-cross/musl-cross
Puis exécutez `./build_lambda_macos.sh`.
Le script de build construira avec OpenSSL 3.0.12. Utilisez `export OPENSSL_BUILD_VER=3.0.12` pour le remplacer.
Le script de build construira avec les en-têtes du noyau Amazon Linux fournis par leur RPM ; `export AMAZON_KERNEL_HEADERS_RPM_URL=...` pour remplacer l'URL de téléchargement du RPM. (Rien n'empêche d'utiliser un RPM d'en-têtes linux d'une distribution différente, nous avons juste besoin des en-têtes linux pour construire openssl pour Linux)
Le script de build créera un répertoire build-deps dans la racine de votre source actuelle. Vous pouvez supprimer ce répertoire en toute sécurité avec `rm -rf`, mais il sera recréé lors de la prochaine exécution du script de build. Il effectuera également diverses vérifications de cohérence pour s'assurer que la build devrait fonctionner et si elles échouent, il pourrait vous demander de `rm -rf` ce répertoire de toute façon pour réessayer.
### Linux
Assurez-vous que `cross` est installé (`cargo install cross`), puis exécutez simplement `./build_lambda.sh`.
# Commandes
## Utilisation d'Anakamali Hog (GDoc Scanner)```
USAGE:
ankamali_hog [FLAGS] [OPTIONS] <GDRIVEID>
FLAGS:
--caseinsensitive Sets the case insensitive flag for all regexes
--entropy Enables entropy scanning
--oauthsecret Path to an OAuth secret file (JSON) ./clientsecret.json by default
--oauthtoken Path to an OAuth token storage file ./temp_token by default
--prettyprint Outputs the JSON in human readable format
-v, --verbose Sets the level of debugging information
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
-a, --allowlist <ALLOWLIST> Sets a custom allowlist JSON file
--default_entropy_threshold <DEFAULT_ENTROPY_THRESHOLD> Default entropy threshold (0.6 by default)
-o, --outputfile <OUTPUT> Sets the path to write the scanner results to (stdout by default)
--regex <REGEX> Sets a custom regex JSON file
ARGS:
<GDRIVEID> The ID of the Google drive file you want to scan
USAGE: berkshire_hog [FLAGS] [OPTIONS]
FLAGS: --caseinsensitive Sets the case insensitive flag for all regexes --entropy Enables entropy scanning --prettyprint Outputs the JSON in human readable format -r, --recursive Recursively scans files under the prefix -v, --verbose Sets the level of debugging information -h, --help Prints help information -V, --version Prints version information
OPTIONS: -a, --allowlist Sets a custom allowlist JSON file --default_entropy_threshold <DEFAULT_ENTROPY_THRESHOLD> Default entropy threshold (0.6 by default) -o, --outputfile Sets the path to write the scanner results to (stdout by default)
--profile <PROFILE> When using a configuration file, enables a non-default profile
--regex <REGEX> Sets a custom regex JSON file
ARGS: The location of a S3 bucket and optional prefix or filename to scan. This must be written in the form s3://mybucket[/prefix_or_file] Sets the region of the S3 bucket to scan
## Utilisation de Berkshire Hog (scanner S3 - Lambda)
Berkshire Hog est actuellement conçu pour être utilisé comme une fonction Lambda. Voici le flux de données de base :
<pre>
┌───────────┐ ┌───────┐ ┌────────────────┐ ┌────────────┐
│ S3 bucket │ ┌────────┐ │ │ │ Berkshire Hog │ │ S3 bucket │
│ (input) ─┼─┤S3 event├──▶│ SQS │────▶│ (Lambda) │────▶│ (output) │
│ │ └────────┘ │ │ │ │ │ │
└───────────┘ └───────┘ └────────────────┘ └────────────┘
</pre>
Pour exécuter Berkshire Hog de cette manière, configurez les éléments suivants :
1) Configurez le bucket d'entrée pour envoyer un « événement » à SQS pour chaque événement PUSH/PUT.
2) Configurez le sujet SQS pour accepter les événements provenant de S3, y compris les autorisations IAM.
3) Exécutez Berkshire Hog avec un accès IAM à SQS et S3.
## Utilisation de Choctaw Hog (scanner Git)```
USAGE:
choctaw_hog [FLAGS] [OPTIONS] <GITPATH>
FLAGS:
--caseinsensitive Sets the case insensitive flag for all regexes
--entropy Enables entropy scanning
--prettyprint Outputs the JSON in human readable format
-v, --verbose Sets the level of debugging information
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
--default_entropy_threshold <DEFAULT_ENTROPY_THRESHOLD> Default entropy threshold (4.5 by default)
--httpspass <HTTPSPASS> Takes a password for HTTPS-based authentication
--httpsuser <HTTPSUSER> Takes a username for HTTPS-based authentication
-o, --outputfile <OUTPUT> Sets the path to write the scanner results to (stdout by default)
--recent_days <RECENTDAYS> Filters commits to the last number of days (branch agnostic)
-r, --regex <REGEX> Sets a custom regex JSON file
--since_commit <SINCECOMMIT> Filters commits based on date committed (branch agnostic)
--sshkeypath <SSHKEYPATH> Takes a path to a private SSH key for git authentication, defaults to ssh-agent
--sshkeyphrase <SSHKEYPHRASE> Takes a passphrase to a private SSH key for git authentication, defaults to none
--until_commit <UNTILCOMMIT> Filters commits based on date committed (branch agnostic)
-a, --allowlist <ALLOWLIST> Sets a custom ALLOWLIST JSON file
ARGS:
<GITPATH> Sets the path (or URL) of the Git repo to scan. SSH links must include username (git@)
USAGE: duroc_hog [FLAGS] [OPTIONS]
FLAGS: --caseinsensitive Sets the case insensitive flag for all regexes --entropy Enables entropy scanning --norecursive Disable recursive scanning of all subdirectories underneath the supplied path --prettyprint Outputs the JSON in human readable format -z, --unzip Recursively scans archives (ZIP and TAR) in memory (dangerous) -v, --verbose Sets the level of debugging information -h, --help Prints help information -V, --version Prints version information
OPTIONS: -a, --allowlist Sets a custom allowlist JSON file --default_entropy_threshold <DEFAULT_ENTROPY_THRESHOLD> Default entropy threshold (0.6 by default) -o, --outputfile Sets the path to write the scanner results to (stdout by default) -r, --regex Sets a custom regex JSON file
ARGS: Sets the path of the directory or file to scan.
## Essex Hog (Confluence scanner) utilisation```
USAGE:
essex_hog [FLAGS] [OPTIONS] <PAGEID> <URL>
FLAGS:
--caseinsensitive Sets the case insensitive flag for all regexes
--entropy Enables entropy scanning
--prettyprint Outputs the JSON in human readable format
-v, --verbose Sets the level of debugging information
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
-a, --allowlist <ALLOWLIST> Sets a custom allowlist JSON file
--authtoken <BEARERTOKEN> Confluence basic auth bearer token (instead of user & pass)
--default_entropy_threshold <DEFAULT_ENTROPY_THRESHOLD> Default entropy threshold (0.6 by default)
-o, --outputfile <OUTPUT> Sets the path to write the scanner results to (stdout by default)
--password <PASSWORD> Confluence password (crafts basic auth header)
--regex <REGEX> Sets a custom regex JSON file
--username <USERNAME> Confluence username (crafts basic auth header)
ARGS:
<PAGEID> The ID (e.g. 1234) of the confluence page you want to scan
<URL> Base URL of Confluence instance (e.g. https://newrelic.atlassian.net/)
Jira secret scanner in Rust.
USAGE: gottingen_hog [FLAGS] [OPTIONS]
FLAGS: --caseinsensitive Sets the case insensitive flag for all regexes --entropy Enables entropy scanning --prettyprint Outputs the JSON in human readable format -v, --verbose Sets the level of debugging information -h, --help Prints help information -V, --version Prints version information
OPTIONS: -a, --allowlist Sets a custom allowlist JSON file --authtoken Jira basic auth bearer token (instead of user & pass) --default_entropy_threshold <DEFAULT_ENTROPY_THRESHOLD> Default entropy threshold (0.6 by default) --url Base URL of JIRA instance (e.g. https://jira.atlassian.net/) -o, --outputfile Sets the path to write the scanner results to (stdout by default) --password Jira password (crafts basic auth header) --regex Sets a custom regex JSON file --username Jira username (crafts basic auth header)
ARGS: The ID (e.g. PROJECT-123) of the Jira issue you want to scan
## Hante Hog (SLACK scanner) utilisation```
Slack secret scanner in Rust.
USAGE:
hante_hog [FLAGS] [OPTIONS] --authtoken <BEARERTOKEN> --channelid <CHANNELID> --url <SLACKURL>
FLAGS:
--caseinsensitive Sets the case insensitive flag for all regexes
--entropy Enables entropy scanning
--prettyprint Outputs the JSON in human readable format
-v, --verbose Sets the level of debugging information
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
-a, --allowlist <ALLOWLIST> Sets a custom allowlist JSON file
--authtoken <BEARERTOKEN> Slack basic auth bearer token
--channelid <CHANNELID>
The ID (e.g. C12345) of the Slack channel you want to scan
--default_entropy_threshold <DEFAULT_ENTROPY_THRESHOLD> Default entropy threshold (0.6 by default)
--latest <LATEST> End of time range of messages to include in search
--oldest <OLDEST> Start of time range of messages to include in search
-o, --outputfile <OUTPUT>
Sets the path to write the scanner results to (stdout by default)
--regex <REGEX> Sets a custom regex JSON file
--url <SLACKURL>
Base URL of Slack Workspace (e.g. https://[WORKSPACE NAME].slack.com)
L'option regex des scanners permet aux utilisateurs de fournir le chemin vers leur propre fichier JSON d'expressions régulières qui correspondent à des éléments sensibles. Tout fichier fourni remplace actuellement les expressions régulières par défaut fournies par SecretScanner, sans les ajouter. Le format attendu du fichier est un objet json unique.
Les clés doivent être des noms pour le type de secret que chaque entrée d'expression régulière détectera, car les clés seront utilisées pour les propriétés 'reason' produites en sortie par le scanner.
Chaque valeur doit être une chaîne contenant une [https://docs.rs/regex/1.3.9/regex/#syntax](expression régulière valide pour Rust) qui doit correspondre au type de secret décrit par sa clé correspondante.
Depuis la version 1.0.8, le moteur Rusty Hog prend également en charge les objets comme valeurs pour chaque secret. L'objet peut contenir l'ensemble des éléments suivants :
Plus le seuil est élevé, plus l'entropie requise dans le secret pour le considérer comme une correspondance est importante.
Un exemple de ce format se trouve ici :```json { "Generic Secret": { "pattern": "(?i)secret[\s[[:punct:]]]{1,4}[0-9a-zA-Z-]{16,64}[\s[[:punct:]]]?", "entropy_filter": true, "threshold": "0.6" }, "Slack Token": { "pattern": "(xox[p|b|o|a]-[0-9]{12}-[0-9]{12}-[0-9]{12}-[a-z0-9]{32})", "entropy_filter": true, "threshold": "0.6", "keyspace": "36", "make_ascii_lowercase": true }, "Google API Key": { "pattern": "AIza[0-9A-Za-z\-]{35}", "entropy_filter": true }, "PGP private key block": "-----BEGIN PGP PRIVATE KEY BLOCK-----" }
À partir de la version 1.0.11, le JSON regex par défaut actuellement utilisé est le suivant :```json
{
"Slack Token": "(xox[p|b|o|a]-[0-9]{12}-[0-9]{12}-[0-9]{12}-[a-z0-9]{32})",
"RSA private key": "-----BEGIN RSA PRIVATE KEY-----",
"SSH (DSA) private key": "-----BEGIN DSA PRIVATE KEY-----",
"SSH (EC) private key": "-----BEGIN EC PRIVATE KEY-----",
"PGP private key block": "-----BEGIN PGP PRIVATE KEY BLOCK-----",
"Amazon AWS Access Key ID": "AKIA[0-9A-Z]{16}",
"Amazon MWS Auth Token": "amzn\\.mws\\.[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}",
"Facebook Access Token": "EAACEdEose0cBA[0-9A-Za-z]+",
"Facebook OAuth": "(?i)facebook[\\s[[:punct:]]]{1,4}[0-9a-f]{32}[\\s[[:punct:]]]?",
"GitHub": "(?i)(github|access[[:punct:]]token)[\\s[[:punct:]]]{1,4}[0-9a-zA-Z]{35,40}",
"Generic API Key": {
"pattern": "(?i)(api|access)[\\s[[:punct:]]]?key[\\s[[:punct:]]]{1,4}[0-9a-zA-Z\\-_]{16,64}[\\s[[:punct:]]]?",
"entropy_filter": true,
"threshold": "0.6",
"keyspace": "guess"
},
"Generic Account API Key": {
"pattern": "(?i)account[\\s[[:punct:]]]?api[\\s[[:punct:]]]{1,4}[0-9a-zA-Z\\-_]{16,64}[\\s[[:punct:]]]?",
"entropy_filter": true,
"threshold": "0.6",
"keyspace": "guess"
},
"Generic Secret": {
"pattern": "(?i)secret[\\s[[:punct:]]]{1,4}[0-9a-zA-Z-_]{16,64}[\\s[[:punct:]]]?",
"entropy_filter": true,
"threshold": "0.6",
"keyspace": "guess"
},
"Google API Key": "AIza[0-9A-Za-z\\-_]{35}",
"Google Cloud Platform API Key": "AIza[0-9A-Za-z\\-_]{35}",
"Google Cloud Platform OAuth": "(?i)[0-9]+-[0-9A-Za-z_]{32}\\.apps\\.googleusercontent\\.com",
"Google Drive API Key": "AIza[0-9A-Za-z\\-_]{35}",
"Google Drive OAuth": "(?i)[0-9]+-[0-9A-Za-z_]{32}\\.apps\\.googleusercontent\\.com",
"Google (GCP) Service-account": "(?i)\"type\": \"service_account\"",
"Google Gmail API Key": "AIza[0-9A-Za-z\\-_]{35}",
"Google Gmail OAuth": "(?i)[0-9]+-[0-9A-Za-z_]{32}\\.apps\\.googleusercontent\\.com",
"Google OAuth Access Token": "ya29\\.[0-9A-Za-z\\-_]+",
"Google YouTube API Key": "AIza[0-9A-Za-z\\-_]{35}",
"Google YouTube OAuth": "(?i)[0-9]+-[0-9A-Za-z_]{32}\\.apps\\.googleusercontent\\.com",
"Heroku API Key": "[h|H][e|E][r|R][o|O][k|K][u|U][\\s[[:punct:]]]{1,4}[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}",
"MailChimp API Key": "[0-9a-f]{32}-us[0-9]{1,2}",
"Mailgun API Key": "(?i)key-[0-9a-zA-Z]{32}",
"Credentials in absolute URL": "(?i)((https?|ftp)://)(([a-z0-9$_\\.\\+!\\*'\\(\\),;\\?&=-]|%[0-9a-f]{2})+(:([a-z0-9$_\\.\\+!\\*'\\(\\),;\\?&=-]|%[0-9a-f]{2})+)@)((([a-z0-9]\\.|[a-z0-9][a-z0-9-]*[a-z0-9]\\.)*[a-z][a-z0-9-]*[a-z0-9]|((\\d|[1-9]\\d|1\\d{2}|2[0-4][0-9]|25[0-5])\\.){3}(\\d|[1-9]\\d|1\\d{2}|2[0-4][0-9]|25[0-5]))(:\\d+)?)(((/+([a-z0-9$_\\.\\+!\\*'\\(\\),;:@&=-]|%[0-9a-f]{2})*)*(\\?([a-z0-9$_\\.\\+!\\*'\\(\\),;:@&=-]|%[0-9a-f]{2})*)?)?)?",
"PayPal Braintree Access Token": "(?i)access_token\\$production\\$[0-9a-z]{16}\\$[0-9a-f]{32}",
"Picatic API Key": "(?i)sk_live_[0-9a-z]{32}",
"Slack Webhook": "(?i)https://hooks.slack.com/services/T[a-zA-Z0-9_]{8}/B[a-zA-Z0-9_]{8}/[a-zA-Z0-9_]{24}",
"Stripe API Key": "(?i)sk_live_[0-9a-zA-Z]{24}",
"Stripe Restricted API Key": "(?i)rk_live_[0-9a-zA-Z]{24}",
"Square Access Token": "(?i)sq0atp-[0-9A-Za-z\\-_]{22}",
"Square OAuth Secret": "(?i)sq0csp-[0-9A-Za-z\\-_]{43}",
"Twilio API Key": "SK[0-9a-fA-F]{32}",
"Twitter Access Token": "(?i)twitter[\\s[[:punct:]]]{1,4}[1-9][0-9]+-[0-9a-zA-Z]{40}",
"Twitter OAuth": "(?i)twitter[\\s[[:punct:]]]{1,4}['|\"]?[0-9a-zA-Z]{35,44}['|\"]?",
"New Relic Partner & REST API Key": "[\\s[[:punct:]]][A-Fa-f0-9]{47}[\\s[[:punct:]][[:cntrl:]]]",
"New Relic Mobile Application Token": "[\\s[[:punct:]]][A-Fa-f0-9]{42}[\\s[[:punct:]][[:cntrl:]]]",
"New Relic Synthetics Private Location": "(?i)minion_private_location_key",
"New Relic Insights Key (specific)": "(?i)insights[\\s[[:punct:]]]?(key|query|insert)[\\s[[:punct:]]]{1,4}\\b[\\w-]{32,40}\\b",
"New Relic Insights Key (vague)": "(?i)(query|insert)[\\s[[:punct:]]]?key[\\s[[:punct:]]]{1,4}b[\\w-]{32,40}\\b",
"New Relic License Key": "(?i)license[\\s[[:punct:]]]?key[\\s[[:punct:]]]{1,4}\\b[\\w-]{32,40}\\b",
"New Relic Internal API Key": "(?i)nr-internal-api-key",
"New Relic HTTP Auth Headers and API Key": "(?i)(x|newrelic|nr)-?(admin|partner|account|query|insert|api|license)-?(id|key)[\\s[[:punct:]]]{1,4}\\b[\\w-]{32,47}\\b",
"New Relic API Key Service Key (new format)": "(?i)NRAK-[A-Z0-9]{27}",
"New Relic APM License Key (new format)": "(?i)[a-f0-9]{36}NRAL",
"New Relic APM License Key (new format, region-aware)": "(?i)[a-z]{2}[0-9]{2}xx[a-f0-9]{30}NRAL",
"New Relic REST API Key (new format)": "(?i)NRRA-[a-f0-9]{42}",
"New Relic Admin API Key (new format)": "(?i)NRAA-[a-f0-9]{27}",
"New Relic Insights Insert Key (new format)": "(?i)NRII-[A-Za-z0-9-_]{32}",
"New Relic Insights Query Key (new format)": "(?i)NRIQ-[A-Za-z0-9-_]{32}",
"New Relic Synthetics Private Location Key (new format)": "(?i)NRSP-[a-z]{2}[0-9]{2}[a-f0-9]{31}",
"Email address": "(?i)\\b(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*)@[a-z0-9][a-z0-9-]+\\.(com|de|cn|net|uk|org|info|nl|eu|ru)([\\W&&[^:/]]|\\A|\\z)",
"New Relic Account IDs in URL": "(newrelic\\.com/)?accounts/\\d{1,10}/",
"Account ID": "(?i)account[\\s[[:punct:]]]?id[\\s[[:punct:]]]{1,4}\\b[\\d]{1,10}\\b",
"Salary Information": "(?i)(salary|commission|compensation|pay)([\\s[[:punct:]]](amount|target))?[\\s[[:punct:]]]{1,4}\\d+"
}
Les scanneurs proposent une fonctionnalité d’allowlist. Celle-ci vous permet de spécifier une liste d’expressions régulières pour chaque motif qui sera ignoré par le scanneur. Vous pouvez désormais fournir en option une liste d’expressions régulières qui sont également évaluées par rapport au chemin du fichier.
Le format de ce fichier d’allowlist doit être un unique objet JSON. Chaque clé de l’allowlist doit correspondre à une clé du fichier JSON d’expressions régulières, et la valeur peut être l’une des deux choses suivantes :
patterns) et éventuellement une seconde clé (paths).De plus, vous pouvez spécifier la clé <GLOBAL> qui est évaluée pour tous les motifs.
Voici l’allowlist par défaut incluse dans tous les scans :```json { "Email address": { "patterns": [ "(?i)@newrelic.com", "(?i)noreply@", "(?i)test@" ], "paths": [ "(?i)authors", "(?i)contributors", "(?i)license", "(?i)maintainers", "(?i)third_party_notices" ] }, "Credentials in absolute URL": { "patterns": [ "(?i)(https?://)?user:pass(word)?@" ] }, "New Relic API Key Service Key (new format)": { "patterns": [ "NRAK-123456789ABCDEFGHIJKLMNOPQR" ] }, "Generic API Key": { "patterns": [ "(?i)sanitizeAPIKeyForLogging" ] }, "New Relic License Key": { "patterns": [ "(?i)bootstrap_newrelic_admin_license_key", "(?i)xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "(?i)YOUR_NEW_RELIC_LICENSE_KEY__LICENSE", "(?i)YOUR_NEW_RELIC_APPLICATION_TOKEN" ] }, "Generic Secret": { "patterns": [ "(?i)secret:NewRelicLicenseKeySecret" ] }, "": [ "(?i)example", "(?i)fake", "(?i)replace", "(?i)deadbeef", "(?i)ABCDEFGHIJKLMNOPQRSTUVWX", "1234567890" ] }
Sachez qu'il s'agit de chaînes, pas d'expressions régulières, et les clés de cette liste d'autorisation doivent être une clé dans le json des expressions régulières.
Les clés sont sensibles à la casse.
# Informations sur le projet
## Licence open source
Ce projet est distribué sous la [licence Apache 2](https://github.com/newrelic/rusty-hog/blob/HEAD/LICENSE).
## Support
New Relic a open-sourcé ce projet. Ce projet est fourni EN L'ÉTAT, SANS GARANTIE NI ASSISTANCE, bien que vous puissiez signaler des problèmes et contribuer au projet ici sur GitHub.
_Veuillez ne pas signaler de problèmes avec ce logiciel au Support technique global de New Relic._
## Communauté
New Relic héberge et modère un forum en ligne où les clients peuvent interagir avec les employés de New Relic ainsi qu'avec d'autres clients pour obtenir de l'aide et partager les meilleures pratiques. Comme tous les projets open source officiels de New Relic, il existe un sujet communautaire associé dans le Hub des explorateurs New Relic. Vous pouvez trouver le sujet/fil de discussion de ce projet ici :
https://discuss.newrelic.com/t/rusty-hog-multi-platform-secret-key-scanner/90117
## Problèmes / demandes d'amélioration
Soumettez les problèmes et demandes d'amélioration dans l'[onglet Issues de ce dépôt](https://raw.githubusercontent.com/newrelic/issues). Veuillez rechercher et examiner les issues ouvertes existantes avant de soumettre une nouvelle issue.
## Contribution
Les contributions sont les bienvenues (et si vous soumettez une demande d'amélioration, attendez-vous à être invité à y contribuer vous-même). Veuillez consulter notre [Guide du contributeur](https://github.com/newrelic/rusty-hog/blob/HEAD/CONTRIBUTING.md).
Gardez à l'esprit que lorsque vous soumettez votre pull request, vous devrez signer le CLA via le clic en utilisant CLA-Assistant. Si vous souhaitez exécuter notre CLA corporatif, ou si vous avez des questions, veuillez nous envoyer un e-mail à [email protected].
## Feuille de route des fonctionnalités
- 1.1 : Fonctionnalités Enterprise
- [ ] Prise en charge des fichiers de configuration (au lieu des arguments en ligne de commande)
- [ ] Prise en charge des variables d'environnement au lieu des arguments CLI
- [ ] Multithreading
- [ ] Meilleure détection du contexte et filtrage des faux positifs (GitHound, apprentissage automatique)
- [ ] Utiliser Rusoto au lieu de s3-rust
- [x] Ajout d'un scanner JIRA
- [x] Ajout d'un scanner de système de fichiers et d'archives
- [ ] Utiliser les fonctionnalités de Rust pour réduire les dépendances de compilation ?
- 1.2 : Intégration avec des scripts et interfaces utilisateur plus vastes
- [ ] Prise en charge de l'API GitHub pour la gestion de grandes organisations
- [ ] Analyser tous les dépôts pour une liste d'utilisateurs
- [x] Analyser tous les dépôts d'une organisation
- [ ] Générer un rapport Web ou une interface Web. Prendre en charge la génération d'un « état de sauvegarde » depuis l'interface.
- [ ] Modèle agent/gestionnaire
- [ ] Processus de planification (bloqué par la prise en charge de l'état de sauvegarde)
## Que signifie le nom ?
TruffleHog est considéré comme le scanner de secrets original / de facto standard. Je construis
une suite d'outils de scan de secrets pour diverses plateformes basée sur TruffleHog
et j'avais besoin d'un système de nommage, j'ai donc commencé par le haut de la
[liste des races de porcs](https://en.wikipedia.org/wiki/List_of_pig_breeds) de Wikipédia.
Ainsi, chaque nom d'outil est une race de porc commençant par « A » et en progressant.