ソースコード、Web URL、CI/CD全体をカバーする170以上のルールで認証情報とシークレットを検出し、ベンダーAPIに対して検証し、SARIF、JSONL、HTML、PDF、またはExcelレポートを生成します。
ライブ検証、ソースマップ解析、CIネイティブレポーティングを備えたDAST + SASTシークレットスキャナ、さらにSAST脆弱性・設定不備エンジン。
ソースツリー、稼働中のWebアプリ、CIログに漏洩した認証情報を検出します。ベンダーAPIに対してライブ検証します。同じソースツリーをコード脆弱性と設定不備についてスキャンします。コードスキャニングダッシュボード向けにSARIF、SOARパイプライン向けにJSONL、クライアントレポート向けにExcel/PDF/HTMLを出力します。
競合の多い分野(gitleaks、trufflehog、detect-secrets)はgitツリー上のSASTに優れていますが、そこで止まってしまいます — しかもシークレットのみをスキャンします。scan4secretsはそれらがカバーしないギャップを埋めます。シークレット検出に加えて、ライブWeb DAST、ライブベンダー検証、コード脆弱性・設定不備エンジンを追加します:
| 機能 | gitleaks | trufflehog | detect-secrets | scan4secrets |
|---|---|---|---|---|
| SASTシークレット検出 | Y | Y | Y | Y |
| DASTライブWebクロール | - | - | - | Y |
| JSソースマップ解析 | - | - | - | Y |
| JSエンドポイント抽出 | - | - | - | Y |
| HTTPヘッダーシークレットスキャン | - | - | - | Y |
| ライブトークン検証 | - | Y | - | Y |
| SARIF出力 | Y | - | - | Y |
| Excel / PDF / HTMLレポート | - | - | - | Y |
| エントロピーゲート + 許可リスト | Y | Y | Y | Y |
| YAMLルールスキーマ | - (TOML) | - | - | Y |
| 認証付きDAST (cookie/header/proxy) | n/a | n/a | n/a | Y |
| SAST脆弱性・設定不備検出 | - | - | - | Y |
これはgitleaksの補完であり、置き換えではありません。両方を使いましょう: git履歴のSASTにはpre-commit + CIでgitleaks、ステージング/本番に対するライブDASTにはscan4secretsを。
# from source
git clone https://github.com/m14r41/scan4secrets
cd scan4secrets
pip install -e .
# OR via pipx
pipx install git+https://github.com/m14r41/scan4secrets
# OR Docker
docker run --rm -v $(pwd):/scan ghcr.io/m14r41/scan4secrets:latest --path /scan
インストール後、scan4secretsコマンドがPATHに追加されます。
# SAST: scan a local directory
scan4secrets --path /code
# DAST: crawl a live target
scan4secrets --url https://staging.example.com --threads 32
# DAST runs ALL bundled wordlists by default (1279 paths: /.env, /wp-config.php, /backup.zip, ...)
scan4secrets --url https://target.com
# Use YOUR OWN wordlist file (replaces the bundled set)
scan4secrets --url https://target.com --wordlist /path/to/my-paths.txt
# Combine multiple custom wordlist files
scan4secrets --url https://target.com --wordlist seclists/Common.txt internal-paths.txt
# Restrict to specific bundled wordlists by stem
scan4secrets --url https://wp.example.com --wordlist-only wordpress common env
# Turn wordlist seeding off entirely (only follow live links)
scan4secrets --url https://target.com --no-wordlist
# Full audit with verification + HTML report
scan4secrets --path . --url https://app.example.com \
--verify --report html sarif json \
--output reports/audit-$(date +%F)
# Authenticated DAST with proxy (works with Burp / ZAP)
scan4secrets --url https://app.example.com \
--cookie "session=abc123" \
--header "X-Tenant: acme" \
--proxy http://127.0.0.1:8080
# CI gate (exit 1 if anything >= high)
scan4secrets --path . --report sarif --fail-on high \
--output reports/scan
# SAST: secrets + code vulnerabilities / misconfigurations
scan4secrets --path ./src --misconfig
# SAST: vulnerabilities / misconfigurations only (skip secret detection)
scan4secrets --path ./src --misconfig-only
--misconfig)シークレットに加えて、scan4secretsはコード脆弱性と設定不備のためのSASTエンジンを搭載しています。シークレットと脆弱性の両方をスキャンするには--misconfigを、脆弱性のみをスキャンするには--misconfig-onlyを追加します:
scan4secrets --path ./src --misconfig # secrets + vulnerabilities
scan4secrets --path ./src --misconfig-only # vulnerabilities only
scan4secrets --path . --misconfig --report html --output report
誤検知を低く抑えるためのテイント/コンテキストゲーティングを用いて、以下を検出します — SQLインジェクション、NoSQLインジェクション、OSコマンドインジェクション、コードインジェクション (eval)、SSTI、XXE、安全でないデシリアライゼーション、LFI / パストラバーサル、LDAP & XPathインジェクション、SSRF、オープンリダイレクト、CORS設定不備、CSRF無効化、プロトタイプ汚染、XSS (11のテンプレートエンジンにわたる反射型/蓄積型/DOM型: EJS、Handlebars、Pug、Jinja、Thymeleaf、Razor、Blade、ERB、Vue、Angular、React)、弱い暗号 (DES/RC4/ECB/静的IV/弱いRSA)、安全でない乱数、JWTの欠陥 (alg:none、アルゴリズム混同、ハードコードされた署名シークレット、検証無効化)、TLSバイパス、タイミング安全でないシークレット比較、SAML署名不要、ハードコードされた認証情報、機密データのログ出力、IaC/設定の不備 (Terraform、Kubernetes、Dockerfile、GitHub Actions、ASP.NET web.config、WCF/SOAP)。
対応言語: python、node、javascript、typescript、react、php、ruby、go、java、kotlin、csharp/.NET、sql、さらにXML/WSDL、JSP、Terraform/HCL、Kubernetes YAML、Dockerfile。
各脆弱性の検出結果には豊富な記録が付随します: 脆弱性名、重大度、説明、証拠 (file:line)、脆弱なコード、安全なコード、修復方法、技術的影響、ビジネス影響、CWE + OWASP Top-10マッピング。
行単位のエンジンに加えて、ファイル全体のパスが行スキャナが見逃すシークレットを捕捉します: ネストされたXMLタグ (<SMS_API_KEY><value>…</value></SMS_API_KEY>)、分割された<key>/<value>ペア、JSONのキー/値オブジェクト、複数行のYAML/properties、Base64エンコードされたシークレット。また、エントロピーゲートの盲点も塞ぎます — 認証情報名を持つ代入 (例: AM_CLIENT_SECRET=…) は名前シグナルでエントロピー下限なしにフラグが立てられるため、実際の低エントロピーシークレットが黙って破棄されなくなります。
合計416ルール — 193のシークレットルール + 223の脆弱性・設定不備ルール。
シークレットルールの対象:
完全なリファレンスとカスタムルールの追加方法はdocs/rules-engine.mdを参照してください。
--verifyを指定すると、scan4secretsは検出されたトークンごとにベンダーAPIへ1回のHTTPリクエストを行い、その認証情報がまだライブかどうかを確認します:
| ルール | プローブ | 成功 |
|---|---|---|
github-pat-classic / github-pat-fine-grained | GET https://api.github.com/user | HTTP 200 |
stripe-secret-live | GET https://api.stripe.com/v1/charges?limit=1 | HTTP 200 |
slack-bot-token | POST https://slack.com/api/auth.test | HTTP 200 |
openai-key | GET https://api.openai.com/v1/models | HTTP 200 |
各検出結果はすべての出力形式でverified=true|false|nullを持ちます。検証済みトークンはインシデント級の証拠であり、未検証のものは仮説です。