
高性能シークレットスキャナ。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
Tokens are optional for public repositories. Set GITHUB_TOKEN or GITLAB_TOKEN (or use --token) for private repository access and higher API rate limits.
コンテナイメージを直接スキャン — 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で設定可能)、各発見を確認済み、拒否、不明としてマークします。
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
Supported formats include Office documents (xlsx, docx, pptx, odp, ods, odt), PDFs, Jupyter notebooks, SQLite databases, email (eml, rtf), and archives (zip, tar, tar.gz, jar, war, ear, apk, ipa, crx, xpi, 7z). Archives are recursively extracted up to configurable depth and size limits.```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
Every finding Titus produces carries a numeric score from 0–100 and a severity tier:
| スコア | 重大度 |
|---|---|
| 0–20 | 情報 |
| 21–40 | 低 |
| 41–60 | 中 |
| 61–80 | 高 |
| 81–100 | 重大 |
Scores start from the rule's base_score and are adjusted by modifiers — conditions that raise or lower the score based on what is known about the credential:```bash
titus scan path/to/code
titus scan path/to/code --score-scope
titus scan path/to/code --accessibility public # no penalty for public repos titus scan path/to/code --accessibility private # -25 penalty (default for local scans)
Titusには、AWS認証情報、GitHub PAT、Slackトークン用のYAMLスコアラーが同梱されており、さらに`--score-scope`が有効な場合にライブIAMポリシー列挙(AWS)およびリポジトリ権限チェック(GitHub fine-grained PAT)を実行するGoベースのSDKスコアラーも含まれています。
完全なリファレンスについては、[docs/scoring.md](https://github.com/praetorian-inc/titus/blob/HEAD/docs/scoring.md)を参照してください:重大度レベル、修飾子の種類、組み込みスコアラーの詳細、および独自のYAMLまたはGoスコアラーの作成方法について説明しています。
## Goライブラリによるシークレット検出
TitusはGoライブラリとしてインポートでき、独自のツールやパイプラインにシークレット検出機能を追加できます。```bash
go get github.com/praetorian-inc/titus
vulnコマンドを使用します。import ( "fmt" "log"
"github.com/praetorian-inc/titus"
)
func main() { // Initialize the secrets scanner with default rules scanner, err := titus.NewScanner() if err != nil { log.Fatal(err) } defer scanner.Close()
// Scan a string for API keys, tokens, and credentials
matches, err := scanner.ScanString(`aws_access_key_id = AKIAIOSFODNN7EXAMPLE`)
if err != nil {
log.Fatal(err)
}
for _, match := range matches {
fmt.Printf("%s (rule: %s) at line %d\n",
match.RuleName, match.RuleID,
match.Location.SourceSpan.Start.Line,
)
}
}
このライブラリは、バイト列やファイルのスキャン、検出されたシークレットの検証、カスタムルールの読み込みもサポートしています:```go
// Scan a file for leaked credentials
matches, err := scanner.ScanFile("/path/to/config.json")
// Enable validation to check if detected secrets are live
scanner, err := titus.NewScanner(titus.WithValidation())
// Load custom detection rules for organization-specific secrets
rules, err := titus.LoadRulesFromFile("/path/to/rules.yaml")
scanner, err := titus.NewScanner(titus.WithRules(rules))
完全なAPIリファレンス、並行処理パターン、その他の例については、docs/library-usage.md を参照してください。
Burp拡張機能は、プロキシトラフィックおよびアクティブな侵入テスト中にHTTPレスポンスをスキャンしてシークレットを検出します。
make install-burp
Then load `dist/titus-burp-1.0.0-all.jar` in Burp Suite under Extensions > Add.
#### Windows(リリースからダウンロード)
1. `titus-windows-amd64.exe`と`titus-burp-<version>.jar`を[Releases](https://raw.githubusercontent.com/praetorian-inc/releases)からダウンロードします。
2. Titusディレクトリを作成し、バイナリをインストールします。 ```powershell
mkdir %USERPROFILE%\.titus
copy titus-windows-amd64.exe %USERPROFILE%\.titus\titus.exe
titus-burp-<version>.jar を Releases からダウンロードします:
titus-linux-amd64 または titus-linux-arm64titus-darwin-amd64 または titus-darwin-arm64この拡張機能はバックグラウンドで titus serve プロセスを起動し、stdin/stdout を介して NDJSON で通信します。検出ルールは起動時に一度だけロードされます。
この拡張機能は、Burp に 3 つのサブタブを持つ Titus タブを追加します。
Secrets: タイプ、ホスト、検証ステータスでフィルタリング可能な、検出されたすべてのシークレット
Titus Burp Suite extension secrets tab showing detected API keys and credentials with validation status
Statistics: タイプとホストでグループ化されたシークレットの集計ビュー
Settings: スキャンオプション、検証、重要度マッピングの設定
Titus Burp Suite extension settings tab with scan configuration options
Burp で任意のリクエストを表示しているとき、シークレットが検出されるとレスポンスインスペクタに Titus タブが表示され、メインの Titus タブに切り替えずに発見事項に素早くアクセスできます。
Titus tab in Burp Suite response inspector highlighting detected secrets in HTTP responses
Chrome 拡張機能は、Web アプリケーションセキュリティ評価中に Web ページからシークレットをスキャンします。
make build-extension
1. `chrome://extensions/` にアクセス
2. **デベロッパーモード**を有効にする
3. **パッケージ化されていない拡張機能を読み込む**をクリックし、`extension/` ディレクトリを選択
### ブラウザ拡張機能の特徴
- インラインおよび外部のJavaScript、スタイルシートをスキャンしてAPIキーやトークンを検出
- localStorage と sessionStorage をスキャンして漏洩した認証情報を検出
- 包括的なシークレット検出のためのオプションのネットワーク応答キャプチャ
- ポップアップとダッシュボードに結果を表示
<img width="1719" height="958" alt="Titus Chrome拡張機能のポップアップ:Webページで検出されたシークレットを表示" src="https://assets.kitploit.com/production/public/readmes/11969/057a24e2746412ceabe1aac0292a2de463de1efee5bca2489ca34b59d8b0dc2c.png" />
<img width="1744" height="827" alt="Titus Chrome拡張機能のダッシュボード:集約されたシークレット検出結果" src="https://assets.kitploit.com/production/public/readmes/11969/265d972fadcc7f212944d7a1d8fd58a43446e7199d1209900e83b96a546ffb00.png" />
### セキュリティに関する注意事項
ブラウザ拡張機能は、訪問したページからContent Security PolicyヘッダーとCORSヘッダーを削除し、外部リソースをスキャンします。これにより、拡張機能が有効な間、訪問するサイトのセキュリティ体制が弱まります。**アクティブなセキュリティテスト中のみ有効にしてください。**
## ソースからビルドする
### 標準ビルド(Vectorscanアクセラレーション)
デフォルトでは、Titusは [Vectorscan](https://github.com/VectorCamp/vectorscan)(ARM) / [Hyperscan](https://github.com/intel/hyperscan)(x86)を使用してSIMDアクセラレーションによる正規表現マッチングを行います。これにはCGO、Cライブラリ、および`pkg-config`(cgoがライブラリを特定するために使用)が必要です。`make build` はこれらをチェックし、不足している場合はHomebrew / apt / dnf 経由でインストールを試みます。```bash
# Build the CLI binary with vectorscan acceleration (outputs to dist/titus)
make build
# Build the Burp Suite extension JAR
make build-burp
# Build the Chrome browser extension
make build-extension
# Run unit tests
make test
# Run integration tests
make integration-test
You'll see [vectorscan] N/N rules compiled for Hyperscan on startup when the accelerated engine is active.
To install the C library yourself instead of relying on auto-install:```bash
brew install pkg-config vectorscan
sudo apt-get install pkg-config libhyperscan-dev
sudo dnf install pkgconf-pkg-config vectorscan-devel
git clone --depth 1 --branch vectorscan/5.4.11 https://github.com/VectorCamp/vectorscan.git cd vectorscan && cmake -B build -DCMAKE_INSTALL_PREFIX=/usr/local && cmake --build build && sudo cmake --install build
直接`go build`を呼び出す場合(例えば、Titusを埋め込む場合)、タグを渡してCGOを有効にしてください:```bash
# macOS (Homebrew) — adjust PKG_CONFIG_PATH to your installed version
CGO_ENABLED=1 PKG_CONFIG_PATH="$(brew --prefix vectorscan)/lib/pkgconfig" \
go build -tags vectorscan -o dist/titus ./cmd/titus
# Linux (system-installed)
CGO_ENABLED=1 go build -tags vectorscan -o dist/titus ./cmd/titus
Cライブラリをインストールできない場合 — または完全にポータブルで静的なバイナリが必要な場合 — 代わりに pure-Go エンジンをビルドしてください。Titus は、vectorscan がコンパイルされていない場合、実行時に自動的にそれにフォールバックします。```bash
make build-pure
make build-static
## Contributing
貢献を歓迎します! Titus への貢献方法については、[CONTRIBUTING.md](https://github.com/praetorian-inc/titus/blob/HEAD/CONTRIBUTING.md) をご覧ください。
## License
Apache License 2.0 — [LICENSE](https://github.com/praetorian-inc/titus/blob/HEAD/LICENSE) をご覧ください。
検出ルールは、[NoseyParker](https://github.com/praetorian-inc/noseyparker) (Praetorian Security, Inc.) および [Kingfisher](https://github.com/mongodb/kingfisher) (MongoDB, Inc.) から派生したもので、両者は Apache 2.0 のもとでライセンスされています。完全な帰属については [NOTICE](https://github.com/praetorian-inc/titus/blob/HEAD/NOTICE) をご覧ください。