Skip to content

fix(security): prevent shell injection in sudo password piping#65

Merged
teknium1 merged 1 commit into
NousResearch:mainfrom
leonsgithub:fix/sudo-password-shell-injection
Feb 27, 2026
Merged

fix(security): prevent shell injection in sudo password piping#65
teknium1 merged 1 commit into
NousResearch:mainfrom
leonsgithub:fix/sudo-password-shell-injection

Conversation

@leonsgithub

Copy link
Copy Markdown

Problem

The sudo password in _transform_sudo_command() was embedded in a shell command using single-quote interpolation:

return f"echo '{sudo_password}' | sudo -S -p ''"

If the password contained shell metacharacters (single quotes, $(), backticks), they would escape the quoting and be interpreted by the shell — enabling arbitrary command execution.

Example — a password like test'; rm -rf / # produces:

echo 'test'; rm -rf / #' | sudo -S -p ''
       ^^^^^^^^^^^ executed as a separate command

Fix

Use shlex.quote() which properly handles all shell-special characters:

import shlex
return f"echo {shlex.quote(sudo_password)} | sudo -S -p ''"

The same attack payload now produces:

echo 'test'"'"'; rm -rf / #' | sudo -S -p ''
      ^^^^^^^^^^^^^^^^^^^^^^^^ entire string treated as echo argument

Scope

Single file, 3-line change in tools/terminal_tool.py. No behavior change for normal passwords — shlex.quote() is a no-op for simple alphanumeric strings.

The sudo password was embedded in shell commands via single-quote
interpolation: echo '{password}' | sudo -S

If the password contained shell metacharacters (single quotes,
$(), backticks), they would be interpreted by the shell, enabling
arbitrary command execution.

Fix: use shlex.quote() which properly escapes all shell-special
characters, ensuring the password is always treated as a literal
string argument to echo.
@teknium1 teknium1 merged commit 547ba73 into NousResearch:main Feb 27, 2026
angelburgosrosado pushed a commit to angelburgosrosado/hermes-agent that referenced this pull request Apr 27, 2026
…-shell-injection

fix(security): prevent shell injection in sudo password piping
alnimra added a commit to alnimra/hermes-agent that referenced this pull request May 3, 2026
olympus-terminal pushed a commit to olympus-terminal/hermes-agent that referenced this pull request May 16, 2026
…-shell-injection

fix(security): prevent shell injection in sudo password piping
Egavasyug pushed a commit to Egavasyug/hermes-agent that referenced this pull request Jun 10, 2026
…-shell-injection

fix(security): prevent shell injection in sudo password piping
jarvis-stark-ops added a commit to 1Team-Engineering/hermes-agent that referenced this pull request Jun 10, 2026
…arch#34, NousResearch#65)

- NousResearch#33 GH_TOKEN propagation: _inject_gh_token_into_env runs `gh auth
  token` before each worker subprocess.Popen and injects into env if
  the worker doesn't have GH_TOKEN/GITHUB_TOKEN.
- NousResearch#34 respawn_guarded active_pr exempts review roles (tony/tchalla/
  vision/reviewer). Bounded: exemption only applies while
  consecutive_failures < max_retries; once exhausted the guard fires.
- NousResearch#65 fabricated github-auth block claims rejected:
  FabricatedAuthClaimError raised when kanban_block reason matches
  auth-claim pattern AND dispatcher's `gh auth status` succeeds.
  Strict leading-position regex with cause:/blocker:/reason:/infra:
  prefix exemption.

Context: hermes-jarvis#61. 33 tests pass.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.

3 participants