Skip to content

Add Info severity level and HTTPie/XH pipe-to-shell detection#43

Merged
sheeki03 merged 14 commits intomainfrom
feat/part1-info-severity-httpie
Feb 24, 2026
Merged

Add Info severity level and HTTPie/XH pipe-to-shell detection#43
sheeki03 merged 14 commits intomainfrom
feat/part1-info-severity-httpie

Conversation

@sheeki03
Copy link
Owner

@sheeki03 sheeki03 commented Feb 24, 2026

Summary

  • Add Info severity level for low-noise informational findings
  • Add HTTPie (http/https) and XH as monitored pipe-to-shell downloaders
  • Fix audit silent failures, output error handling
  • Bug fixes for schemeless URL detection, tokenizer, doctor, shell hooks

Test plan

  • All existing tests pass

🤖 Generated with Claude Code

Note

Emit INFO output for allowed verdicts and default max severity to Severity::Info in cli::score::run

Set the action label to INFO when verdict.action is Allow in human and no-color output, and default max severity to Severity::Info in cli::score::run for empty findings.

📍Where to Start

Start with output::write_human in output.rs, then review cli::score::run in score.rs.

Macroscope summarized fbfa5d9.

sheeki03 and others added 8 commits February 18, 2026 11:49
…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>
sheeki03 and others added 3 commits February 24, 2026 22:39
- 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>
sheeki03 and others added 2 commits February 25, 2026 00:31
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>
@sheeki03 sheeki03 merged commit b587439 into main Feb 24, 2026
9 checks passed
@sheeki03 sheeki03 deleted the feat/part1-info-severity-httpie branch February 24, 2026 21:58
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