Skip to content

fix(security): allow the bare wget token the shell pass compares - #2648

Merged
DeusData merged 1 commit into
mainfrom
fix/audit-wget-token
Oct 15, 2026
Merged

DeusData merged 1 commit into
mainfrom
fix/audit-wget-token

Conversation

@DeusData

Copy link
Copy Markdown
Owner

Problem

The v0.12.0 release run (38644765106, main 8df0639) failed every smoke job that reached the binary string audit:

BLOCKED: Dangerous commands found in binary:
wget
=== BINARY STRING AUDIT FAILED ===

The flagged line is the bare string "wget" in src/pipeline/pass_shell.c (3b93db0, #2644): the shell pass compares a script's program name with it and records it as the via of a curl / wget HTTP_CALLS edge. The binary never runs it. Smoke was green on 0ca6e7d, before that commit.

Fix

scripts/security-strings.sh allows that whole line only (^wget$), the same shape as the existing ^telnet$ entry for the rst grammar's URI scheme table. A line that carries a wget command (flags, a target, a URL) is still blocked.

tests/test_security_strings_allowlist.sh pins both sides: the bare token passes, wget -O /tmp/payload stays blocked.

Proof

  • On the release run's own artifacts, linux-amd64-portable and darwin-arm64: BLOCKED ... wget with main's script; with this change all three audits OK (URLs, dangerous commands, credentials).
  • Negative control: a synthetic binary with a bare wget and a wget -O /tmp/payload line: the command line is still BLOCKED.
  • tests/test_security_strings_allowlist.sh: 49 passed. With the allowlist line reverted, the new bare-token case fails (48 passed, 1 failed).

No C source changes: the release binaries are byte-identical to 8df0639.

The v0.12.0 release smoke blocked every binary in its string audit:
"BLOCKED: Dangerous commands found in binary: wget". The line is the bare
string "wget" that src/pipeline/pass_shell.c compares a script's program
name with, and records as the `via` of a curl / wget HTTP_CALLS edge
(3b93db0). The binary never runs it.

Allow that whole line only, like the rst grammar's bare "telnet". A line
that carries a wget command (flags, a target, a URL) stays blocked; the
contract test now pins both cases.

Proof on the release run's own artifacts (run 38644765106, main 8df0639):
linux-amd64-portable and darwin-arm64 binaries BLOCKED before, all three
audits OK after. test_security_strings_allowlist.sh: 49 passed; with the
allowlist line reverted, the new bare-token case fails.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
@DeusData
DeusData merged commit dc516fe into main Oct 15, 2026
74 of 77 checks passed
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