Commit graph

308 commits

Author SHA1 Message Date
Mick Grove
fcac8cf1b7 rules updated 2026-03-03 16:47:59 -08:00
Mick Grove
e3bd776406 Fix redis URI matching and sqlite row budget 2026-02-28 14:25:05 -08:00
Mick Grove
d30f6af63b Fix view port hints and sqlite budget checks 2026-02-28 13:31:02 -07:00
Mick Grove
80b86b59cd Fix excluded blob tracking and pyc long bounds 2026-02-28 13:06:34 -07:00
Mick Grove
0605848ed5 Fix extraction fallback handling 2026-02-28 12:42:08 -07:00
Mick Grove
4f2738b957 changes in response to PR review 2026-02-28 12:16:08 -07:00
Mick Grove
3220ed3a80 Merge branch 'codex/pr-244-mergeable' into development
* codex/pr-244-mergeable:
  Add Jira comment and changelog scanning
2026-02-28 11:14:19 -07:00
Mick Grove
719b91301d Add Jira comment and changelog scanning 2026-02-28 11:13:00 -07:00
Mick Grove
6f77ff89a7 Merge remote-tracking branch 'origin/main' into development
* origin/main:
  Optimize Jira ADF text extraction
  Make ADF extraction iterative
  Fix mutable text in ADF extractor
  Optimize ADF join separator
  Refine ADF flattening and tests
  Add ADF extraction test coverage
  Fix ADF text flattening
  Fix Jira ADF description not being scanned on Jira Cloud
  fix: around 20 `set-output` command warnings
  chore: changes from formatting on save
