Skip to content

fix(security): SecurityValidator schema mismatch + fail-closed (#1014)#1028

Open
justinkatz94-glitch wants to merge 1 commit intodanielmiessler:mainfrom
justinkatz94-glitch:fix/1014-security-validator-schema
Open

fix(security): SecurityValidator schema mismatch + fail-closed (#1014)#1028
justinkatz94-glitch wants to merge 1 commit intodanielmiessler:mainfrom
justinkatz94-glitch:fix/1014-security-validator-schema

Conversation

@justinkatz94-glitch
Copy link
Copy Markdown

Summary

Fixes three security vulnerabilities in SecurityValidator.hook.ts:

  • decision: 'ask' schema mismatch: CC's Zod schema only accepts approve|block for top-level decision. Changed to hookSpecificOutput with permissionDecision: 'ask' which IS validated. Every confirm-level security control (force push, recursive delete, cloud ops) was silently non-functional.
  • Fail-open error paths: 5 error paths returned {continue: true}. Now use process.exit(2) (CC treats exit code 2 as blocking denial).
  • New extractWritePathsFromBash(): Catches write operations hidden inside Bash commands (writeFileSync, shell redirections, tee, sed -i, cp/mv).

Test plan

  • Safe operations (ls, cat) still return {continue: true}
  • Blocked operations still exit(2)
  • Confirm operations (git push --force) output valid hookSpecificOutput JSON
  • Malformed stdin causes exit(2) (fail-closed)
  • Missing patterns.yaml returns hardcoded deny rules

Closes #1014

🤖 Generated with Claude Code

…lmiessler#1014)

Three security fixes:

1. decision:'ask' fails CC Zod validation (only accepts 'approve'|'block')
   - Changed to hookSpecificOutput with permissionDecision:'ask'
   - Every confirm-level control was silently non-functional

2. Five error paths fail-open (continue:true) instead of fail-closed
   - Now use process.exit(2) which CC treats as blocking denial

3. Added extractWritePathsFromBash() for deeper command analysis
   - Catches writeFileSync, shell redirections, tee, sed -i, cp/mv

Closes danielmiessler#1014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant