GHSA-g7jf-m9pq-rhmx: 
Python Análise e mitigação de vulnerabilidades

Summary

README says the agent "never gets a shell, never reads evidence or writes the workspace outside the audit log". Two gaps undercut that boundary. An agent that is steered by content inside hostile evidence (prompt injection) can use them.

  1. Option injection (CWE-88). Several MCP tools append the agent-supplied path as the last positional argument of a CLI and never check it for a leading -:
    • run_clamav: ["clamscan", "-r", "--no-summary", target_path]
    • run_strings, run_hashdeep, run_exiftool, run_ssdeep (extract/misc.py)
    • the yara scans (yara.py)
    • run_mmls (extract/tsk.py)
    • log2timeline (extract/plaso.py) A path such as --log=/any/file becomes a flag.
  2. Path containment is per-tool (CWE-22).
    • path_policy.resolve_allowed_path guards only list_directory and read_evidence_file, plus extract_to of extract_archive. Most other path-taking tools pass the raw string to the filesystem or a subprocess.
    • One of the two allowed roots is evidence_root, which the agent itself sets through scan_evidence(evidence_path) without validation.

PoC

Tested against main @ 10628fa with ClamAV 1.5.4, calling the real tool functions on a temporary case:

CallResult
run_clamav(target_path="--log=<outside>/written-by-clamscan.log")success; the log file is created outside every allowed root (and clamscan scans the server's working directory instead)
run_clamav(target_path="--remove=yes") with an EICAR file in the server's cwdsuccess; the file is deleted
read_evidence_file("/etc/hostname")Access denied: path is outside allowed directories
run_strings(target_path="/etc/hostname")success; the host file is indexed and readable via search/get_raw_output
scan_evidence("/etc", case_id="x"), then read_evidence_file("/etc/hostname")success; the agent chose its own root

Impact

A prompt-injected agent gets file write/append and deletion primitives through clamscan (--log, --remove, --move, --copy), plus the equivalent flags of the other tools. It can also read host files through any unguarded tool. Every call is still audited, but nothing prevents it.

Fix

The fix branch I will push to the temporary private fork handles part 1:

  • A helpers.cli_path() rewrites a leading - to ./-….
  • It is applied at every positional-path call site above.
  • Tests include one that drives the real clamscan (--log= no longer creates a file). Part 2 is a design choice for the maintainer, so I did not change it. Options:
  • Apply resolve_allowed_path to every path-taking tool.
  • Pin evidence_root from the CLI (for example alongside MULDER_CASE_ID) instead of taking it from scan_evidence.

Origem: NVD

Relacionado Python Vulnerabilidades:

CVE ID

Gravidade

Pontuação

Tecnologias

Nome do componente

Exploit CISA KEV

Tem correção

Data de publicação

GHSA-78cg-ph9m-rjjxMEDIUM6.2
  • Python logoPython
  • gunicorn_h1c
NãoSimNov 07, 2026
GHSA-jg6c-wvfg-fx69LOW2.1
  • Python logoPython
  • openapi-python-client
NãoSimNov 07, 2026
GHSA-ppv2-x5g2-5q78LOWN/A
  • Python logoPython
  • mulder-dfir
NãoNãoNov 07, 2026
GHSA-g7jf-m9pq-rhmxMEDIUMN/A
  • Python logoPython
  • mulder-dfir
NãoNãoNov 07, 2026
GHSA-wvcr-jpx6-3fjhMEDIUMN/A
  • Python logoPython
  • mulder-dfir
NãoNãoNov 07, 2026

Avaliação Gratuita de Vulnerabilidades

Avalie a sua postura de segurança na nuvem

Avalie suas práticas de segurança em nuvem em 9 domínios de segurança para avaliar seu nível de risco e identificar lacunas em suas defesas.

Avaliação de solicitação

Recursos adicionais da Wiz

Marque uma demonstração personalizada

Pronto para ver a Wiz em ação?

"A melhor experiência do usuário que eu já vi, fornece visibilidade total para cargas de trabalho na nuvem."
David EstlickCISO
"A Wiz fornece um único painel de vidro para ver o que está acontecendo em nossos ambientes de nuvem."
Adam FletcherDiretor de Segurança
"Sabemos que se a Wiz identifica algo como crítico, na verdade é."
Greg PoniatowskiChefe de Gerenciamento de Ameaças e Vulnerabilidades