2026-02-28 10:34:40 -07:00
Mick Grove
e24964343a Optimize Jira ADF text extraction 2026-02-28 10:24:14 -07:00
Mick Grove
e3c4d41695 Make ADF extraction iterative 2026-02-28 09:51:33 -07:00
Mick Grove
b11a69610f Fix mutable text in ADF extractor 2026-02-27 21:33:20 -07:00
Mick Grove
5d9a83ca72 Optimize ADF join separator 2026-02-27 21:31:31 -07:00
Mick Grove
7340ae5051 Refine ADF flattening and tests 2026-02-27 21:23:19 -07:00
Mick Grove
fafe891996 Add ADF extraction test coverage 2026-02-26 23:42:32 -07:00
Mick Grove
d28bbafcf6 Fix ADF text flattening 2026-02-26 23:25:50 -07:00
Mick Grove
0ae4e8445c Updated kingfisher scan to accept Git repository URLs as positional targets (for example kingfisher scan github.com/org/repo or kingfisher scan https://gitlab.com/group/project.git) without requiring --git-url. 2026-02-26 23:14:18 -07:00
Mick Grove
a76b8eb544 unkey and redis 2026-02-25 22:38:33 -07:00
Mick Grove
887cb9af8b unkey and redis 2026-02-25 22:38:06 -07:00
Mick Grove
92f43d2e29 added --turbo mode 2026-02-24 12:25:12 -07:00
Mick Grove
4905ace028 performance improvements 2026-02-23 23:14:39 -07:00
Mick Grove
aa29ee0e99 added '--fast' mode which sets maximum scan speed. Omits git commit context and will not base64 decode 2026-02-23 22:34:23 -07:00
Mick Grove
fa640e2c38 Python bytecode (.pyc) scanning: extracts string constants from compiled Python 2026-02-23 20:06:43 -07:00
Mick Grove
1f4ccb8144 Automatically extracts and scans SQLite database contents for secrets stored in table rows 2026-02-22 23:35:18 -07:00
Mick Grove
7845cfa727 being discovered, overlapping I/O with pattern matching.
- Performance: skip blobs smaller than 20 bytes during enumeration (too small to contain any secret).
- Performance: preserve pack-ascending blob order in the metadata path for better I/O locality when Rayon splits work.
2026-02-22 22:59:42 -07:00
Sorevitnod
f680f31e54 Fix Jira ADF description not being scanned on Jira Cloud
Jira Cloud API v3 returns issue descriptions and comment bodies in
Atlassian Document Format (ADF) — a nested JSON tree — rather than as
plain strings. Previously, the raw ADF object was serialized to disk
and the scanner found 0 bytes of meaningful content, producing no
findings even when secrets were present.

This commit adds `extract_adf_text()` which recursively walks the ADF
`content` tree and collects all leaf `"type":"text"` node values into a
single plain string. `download_issues_to_dir()` now replaces any ADF
`description` or comment `body` fields with their extracted plain text
before writing the issue JSON to disk.

Fixes #242

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-21 19:08:46 +00:00
Mick Grove
02538a6ac4 added more access-maps 2026-02-19 20:51:12 -08:00
Mick Grove
05002fe4d6 added more access-maps 2026-02-19 20:39:07 -08:00
Mick Grove
f38df8a953 added more access-maps 2026-02-19 19:36:43 -08:00
Mick Grove
a9c5d8524f added more access-maps 2026-02-19 18:19:20 -08:00
Mick Grove
17bb433227 improved GCP access mapping support 2026-02-19 14:58:10 -08:00
Mick Grove
3b1085baa6 added buildkit and harness to access-map 2026-02-17 22:58:29 -08:00
Mick Grove
39a4e217e3 Kingfisher can now generate an auditor-friendly HTML report 2026-02-15 14:29:42 -08:00
Mick Grove
d3e659491d refactored code 2026-02-14 13:12:26 -08:00
Mick Grove
f62bfe103b tree sitter scanning improvements 2026-02-14 11:13:59 -08:00
Mick Grove
816d5c40ba wip 1.83 2026-02-13 16:41:28 -08:00
Mick Grove
e72f40b169 Fixed CI runner failure when executing tests 2026-02-12 16:51:55 -08:00
Mick Grove
5882468177 Added optional validation rate limiting via --validation-rps (global) and repeatable --validation-rps-rule <RULE_SELECTOR=RPS> (per-rule override) for both scan and validate. Throttling now applies across built-in validator types (HTTP/gRPC plus AWS, GCP, Coinbase, MongoDB, Postgres, MySQL, JDBC, JWT, and Azure Storage). Rule selectors support the short form (for example, github=2 matches kingfisher.github.*) with longest-prefix precedence when multiple selectors apply. 2026-02-12 12:33:59 -08:00
Mick Grove
2d6abb95c9 fixes in response to pr review 2026-02-11 23:44:09 -08:00
Mick Grove
7dc0955635 - Added Vercel credential rules for new token formats introduced February 2026: vcp_ (personal access), vci_ (integration), vca_ (app access), vcr_ (app refresh), vck_ (AI Gateway API key). All use CRC32/Base62 checksum validation. Legacy 24-char format retained as kingfisher.vercel.1.
- Added revocation support for Vercel app tokens (vca_, vcr_) via https://api.vercel.com/login/oauth/token/revoke. Requires VERCEL_APP_CLIENT_ID (or NEXT_PUBLIC_VERCEL_APP_CLIENT_ID) and VERCEL_APP_CLIENT_SECRET.
- Fixed validate/revoke command generation to omit regex named captures (e.g., BODY, CHECKSUM) when they are not used by validation/revocation templates, so rules like Vercel no longer produce unnecessary --var BODY=... arguments.
2026-02-11 16:56:47 -08:00
Mick Grove
4ab5932d57 - Added Vercel credential rules for new token formats introduced February 2026: vcp_ (personal access), vci_ (integration), vca_ (app access), vcr_ (app refresh), vck_ (AI Gateway API key). All use CRC32/Base62 checksum validation. Legacy 24-char format retained as kingfisher.vercel.1.
- Added revocation support for Vercel app tokens (vca_, vcr_) via https://api.vercel.com/login/oauth/token/revoke. Requires VERCEL_APP_CLIENT_ID (or NEXT_PUBLIC_VERCEL_APP_CLIENT_ID) and VERCEL_APP_CLIENT_SECRET.
- Fixed validate/revoke command generation to omit regex named captures (e.g., BODY, CHECKSUM) when they are not used by validation/revocation templates, so rules like Vercel no longer produce unnecessary --var BODY=... arguments.
2026-02-11 13:56:17 -08:00
Mick Grove
265e569c60 - Fixed validation flakiness under service rate limiting by retrying HTTP validations on 429/408 in addition to transient 5xx failures.
- Prevented transient HTTP validation failures (429/5xx) from being cached, avoiding cache poisoning that could suppress later successful validations in the same scan.
2026-02-11 11:38:24 -08:00
Mick Grove
4a74e95756 v1.81.0 2026-02-10 19:43:34 -08:00
Mick Grove
e518fb30f2 v1.81.0 2026-02-10 19:24:19 -08:00
Mick Grove
2a8bb9c361 v1.80.0 2026-02-09 12:27:03 -08:00
Mick Grove
2866367c2e v1.80.0 2026-02-09 12:11:35 -08:00
Mick Grove
ec8761c451 Fix NPM token validation and improve revocation reliability
- Switch validation endpoint from /-/npm/v1/user to /-/whoami which
  works for all token types regardless of scope/permissions
- Fix revocation token matching: use Regex extractor with Liquid-rendered
  prefix ({{ TOKEN | prefix: 8 }}) to locate the correct token in the
  list response instead of blindly taking objects[0]
- Add Liquid template rendering support in multi-step revocation
  extraction patterns (render_extractor) for dynamic matching
- Add debug logging of HTTP response status and body during revocation
  so -v flag shows full API responses for troubleshooting
- Include response body in extraction failure error messages

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-08 15:14:04 -08:00
Mick Grove
77d951da1a Fixed issues in response to code review 2026-02-06 21:09:51 -08:00
Mick Grove
d3dbb16d66 Fixed issues in response to code review 2026-02-06 21:02:58 -08:00
Mick Grove
1a40fb3bfd Fixed AWS access key validation to support temporary/session keys (ASIA prefix) in addition to long-lived keys (AKIA prefix). 2026-02-06 17:05:32 -08:00