feat(scanner): reject plugin access to cookie and token stores - #1171
feat(scanner): reject plugin access to cookie and token stores#1171seonghobae wants to merge 6 commits into
Conversation
Lock ~/.netrc, ~/.aws/credentials, gh hosts, Docker config.json, cookies.txt, ~/.curl_home, and ~/.ssh/id_* as fail-closed findings. Keep Chrome/Firefox profiles, hardcoded ghp_, and gh pr merge on their existing classes. Relates to #1099.
Fail closed on hook and manifest paths into ~/.netrc, AWS credentials, GitHub CLI hosts, Docker auth, cookie jars, and SSH private keys as claude-plugin-credential-store-access. Browser profiles, hardcoded PATs, and gh pr merge stay their existing classes. Relates to #1099.
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Summary: - Snapshot 2026-09-07 23:23 UTC records Draft #1171 `9370a0d` stacked on #1170. - Host cookie/token stores beyond browser profiles fail closed. - Remaining leftover: deep directory recursion, Cosign/GPG, deployment-write. Rationale: - #999 is the single writer of the product-technical gap baseline. - Do not Close #1099, #1170, #1150, or #1137. Tests: - documentation-only; detector evidence lives on #1171 (2505/2505)
Summary: - Snapshot 2026-09-07 23:37 UTC records Draft #1172 `936311c` stacked on #1171. - Hook kubectl apply and docker push fail closed. - Remaining leftover: deep directory recursion, Cosign/GPG, terraform/helm. Rationale: - #999 is the single writer of the product-technical gap baseline. - Do not Close #1099, #1171, or #1170. Tests: - documentation-only; detector evidence lives on #1172 (1813/1813)
|
Current-head evidence — 2026-09-13: ordinary two-parent head |
Successor of #1170 / issue #1099. Does not Close those. Browser-profile stays #1150. Hardcoded
ghp_stays #1137.gh pr mergestays #1170. Pass is not Noema admission.Unique delta
Fail closed when a plugin hook or manifest reads host cookie or token stores that are not browser profiles (
claude-plugin-credential-store-access, CWE-522):~/.netrcand~/.aws/credentialsfail admission~/.config/gh/hosts.yml,~/.docker/config.jsonauth,cookies.txt,~/.curl_home, and~/.ssh/id_*private keys fail admissionclaude-plugin-browser-profile-accessghp_staysclaude-plugin-github-write-tokengh pr mergestaysclaude-plugin-github-merge-commandgh issue create,docker push, and a declared0755echo hook are not this class#1170 remains owner of GitHub merge and release CLI write verbs.
Evidence
cc3db8cthen GREEN9370a0dtests/test_claude_plugin_credential_store.pyplus sibling merge/browser suitesclaude_plugin_detector.pystatement coverage 2505/2505 on Python 3.13Relates to #1099. Relates to #1170.
Current GitHub parser predecessor integration — 2026-09-08
Normal two-parent descendant
f288cfa313a26661a3eaa1f8e74681228dfc20d9integrates canonical #1170 exact headc17fc4fc628af573a4136aff8e2157ddcef3a4a2without force and retains the GitHub command-context regression corpus while preserving this PR's credential-store delta and dynamic-eval analyzer. GitHub compare reports 5 ahead / 0 behind. This custom-base PR stays Draft pending fresh hosted integration and independent current-head review.Current non-force restack — 2026-09-13
This Draft is an ordinary two-parent descendant of prior head
f288cfa313a26661a3eaa1f8e74681228dfc20d9and current #1170 headf5c75be09b9effa753f1c4f29d931ebe74bc786f. Exact head isc4ad59b28f6c3e9c9c1e5fa11f7db557d98799c3; exact tree isf8002385507b8bb97ba917c7085305b3c2d207e3. GitHub compare reports 6 ahead / 0 behind and preserves #1169 checksum path identity, #1170 GitHub command context, and this credential-store delta. Targeted credential/GitHub/checksum tests are 77/77; the complete exact-tree Claude-plugin regression is 400/400; compile and diff checks pass. No hosted exact-head workflow or qualifying independent review exists, so this custom-base PR remains Draft. Earlier head/check strings are historical evidence only.