[v1.83.0]
- Kingfisher can now generate an auditor-friendly HTML report:
--format html --output kingfisher-audit.html - Architecture: split
matcher.rsinto asrc/matcher/module directory with focused sub-modules (base64_decode,captures,conversion,dedup,filter,fingerprint). Decomposedfilter_matchinto smaller validation helpers. - Architecture: refactored
scanner/runner.rsgod function into phase-based helpers (enumerate_all_repos,fetch_all_artifacts,run_sequential_scan,run_parallel_scan, etc.) with aValidationDepstype alias. - Architecture: consolidated duplicated matching primitives (base64 detection, dedup, fingerprinting, secret capture selection) into
kingfisher-scanner::primitivesas the single source of truth; both the scanner crate and binary now share one implementation. - Architecture: introduced
TokenAccessMappertrait for access map providers, implemented for GitHub, GitLab, Slack, HuggingFace, Gitea, and Bitbucket. - Architecture: moved
content_typemodule tokingfisher-corecrate where it logically belongs (zero binary-crate dependencies). - Library crates: added an external-consumer integration test (
tests/library_crates_external_project.rs) and fixedkingfisher-scannermanifest wiring by makingserdea required dependency, ensuringkingfisher-core/kingfisher-rules/kingfisher-scannercompile and run from a non-kingfisher Rust project. - Improved tree-sitter parsing + structured secret detection in source files. A Vectorscan pre-filter over the combined tree-sitter output avoids the O(results × rules) regex cost.
- Access Map: added Hugging Face, Gitea, Bitbucket, PostgreSQL, and MongoDB providers. All perform read-only enumeration with severity classification.
- Access Map: Hugging Face, Bitbucket, Postgres, and MongoDB credentials from scans are now auto-collected when using
--access-map. - Access Map CLI: added providers
huggingface/hf,gitea,bitbucket,postgres,mongodb/mongo. - Added
kingfisher.gitea.1rule for Gitea access tokens with validation; self-revocation not supported (API requires Basic Auth). - Added revocation for GitHub App Server-to-Server tokens (
ghs_,kingfisher.github.5) viaDELETE /installation/token. Note:ghu_(user-to-server) tokens cannot be self-revoked; they require the GitHub App's client credentials or manual revocation via GitHub Settings. - Fixed GitHub Access Map failing for all token types due to
GitHubUserstruct field mismatch (_idvs API"id"). - Viewer: replaced the Access Map tree view with a card-based layout showing identity, resource count, permission tags, and token details at a glance with expandable inline detail.
- Viewer: added per-finding Blast Radius section linking findings to their access map entries with an auto-generated risk rationale (critical/high/medium/low) based on credential status, resource count, and permission severity.
- Viewer: added two new report types — Risk Report (findings + blast radius per credential, for researchers/bug bounty) and Scan Report (executive summary + scan metadata + findings table, for defenders/tickets). Both support "Active credentials only" filtering.
- Viewer: redesigned the Access Map export report to match the Scan/Risk report quality with summary stats, per-identity cards, token details, and resource/permission grids.
- Viewer: added scan metadata bar (timestamp, target, duration, version) to the Dashboard view.