
Высокопроизводительный сканер секретов. CLI, библиотека Go, расширение для Burp Suite и расширение для Chrome. 487 правил обнаружения с проверкой учетных данных в реальном времени.
Titus — это высокопроизводительный сканер секретов, который обнаруживает учётные данные, ключи API и токены в исходном коде, файлах и истории git. Он включает 487 правил обнаружения, охватывающих сотни сервисов и типов учётных данных, взятых из NoseyParker и Kingfisher. Titus работает как CLI, библиотека Go, расширение Burp Suite и расширение для браузера Chrome — все они используют один и тот же движок обнаружения и набор правил.
Созданный для инженеров по безопасности, пентестеров и команд DevSecOps, Titus сочетает ускоренное с помощью Hyperscan/Vectorscan сопоставление регулярных выражений с проверкой учётных данных в реальном времени для поиска и верификации утёкших секретов во всей вашей кодовой базе.
Скачайте готовый бинарный файл со страницы Релизы или соберите из исходников:```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
Токены опциональны для публичных репозиториев. Установите GITHUB_TOKEN или GITLAB_TOKEN (или используйте --token) для доступа к частным репозиториям и более высоких лимитов API.
Сканируйте контейнерные образы напрямую — без демона Docker и без бинарника docker. Titus загружает образы прямо из любого OCI-реестра по HTTPS (используя учётные данные из ~/.docker/config.json) или читает образы из локального tarball'а docker save или каталога макета 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
Поддерживаемые форматы включают офисные документы (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 | информационный |
| 21–40 | низкий |
| 41–60 | средний |
| 61–80 | высокий |
| 81–100 |
Баллы начинаются с base_score правила и корректируются модификаторами — условиями, которые повышают или понижают балл в зависимости от того, что известно об учетных данных:```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 поставляется с оценщиками YAML для учетных данных AWS, PAT-токенов GitHub и токенов Slack, а также с оценщиками на основе Go SDK, которые выполняют динамическое перечисление политик IAM (AWS) и проверки разрешений репозитория (детализированные PAT-токены GitHub) при включенном `--score-scope`.
См. [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
Portex -Uninstall
Удалите следующие файлы и каталоги:
C:\ProgramData\Portex\C:\Users\<USER>\AppData\Local\Portex\[!IMPORTANT] Если вы использовали опцию
-Transfer-Fileво время установки, не забудьте удалитьUninstall.ps1в указанном месте.
Если этот инструмент оказался полезным, пожалуйста, рассмотрите возможность поддержать его разработку пожертвованием. Ваш вклад будет использован для покрытия ежегодных затрат на сертификат подписи кода и стимулирования дальнейшего улучшения инструмента.
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))
См. docs/library-usage.md для полной справки по API, шаблонов параллелизма и других примеров.
Расширение Burp сканирует HTTP-ответы на наличие секретов при проксировании трафика и активном тестировании на проникновение.
make install-burp
Затем загрузите `dist/titus-burp-1.0.0-all.jar` в Burp Suite в разделе Extensions > Add.
#### Windows (Скачать из Releases)
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-arm64 для Linuxtitus-darwin-amd64 или titus-darwin-arm64 для macOSРасширение запускает фоновый процесс titus serve и взаимодействует через stdin/stdout по протоколу NDJSON. Правила обнаружения загружаются однократно при запуске.
Расширение добавляет вкладку Titus в Burp с тремя подвкладками:
Секреты: Все обнаруженные секреты с возможностью фильтрации по типу, хосту и статусу проверки.
Вкладка секретов расширения Titus для Burp Suite, отображающая обнаруженные ключи API и учетные данные с указанием статуса проверки
Статистика: Агрегированное представление секретов, сгруппированных по типу и хосту.
Настройки: Настройка параметров сканирования, проверки и сопоставления уровней серьезности.
Вкладка настроек расширения Titus для Burp Suite с параметрами конфигурации сканирования
При просмотре любого запроса в Burp во вкладке инспектора ответа появляется вкладка Titus, если обнаружены секреты, что обеспечивает быстрый доступ к находкам без переключения на основную вкладку Titus.
Вкладка Titus в инспекторе ответов Burp Suite, выделяющая обнаруженные секреты в HTTP-ответах
Расширение для Chrome сканирует веб-страницы на наличие секретов при оценке безопасности веб-приложений.
make build-extension
1. Перейдите к `chrome://extensions/`
2. Включите **Режим разработчика**
3. Нажмите **Загрузить распакованное** и выберите каталог `extension/`
### Возможности расширения браузера
- Сканирует встроенные и внешние JavaScript и таблицы стилей на наличие ключей API и токенов
- Сканирует localStorage и sessionStorage на наличие утекших учетных данных
- Опциональный захват ответов сети для всестороннего обнаружения секретов
- Результаты отображаются в всплывающем окне и панели управления
<img width="1719" height="958" alt="Всплывающее окно расширения Titus Chrome, показывающее обнаруженные секреты на веб-странице" 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
Вы увидите [vectorscan] N/N rules compiled for Hyperscan при запуске, когда ускоренный движок активен.
Чтобы установить библиотеку C самостоятельно вместо использования автоустановки:```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.md](https://github.com/praetorian-inc/titus/blob/HEAD/CONTRIBUTING.md) с рекомендациями по участию в Titus.
## Лицензия
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).
| критический |