Add Info severity level and HTTPie/XH pipe-to-shell detection#43
Merged
Add Info severity level and HTTPie/XH pipe-to-shell detection#43
Conversation
…isplay - Report audit log errors instead of silently swallowing them - Handle CLI output write errors in check/run/score - Display Info-severity findings in human output (was silently dropped) - Use Info as default severity fallback instead of Low
push_segment() incorrectly treated VAR=VALUE as the command token. Now skips leading environment variable assignments to find the real command. Adds pub is_env_assignment() helper for use by engine bypass detection. Fixes: TIRITH=0 curl evil.com now correctly identifies curl as command. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add command-aware output-flag skipping for curl (-o/--output) and wget (-O/-OFILE/--output-document). Extract URLs from command+args instead of raw segment text to avoid matching URLs in env-prefix values. Add conservative non-TLD file extensions (.png, .jpg, .mp4, etc.) to schemeless host exclusion list. Fixes issue #33. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…paths Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Run cargo fmt --all - Fix clippy lints: collapsible else-if in check.rs, uninlined_format_args - Add .cargo/audit.toml ignoring RUSTSEC-2026-0009 (time crate DoS, not exploitable in our usage, fix requires Rust 1.88) - Add same ignore to deny.toml
- Merge origin/main (glibc build fix) - Fix single & segment boundary in split_raw_words (security) - Use exact match == TIRITH=0 (prevents false bypass) - Skip flags in resolve_command_wrapper - Remove dead code in is_tirith_command Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- TIRITH='0' and TIRITH="0" are now recognized as bypass assignments (split_raw_words preserves quotes, so literal == "TIRITH=0" missed these) - Require a real command word after TIRITH=0 in the same segment — bare TIRITH=0 or TIRITH=0; with no command is no longer treated as bypass - Same fixes applied to the env wrapper path - Add is_tirith_bypass_assignment() + strip_surrounding_quotes() helpers - Add 14 unit tests covering quoted values, no-command rejection, env paths Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Resolve deny.toml conflict by taking main's version. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Test plan
🤖 Generated with Claude Code
Note
Emit INFO output for allowed verdicts and default max severity to
Severity::Infoincli::score::runSet the action label to INFO when
verdict.actionis Allow in human and no-color output, and default max severity toSeverity::Infoincli::score::runfor empty findings.📍Where to Start
Start with
output::write_humanin output.rs, then reviewcli::score::runin score.rs.Macroscope summarized fbfa5d9.