|
8 | 8 | Kingfisher is a blazingly fast secret‑scanning and live validation tool built in Rust. It combines Intel’s hardware‑accelerated Hyperscan regex engine with language‑aware parsing via Tree‑Sitter, and **ships with hundreds of built‑in rules** to detect, validate, and triage secrets before they ever reach production
|
9 | 9 | </p>
|
10 | 10 |
|
11 |
| -Kingfisher originated as a fork of Praetorian's Nosey Parker, and is built atop their incredible work and the work contributed by the Nosey Parker community. |
12 |
| - |
13 |
| -## What Kingfisher Adds |
14 |
| -- **Live validation** via cloud-provider APIs |
15 |
| -- **Extra targets**: GitLab repos, S3 buckets, Docker images, Jira issues, Confluence pages, and Slack messages |
16 |
| -- **Compressed Files**: Supports extracting and scanning compressed files for secrets |
17 |
| -- **Baseline mode**: ignore known secrets, flag only new ones |
18 |
| -- **Allowlist support**: suppress false positives with custom regexes or words |
19 |
| -- **Language-aware detection** (source-code parsing) for ~20 languages |
20 |
| -- **Native Windows** binary |
21 |
| - |
| 11 | +Originally forked from Praetorian’s Nosey Parker, Kingfisher adds live cloud-API validation; many more targets (GitLab, S3, Docker, Jira, Confluence, Slack); compressed-file extraction and scanning; baseline and allowlist controls; language-aware detection (~20 languages); and a native Windows binary. See [Origins and Divergence](#origins-and-divergence) for details. |
22 | 12 |
|
23 | 13 | ## Key Features
|
24 | 14 | - **Performance**: multithreaded, Hyperscan‑powered scanning built for huge codebases
|
25 | 15 | - **Extensible rules**: hundreds of built-in detectors plus YAML-defined custom rules ([docs/RULES.md](/docs/RULES.md))
|
| 16 | + - **Broad AI SaaS coverage**: finds and validates tokens for OpenAI, Anthropic, Google Gemini, Cohere, Mistral, Stability AI, Replicate, xAI (Grok), Ollama, Langchain, Perplexity, Weights & Biases, Cerebras, Friendli, Fireworks.ai, NVIDIA NIM, Together.ai, Zhipu, and many more |
26 | 17 | - **Multiple targets**:
|
27 | 18 | - **Git history**: local repos or GitHub/GitLab orgs/users
|
28 | 19 | - **Repository artifacts**: with `--repo-artifacts`, scan GitHub/GitLab repository artifacts such as issues, pull/merge requests, wikis, snippets, and owner gists in addition to code
|
@@ -154,18 +145,18 @@ docker run --rm \
|
154 | 145 |
|
155 | 146 | # 🔐 Detection Rules at a Glance
|
156 | 147 |
|
157 |
| -Kingfisher ships with hundreds of rules that cover everything from classic cloud keys to the latest LLM-API secrets. Below is an overview: |
| 148 | +Kingfisher ships with [hundreds of rules](/data/rules/) that cover everything from classic cloud keys to the latest AI SaaS tokens. Below is an overview: |
158 | 149 |
|
159 | 150 | | Category | What we catch |
|
160 | 151 | |----------|---------------|
|
161 |
| -| **AI / LLM APIs** | OpenAI, Anthropic, Google Gemini, Cohere, Mistral, Stability AI, Replicate, xAI (Grok), and more |
162 |
| -| **Cloud Providers** | AWS, Azure, GCP, Alibaba Cloud, DigitalOcean, IBM Cloud, Cloudflare, and more |
163 |
| -| **Dev & CI/CD** | GitHub/GitLab tokens, CircleCI, TravisCI, TeamCity, Docker Hub, npm, PyPI, and more |
164 |
| -| **Messaging & Comms** | Slack, Discord, Microsoft Teams, Twilio, Mailgun, SendGrid, Mailchimp, and more |
165 |
| -| **Databases & Data Ops** | MongoDB Atlas, PlanetScale, Postgres DSNs, Grafana Cloud, Datadog, Dynatrace, and more |
166 |
| -| **Payments & Billing** | Stripe, PayPal, Square, GoCardless, and more |
167 |
| -| **Security & DevSecOps** | Snyk, Dependency-Track, CodeClimate, Codacy, OpsGenie, PagerDuty, and more |
168 |
| -| **Misc. SaaS & Tools** | 1Password, Adobe, Atlassian/Jira, Asana, Netlify, Baremetrics, and more |
| 152 | +| **AI SaaS APIs** | OpenAI, Anthropic, Google Gemini, Cohere, Mistral, Stability AI, Replicate, xAI (Grok), Ollama, Langchain, Perplexity, Weights & Biases, Cerebras, Friendli, Fireworks.ai, NVIDIA NIM, together.ai, Zhipu, and more | |
| 153 | +| **Cloud Providers** | AWS, Azure, GCP, Alibaba Cloud, DigitalOcean, IBM Cloud, Cloudflare, and more | |
| 154 | +| **Dev & CI/CD** | GitHub/GitLab tokens, CircleCI, TravisCI, TeamCity, Docker Hub, npm, PyPI, and more | |
| 155 | +| **Messaging & Comms** | Slack, Discord, Microsoft Teams, Twilio, Mailgun, SendGrid, Mailchimp, and more | |
| 156 | +| **Databases & Data Ops** | MongoDB Atlas, PlanetScale, Postgres DSNs, Grafana Cloud, Datadog, Dynatrace, and more | |
| 157 | +| **Payments & Billing** | Stripe, PayPal, Square, GoCardless, and more | |
| 158 | +| **Security & DevSecOps** | Snyk, Dependency-Track, CodeClimate, Codacy, OpsGenie, PagerDuty, and more | |
| 159 | +| **Misc. SaaS & Tools** | 1Password, Adobe, Atlassian/Jira, Asana, Netlify, Baremetrics, and more | |
169 | 160 |
|
170 | 161 | ## Write Custom Rules!
|
171 | 162 |
|
@@ -543,9 +534,11 @@ Kingfisher automatically queries GitHub for a newer release when it starts and t
|
543 | 534 |
|
544 | 535 | - **Hands-free updates** – Add `--self-update` to any Kingfisher command
|
545 | 536 |
|
546 |
| - * If a newer version exists, Kingfisher will download it, replace the running binary, and re-launch itself with the **exact same arguments**. |
| 537 | + * If a newer version exists, Kingfisher will download it, replace the running binary, and re-launch itself with the **exact same arguments**. |
547 | 538 | * If the update fails or no newer release is found, the current run proceeds as normal
|
548 | 539 |
|
| 540 | +- **Manual update** – Run `kingfisher self-update` to update the binary without scanning |
| 541 | + |
549 | 542 | - **Disable version checks** – Pass `--no-update-check` to skip both the startup and shutdown checks entirely
|
550 | 543 |
|
551 | 544 | # Advanced Options
|
@@ -661,6 +654,20 @@ Use `--rule-stats` to collect timing information for every rule. After scanning,
|
661 | 654 | kingfisher scan --help
|
662 | 655 | ```
|
663 | 656 |
|
| 657 | + |
| 658 | +## Origins and Divergence |
| 659 | + |
| 660 | +Kingfisher began as a fork of Praetorian’s Nosey Parker, as our experiment with adding live validation support and embedding that validation directly inside each rule. |
| 661 | + |
| 662 | +Since that initial fork, it has diverged heavily from Nosey Parker: |
| 663 | +- Replaced the SQLite datastore with an in-memory store + Bloom filter |
| 664 | +- Collapsed the workflow into a single scan-and-report phase with direct JSON/BSON/SARIF outputs |
| 665 | +- Added Tree-Sitter parsing on top of Hyperscan for deeper language-aware detection |
| 666 | +- Removed datastore-driven reporting/annotations in favor of live validation, baselines, allowlists, and compressed-file extraction |
| 667 | +- Expanded support for new targets (GitLab, Jira, Confluence, Slack, S3, Docker, etc.) |
| 668 | +- Delivered cross-platform builds, including native Windows |
| 669 | + |
| 670 | + |
664 | 671 | # Roadmap
|
665 | 672 |
|
666 | 673 | - More rules
|
|
0 commit comments