
高性能シークレットスキャナ。CLI、Goライブラリ、Burp Suite拡張機能、Chrome拡張機能。487個の検出ルールとライブな認証情報検証。
Titus は、ソースコード、ファイル、git 履歴の中から認証情報、API キー、トークンを検出する高性能シークレットスキャナです。数百のサービスと認証情報タイプをカバーする 487 個の検出ルールを搭載しており、それらは NoseyParker と Kingfisher から取り入れられています。Titus は CLI、Go ライブラリ、Burp Suite 拡張、Chrome ブラウザ拡張として動作し、そのすべてが同じ検出エンジンとルールセットを共有しています。
セキュリティエンジニア、ペネトレーションテスター、DevSecOps チーム向けに設計された Titus は、Hyperscan/Vectorscan による高速化された正規表現マッチングとライブ認証情報検証を組み合わせ、コードベース全体にわたって漏洩したシークレットを発見・検証します。
Releases ページからビルド済みバイナリをダウンロードするか、ソースからビルドしてください:```bash make build
バイナリは `dist/titus` にあります。
## クイックスタート```bash
# Scan a file for secrets
titus scan path/to/file.txt
# Scan a directory for leaked credentials
titus scan path/to/directory
# Scan a public GitHub repository (no token needed)
titus scan github.com/org/repo
# Scan a public GitLab project (no token needed)
titus scan gitlab.com/namespace/project
# Scan git history for secrets in past commits
titus scan --git path/to/repo
# Scan a Docker / OCI image (pulled from a registry — no docker daemon required)
titus scan --docker alpine:latest
# Validate detected secrets against source APIs
titus scan path/to/code --validate
結果はデータストア(デフォルトでは titus.ds)に書き込まれ、コンソールに出力されます。
URL を指定してパブリックリポジトリを直接スキャンできます — API トークンは不要です:```bash
titus scan github.com/kubernetes/kubernetes
titus scan gitlab.com/gitlab-org/cli
titus scan https://github.com/org/repo titus scan https://gitlab.com/namespace/project.git
組織全体またはユーザー全体のスキャンには、専用のサブコマンドを使用します:```bash
# Scan all public repos in a GitHub org
titus github --org kubernetes
# Scan all repos in a GitHub org with a token (private repos + higher rate limits)
titus github --org kubernetes --token $GITHUB_TOKEN
# Scan all repos for a GitHub user
titus github --user octocat
# Scan all projects in a GitLab group
titus gitlab scan --group mygroup --token $GITLAB_TOKEN
# Scan a single repo with git history (finds deleted secrets)
titus github owner/repo --git
トークンはパブリックリポジトリでは任意です。プライベートリポジトリへのアクセスとより高いAPIレート制限には、GITHUB_TOKEN または GITLAB_TOKEN を設定する(あるいは --token を使用する)してください。
コンテナイメージを直接スキャンします — dockerデーモンも docker バイナリも不要です。Titusは任意のOCIレジストリからHTTPS経由でイメージを直接取得するか(~/.docker/config.json の認証情報を使用)、ローカルの docker save tarballまたはOCIイメージレイアウトディレクトリからイメージを読み取ります。その後、イメージのマニフェスト/設定メタデータと、すべてのレイヤー内のすべての通常ファイルをスキャンします。これには、後のレイヤーによって削除された下位レイヤーのファイルも含まれます(イメージ履歴からシークレットが復元可能なまま残ることがあるため)。```bash
titus scan --docker alpine:latest titus scan docker://ghcr.io/owner/repo:tag
titus scan --docker ./my-app.tar
titus scan --docker ./img/
認証には既存の Docker / Podman 設定(`~/.docker/config.json`、`${XDG_RUNTIME_DIR}/containers/auth.json`)が使用されます。新たなログインが必要なプライベートレジストリは、まず `docker login`(または `podman login`、あるいは `crane auth login`)で認証しておく必要があります — titus は認証情報の入力を求めません。
### スキャン結果の表示
`report` を使用して、以前のスキャンから検出結果を再読み込みします:```bash
# Human-readable summary of detected secrets
titus report
# JSON output for programmatic processing
titus report --format json
# SARIF output for CI/CD integration with GitHub Advanced Security
titus report --format sarif
# Report from a specific datastore
titus report --datastore path/to/titus.ds
スキャン時に --format で出力形式を制御することもできます:```bash
titus scan path/to/code --format json
### 検出されたシークレットの検証
スキャン中に `--validate` を渡すと、検出されたシークレットをそのソース API に対して検証できます:```bash
titus scan path/to/code --validate
検証は並行して実行され(デフォルトでは4ワーカー、--validate-workersで設定可能)、各検出結果をconfirmed、denied、またはunknownとしてマークします。
titus rules list
titus scan path/to/code --rules-include "aws,gcp"
titus scan path/to/code --rules-exclude "kingfisher.generic"
titus scan path/to/code --rules path/to/custom-rules.yaml
titus scan path/to/code --include-noisy
### バイナリファイルからのシークレット抽出
Titusはバイナリファイル形式からテキストを抽出し、その内容からシークレットをスキャンできます:```bash
# Extract and scan all supported binary formats
titus scan path/to/files --extract=all
# Target specific formats
titus scan path/to/files --extract=xlsx,docx,pdf,zip
対応フォーマットには、Office ドキュメント(xlsx、docx、pptx、odp、ods、odt)、PDF、Jupyter ノートブック、SQLite データベース、メール(eml、rtf)、アーカイブ(zip、tar、tar.gz、jar、war、ear、apk、ipa、crx、xpi、7z)が含まれます。アーカイブは、設定可能な深さとサイズ制限まで再帰的に展開されます。```bash
titus scan path/to/files --extract=all
--extract-max-size 10MB
--extract-max-total 100MB
--extract-max-depth 5
SQLiteデータベースの場合、Titusはすべてのテーブルからテキストを抽出します(デフォルトではテーブルあたり1000行)。調整するには`--sqlite-row-limit`を使用します:```bash
# Full dump of all SQLite tables (no row limit)
titus scan path/to/files --extract=all --sqlite-row-limit 0
# Custom row limit per table
titus scan path/to/files --extract=all --sqlite-row-limit 5000
Titus が生成するすべての検出結果には、0~100 の数値スコアと重大度ティアが付与されます:
| スコア | 重大度 |
|---|---|
| 0–20 | info |
| 21–40 | low |
| 41–60 | medium |
| 61–80 | high |
| 81–100 | critical |
スコアはルールの base_score から開始し、修飾子 によって調整されます — これは認証情報について判明している情報に基づいてスコアを引き上げたり引き下げたりする条件です:```bash
titus scan path/to/code