
公開コードリポジトリに誤ってシークレット(ユーザー名とパスワード、API トークン、秘密鍵など)を漏洩させることは、開発者とセキュリティチームにとって最大の悪夢です。不正行為者は常に公開コードリポジトリをスキャンしてこれらのシークレットを見つけ、システムへの足がかりを得ようとします。コードはかつてないほど接続されているため、これらのシークレットは多くの場合、クラウドインフラストラクチャ、データベースサーバー、決済ゲートウェイ、ファイルストレージシステムなど、プライベートで機密性の高いデータへのアクセスを提供します。
shhgit は、コードリポジトリを常にスキャンしてこれらのシークレットを発見し、警告することができます。
2つのオプションがあります。最初のオプションをお勧めします。これにより、shhgit のライブ Web インターフェースにアクセスできます。コマンドラインインターフェースのみが必要な場合は、2番目のオプションを使用してください。
git clone https://github.com/eth0izzle/shhgit.gitdocker-compose buildconfig.yaml ファイルを編集します(例:GitHub トークンの追加)docker-compose up注: この方法には shhgit Web インターフェースは含まれません
go get github.com/eth0izzle/shhgit で shhgit を自動的にダウンロードしてビルドします。または、このリポジトリをクローンして go build -v -i を実行することもできます。config.yaml ファイルを編集し、以下の使用方法を参照してください。shhgit は 2 つの方法で動作します: GitHub、Gist、GitLab、BitBucket の公開 API を利用するか、ローカルディレクトリのファイルを処理します。
デフォルトでは、shhgit は前者の「公開モード」で実行されます。GitHub と Gist の場合は、アクセストークンを取得して提供する必要があります(このガイドを参照。スコープや権限は必要ありません)。そして config.yaml の github_access_tokens の下に配置します。GitLab と BitBucket は API トークンを必要としません。
また、署名を使用せずに、独自のカスタム検索クエリで shhgit を使用することもできます。たとえば、すべての AWS キーを見つけるには shhgit --search-query AWS_ACCESS_KEY_ID=AKIA を使用します。ローカルモードで実行するには(そして CI パイプラインに統合する場合も)、--local フラグを渡します(以下の使用方法を参照)。
--clone-repository-timeout
リポジトリのクローンにかかる最大時間(秒)(デフォルト: 10)
--config-path
config.yaml を検索するディレクトリを指定。設定しない場合、shhgit バイナリのディレクトリとカレントディレクトリから検索します
--csv-path
発見したシークレットを CSV に書き出す場合のパスを指定。空白の場合は無効
--debug
デバッグ情報を出力
--entropy-threshold
ファイル内の高エントロピー文字列を検出。しきい値が高いほどシークレットらしくなり、低いほど誤検出が増える。0 に設定するとエントロピーチェックを無効にする(デフォルト: 5.0)
--local
スキャンするローカルディレクトリ(絶対パス)を指定。指定されたディレクトリのみを再帰的にスキャン。ローカル実行では GitHub トークンは不要
--maximum-file-size
処理する最大ファイルサイズ(KB)(デフォルト: 512)
--maximum-repository-size
ダウンロードして処理する最大リポジトリサイズ(KB)(デフォルト: 5120)
--minimum-stars
このスター数以上のリポジトリのみクローン。0 に設定するとスター数を無視(デフォルト: 0)
--path-checks
false に設定するとファイル名/パス署名チェックを無効(つまり正規表現パターンのみ一致)(デフォルト: true)
--process-gists
Gist をリアルタイムで監視して処理。false に設定すると無効(デフォルト: true)
--search-query
署名を無視し、この文字列を含むファイルをフィルタリングする検索文字列を指定(正規表現対応)
--silent
エラー以外のすべての出力を抑制
--temp-directory
リポジトリ/一致結果を保存するディレクトリ(デフォルト: "%temp%\shhgit")
--threads
使用する同時スレッド数(デフォルト: 論理 CPU 数)
config.yaml ファイルには 7 つの要素があります。デフォルトが提供されています。
github_access_tokens: # 少なくとも1つのトークンを指定
- 'token one'
- 'token two'
webhook: '' # POST する Webhook の URL
webhook_payload: '' # Webhook URL に POST するペイロード
blacklisted_strings: [] # 無視する文字列のリスト
blacklisted_extensions: [] # 無視する拡張子のリスト
blacklisted_paths: [] # 無視するパスのリスト
blacklisted_entropy_extensions: [] # エントロピーチェックで追加で無視する拡張子
signatures: # チェックする署名のリスト
- part: '' # filename、extension、path、または contents
match: '' # 単純なテキスト比較(正規表現要素がない場合)
regex: '' # 正規表現パターン(一致要素がない場合)
name: '' # 署名の名前
shhgit には 150 の署名が付属しています。config.yaml ファイルを編集して削除または追加できます。
1Password パスワードマネージャデータベースファイル, Amazon MWS 認証トークン, Apache htpasswd ファイル, Apple キーチェーンデータベースファイル, Artifactory, AWS アクセスキー ID, AWS アクセスキー ID 値, AWS アカウント ID, AWS CLI 認証情報ファイル, AWS cred ファイル情報, AWS シークレットアクセスキー, AWS セッショントークン, Azure サービス構成スキーマファイル, Carrierwave 設定ファイル, Chef Knife 設定ファイル, Chef 秘密鍵, CodeClimate, 自動ログインプロセスの設定ファイル, 秘密鍵を含む, 秘密鍵を含む, cPanel バックアップ ProFTPd 認証情報ファイル, Day One ジャーナルファイル, DBeaver SQL データベースマネージャ設定ファイル, DigitalOcean doctl コマンドラインクライアント設定ファイル, Django 設定ファイル, Docker 設定ファイル, Docker レジストリ認証ファイル, 環境設定ファイル, esmtp 設定, Facebook アクセストークン, Facebook クライアント ID, Facebook シークレットキー, FileZilla FTP 設定ファイル, FileZilla FTP 最近のサーバーファイル, Firefox 保存済みパスワードデータベース, git-credential-store ヘルパー認証情報ファイル, Git 設定ファイル, GitHub Hub コマンドラインクライアント設定ファイル, Github キー, GNOME キーリングデータベースファイル, GnuCash データベースファイル, Google (GCM) サービスアカウント, Google Cloud API キー, Google OAuth アクセストークン, Google OAuth キー, Heroku API キー, Heroku 設定ファイル, Hexchat/XChat IRC クライアントサーバーリスト設定ファイル, 高エントロピー文字列, HockeyApp, Irssi IRC クライアント設定ファイル, Java キーストアファイル, Jenkins publish over SSH プラグインファイル, Jetbrains IDE 設定, KDE ウォレットマネージャデータベースファイル, KeePass パスワードマネージャデータベースファイル, Linkedin クライアント ID, LinkedIn シークレットキー, Little Snitch ファイアウォール設定ファイル, ログファイル, MailChimp API キー, MailGun API キー, Microsoft BitLocker 回復キーファイル, Microsoft BitLocker Trusted Platform Module パスワードファイル, Microsoft SQL データベースファイル, Microsoft SQL サーバーコンパクトデータベースファイル, Mongoid 設定ファイル, Mutt メールクライアント設定ファイル, MySQL クライアントコマンド履歴ファイル, bcrypt ハッシュを含む MySQL ダンプ, SMTP 認証情報を含む netrc, ネットワークトラフィックキャプチャファイル, NPM 設定ファイル, NuGet API キー, OmniAuth 設定ファイル, OpenVPN クライアント設定ファイル, Outlook チーム, Password Safe データベースファイル, PayPal/Braintree アクセストークン, PHP 設定ファイル, Picatic API キー, Pidgin チャットクライアントアカウント設定ファイル, Pidgin OTR 秘密鍵, PostgreSQL クライアントコマンド履歴ファイル, PostgreSQL パスワードファイル, 潜在的な暗号秘密鍵, 潜在的な Jenkins 認証情報ファイル, 潜在的な jrnl ジャーナルファイル, 潜在的な Linux passwd ファイル, 潜在的な Linux shadow ファイル, 潜在的な MediaWiki 設定ファイル, 潜在的な秘密鍵 (.asc), 潜在的な秘密鍵 (.p21), 潜在的な秘密鍵 (.pem), 潜在的な秘密鍵 (.pfx), 潜在的な秘密鍵 (.pkcs12), 潜在的な PuTTYgen 秘密鍵, 潜在的な Ruby On Rails データベース設定ファイル, 秘密 SSH 鍵 (.dsa), 秘密 SSH 鍵 (.ecdsa), 秘密 SSH 鍵 (.ed25519), 秘密 SSH 鍵 (.rsa), 公開 SSH 鍵, Python バイトコードファイル, Recon-ng Web 偵察フレームワーク API キーデータベース, Atom 用 remote-sync, リモートデスクトップ接続ファイル, Robomongo MongoDB マネージャ設定ファイル, Rubygems 認証情報ファイル, Ruby IRB コンソール履歴ファイル, Ruby on Rails マスターキー, Ruby on Rails シークレット, Ruby On Rails シークレットトークン設定ファイル, S3cmd 設定ファイル, Salesforce 認証情報, Sauce Token, Sequel Pro MySQL データベースマネージャブックマークファイル, Atom 用 sftp-deployment, Atom 用 sftp-deployment, SFTP 接続設定ファイル, シェルコマンドエイリアス設定ファイル, シェルコマンド履歴ファイル, シェル設定ファイル (.bashrc, .zshrc, .cshrc), シェル設定ファイル (.exports), シェル設定ファイル (.extra), シェル設定ファイル (.functions), シェルプロファイル設定ファイル, Slack トークン, Slack Webhook, SonarQube Docs API キー, SQL データダンプファイル, SQL ダンプファイル, SQLite3 データベースファイル, SQLite データベースファイル, Square アクセストークン, Square OAuth シークレット, SSH 設定ファイル, SSH パスワード, Stripe API キー, T コマンドライン Twitter クライアント設定ファイル, Terraform 変数設定ファイル, Tugboat DigitalOcean 管理ツール設定, Tunnelblick VPN 設定ファイル, Twilo API キー, Twitter クライアント ID, Twitter シークレットキー, URI 内のユーザー名とパスワード, Ventrilo サーバー設定ファイル, VSCode 用 vscode-sftp, Windows BitLocker フルボリューム暗号化データファイル, WP-Config
git checkout -b my-new-featuregit commit -am 'Add some feature'git push origin my-new-featureこのツールの使用方法について、私は一切の責任を負いません。良識を持って行動してください。
MIT。 LICENSE を参照。