Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
cve-2026-77521-lab — Reprodução benigna e autocontida da CVE-2026-77521 (execução de comandos com injeção de prompt no MaxKB) | Kitploit
Ferramentas/GitHubGitHub/inertfluid/cve-2026-77521-lab
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebAprendizado e EducaçãoSegurança de IALabs e Prática
GitHubinertfluid/cve-2026-77521-lab

cve-2026-77521-lab

Reprodução benigna e autocontida da CVE-2026-77521 (execução de comandos com injeção de prompt no MaxKB)

Ver Repositório
há 22 diasAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2026-77521 — laboratório de agente com injeção de prompt no MaxKB → execução de comandos

Um laboratório autocontido e benigno que reproduz GHSA-f36j-f34j-h3rx / CVE-2026-77521: no MaxKB (uma plataforma open-source de assistente de IA corporativo / RAG), qualquer assistente com uma ferramenta, ferramenta MCP, skill ou sub-aplicação recebe uma ferramenta execute de shell injetada automaticamente que não está atrás de um gate de aprovação humana — portanto, a injeção de prompt (a partir do chat ou de um documento ingerido) alcança um shell. Um sandbox deveria contê-la, mas uma string com shell=True permitia que metacaracteres escapassem dele.

AdvisoryGHSA-f36j-f34j-h3rx
CVECVE-2026-77521
Projeto1Panel-dev/MaxKB
Afetado< 2.10.5-lts
Corrigido2.10.5-lts (commit 594f50f) — parcial, veja abaixo
CVSS10.0 CRITICAL (AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H)
FraquezaCWE-78 (injeção de comando do SO) · CWE-250 (privilégios desnecessários) · CWE-749 (método perigoso exposto)

⚠️ Uso ético

Isto reproduz uma vulnerabilidade corrigida e divulgada publicamente para fins educacionais e defensivos. Ele é executado inteiramente localmente e de forma benigna:

  • Os PoCs determinísticos executam apenas comandos inofensivos (id, gravação de um arquivo marcador que o PoC exclui). Nenhum gosu/sandbox/root real está envolvido — o wrapper de redução de privilégios é substituído por um marcador env inerte para que a demonstração rode em qualquer lugar.
  • O PoC 3 chama um modelo real, mas apenas observa a chamada de ferramenta que ele emite; ele não a executa. O comando injetado é benigno. Aponte isto apenas para infraestrutura que você possui.

O bug, em um parágrafo

Um assistente do MaxKB com qualquer capacidade anexada é construído sobre deepagents com um SandboxShellBackend. O deepagents injeta automaticamente uma ferramenta execute de shell (além de read_file/write_file/…), e o MaxKB não usa excluded_tools, então execute está sempre presente. A configuração interrupt_on — que decide o que precisa de aprovação humana — é {"write_file": False, "read_file": False, "edit_file": False}: execute não está nela, então é executada sem nenhuma aprovação. Qualquer texto que possa direcionar o modelo (uma mensagem de chat, ou um documento envenenado que o pipeline RAG ingere) pode, portanto, fazer o agente executar comandos de shell. Em instalações a partir do código-fonte, SANDBOX vem desativado por padrão, então os comandos rodam como o usuário da aplicação; no contêiner oficial (root) o wrapper do sandbox era uma string com shell=True, então ;/>/$() eram executados fora do gosu, como root.

O que isto prova

  1. Ausência do gate human-in-the-loop (o núcleo do CVSS 10). Com o interrupt_on real do MaxKB, uma chamada execute injetada é executada sem aprovação; adicionar "execute": True a coloca atrás de um gate. → poc/01_missing_hitl_gate.py
  2. Escape do sandbox via metacaracteres de shell. Um ;+redirecionamento escapa do prefixo gosu de string única; a re-citação do _build_sandbox_command() do 2.10.5-lts neutraliza isso. → poc/02_sandbox_escape.py
  3. Um modelo real faz isso. Dado apenas um documento ingerido envenenado, um modelo real chama execute com o comando do atacante (e não o faz em um documento limpo). → poc/03_real_llm.py

A correção cobre apenas metade da falha

O patch 2.10.5-lts entregue (commit 594f50f) reforça apenas a fuga do sandbox — adiciona _build_sandbox_command(), que divide pelos operadores de shell, recoloca aspas em cada token com shlex.quote e envolve cada comando simples no prefixo gosu. Verificado contra o código-fonte v2.10.5-lts, o núcleo do agente está inalterado: interrupt_on ainda omite execute, o backend continua a ser SandboxShellBackend, e SANDBOX ainda tem como padrão 0. Portanto, após a correção, um execute injetado por prompt ainda é executado sem aprovação humana — a parede interior foi reforçada enquanto o portão permaneceu aberto. O PoC 1 demonstra a mitigação recomendada (portão em execute), que o fornecedor não entregou.

Executá-lo

Sem dependências para o PoC 1/2 (Python 3.9+):

./run.sh                               # all three (PoC 3 skips without an endpoint)
python3 poc/01_missing_hitl_gate.py    # missing approval gate
python3 poc/02_sandbox_escape.py       # metacharacter sandbox escape

Apresentando isto? DEMO.md é um runbook e demo.sh o conduz uma tecla de cada vez.

Opcional: PoC 3 contra um LLM real

Qualquer endpoint compatível com OpenAI (auto-hospedado ou modelo aberto hospedado). Exemplo (Groq):

export OPENAI_BASE_URL=https://api.groq.com/openai/v1
export OPENAI_API_KEY=$GROQ_API_KEY     # read from env only; never logged
MODEL="openai/gpt-oss-20b" python3 poc/03_real_llm.py

Atrás de um proxy de inspeção TLS, ele tenta novamente sem verificação com um aviso (INSECURE_SSL=1 para forçar). Ele é ignorado de forma limpa se nenhum endpoint estiver definido.

Arquivos

CaminhoO que é
sandbox_shell.pyModelo benigno da construção do comando execute() do MaxKB — string vulnerável vs _build_sandbox_command() corrigido
agent_sim.pyModelo mínimo do gate de aprovação humana interrupt_on do deepagents
payloads/poisoned-document.mdDocumento de KB envenenado pelo atacante (injeção indireta)
poc/01_missing_hitl_gate.pyexecute injetado é executado sem aprovação; o gating o bloqueia
poc/02_sandbox_escape.pyMetacaracteres escapam do prefixo gosu; o parser 2.10.5 os contém
poc/03_real_llm.pyUm modelo real chama execute a partir do documento envenenado (limpo vs envenenado)
DEMO.md / demo.shRunbook do apresentador e driver de demonstração com ritmo definido
assets/attack-flow.{svg,png}Diagrama do fluxo de ataque (destaque do blog)
assets/poc3-groq-sample.txtSaída gravada do PoC 3 (fallback da demonstração)
Baixar ferramenta