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-47103-python-statemachine-rce — Python StateMachine 3.0.0 < 3.2.0 RCE através de avaliação insegura de SCXML <data expr> e injeção de Python eval(). | Kitploit
Ferramentas/GitHubGitHub/saiteja-erukude/cve-2026-47103-python-statemachine-rce
Geração de PayloadsAnálise de VulnerabilidadesExploraçãoTestes de Penetração
GitHubsaiteja-erukude/cve-2026-47103-python-statemachine-rce

CVE-2026-47103-python-statemachine-rce

Python StateMachine 3.0.0 < 3.2.0 RCE através de avaliação insegura de SCXML <data expr> e injeção de Python eval().

Ver Repositório

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 →
28há 9 diasAinda não revisado
Compartilhar

CVE-2026-47103: Execução Remota de Código no Python StateMachine via injeção de eval() no SCXML

Severidade: Crítica, CVSS 4.0 9.3, CVSS 3.1 9.8 (atribuída pela VulnCheck, a CNA)

Vetor (v4.0): CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Vetor (v3.1): CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

Afetado: Python StateMachine >= 3.0.0, < 3.2.0

Corrigido em: 3.2.0

CWE: CWE-95 (Neutralização Imprópria de Diretivas em Código Avaliado Dinamicamente, Injeção de Eval); também mapeia para CWE-94 (Controle Impróprio da Geração de Código, Injeção de Código)

Descoberto e reportado por: Sai Teja Erukude

Publicado: 17 de junho de 2026


Resumo

As versões 3.0.0 até antes de 3.2.0 do Python StateMachine contêm uma vulnerabilidade de execução remota de código no caminho de processamento de SCXML.

O SCXMLProcessor aceita documentos SCXML e preserva atributos de expressão como <data expr="...">. Em versões vulneráveis, essas strings de expressão passam pelo caminho de processamento do datamodel SCXML e eventualmente chegam ao eval() nativo do Python sem sandbox.

Um atacante que consiga fornecer ou influenciar um documento SCXML pode inserir código Python dentro de um atributo <data expr="...">. Quando a aplicação consumidora analisa o arquivo SCXML e inicia o processador, a expressão é avaliada no contexto do processo Python hospedeiro.

Impacto

Um atacante pode executar código Python arbitrário se uma aplicação vulnerável processar conteúdo SCXML controlado pelo atacante.

A exposição pode ser remota ou local, dependendo de como a aplicação consumidora recebe documentos SCXML. Caminhos de entrada de risco incluem:

  • Arquivos SCXML enviados por upload.
  • Definições de workflow ou de máquina de estados controladas pelo usuário.
  • Arquivos de configuração carregados de locais não confiáveis.
  • Conteúdo SCXML fornecido por plugins, extensões ou integrações.
  • Qualquer funcionalidade exposta à rede que aceite ou gere SCXML a partir de entrada do usuário.

A exploração bem-sucedida pode permitir:

  • Ler ou modificar arquivos acessíveis ao processo hospedeiro.
  • Acessar variáveis de ambiente e segredos da aplicação.
  • Chamar serviços internos alcançáveis a partir do host.
  • Interromper ou substituir o comportamento da aplicação.

Caminho Afetado

A cadeia de chamadas vulnerável reportada à VulnCheck é:

SCXMLProcessor.parse_scxml_file()
SCXMLProcessor.process_definition()
create_datamodel_action_callable()
_create_dataitem_callable()
_eval()
eval()

O problema é acionado quando um item de datamodel SCXML analisado é avaliado durante a inicialização do processador.

Detalhe Técnico

O fluxo de controle vulnerável apresenta duas falhas de limite de confiança:

  1. O processador SCXML aceita texto de expressão de um documento SCXML.
  2. O texto da expressão é avaliado com o eval() bruto do Python.

O PoC usa um atributo <data expr="..."> porque esse caminho é executado durante SCXMLProcessor.start(). Passar um dicionário globals vazio para eval() não desativa os builtins do Python; o Python ainda pode injetar builtins utilizáveis no contexto de avaliação. Como resultado, uma expressão pode acessar __import__ e executar código Python.

Um payload de prova inofensivo grava um arquivo marcador local:

<data id="x" expr="__import__('pathlib').Path(...).write_text(...)"/>

O marcador é criado apenas depois que o documento SCXML é analisado e start() avalia a expressão do datamodel.

Prova de Conceito

package_builder.py gera um arquivo SCXML local controlado pelo atacante em malicious-charts/data_expr_start.scxml. O arquivo gerado contém um payload benigno <data expr> que grava marker.txt neste diretório do PoC.

run_poc.py não instala hooks e não modifica o pacote alvo. Ele importa o pacote publicado python-statemachine==3.1.2, analisa o arquivo SCXML gerado com SCXMLProcessor.parse_scxml_file(...), inicia o processador e imprime a evidência do marcador antes/depois.

Execute apenas em um ambiente de teste local:

python -m venv .venv
.venv\Scripts\activate
python -m pip install -r requirements.txt
python run_poc.py

Evidência esperada em versões vulneráveis:

statemachine_version: 3.1.2
installed_package: True
data_marker_before_start: False
data_marker_after_start: True
marker_contents:
python_statemachine_scxml_data_expr_eval_triggered
success: True

O comportamento importante é que marker.txt não existe antes de start(), mas passa a existir depois, provando que a expressão SCXML foi executada dentro do processo Python hospedeiro.

O payload é intencionalmente inofensivo. Ele apenas grava esta string de marcador local:

python_statemachine_scxml_data_expr_eval_triggered

Ele não abre um shell, conecta-se a um serviço de rede, lê segredos, exclui dados ou modifica arquivos fora do diretório do PoC.

Correção

Atualize para o Python StateMachine 3.2.0 ou posterior.

Uma correção duradoura deve evitar avaliar texto de expressão SCXML controlado pelo atacante com o eval() bruto do Python. Abordagens mais seguras incluem:

  • Substituir o eval() bruto por um avaliador de expressões restrito.
  • Tratar a avaliação completa de expressões Python como um modo explícito de entrada confiável.
  • Desabilitar a avaliação Python por padrão para SCXML proveniente de fontes não confiáveis.
  • Rejeitar ou sanitizar atributos de expressão SCXML perigosos antes do processamento.

Se a atualização imediata não for possível:

  • Não processe documentos SCXML de usuários não confiáveis.
  • Não exponha recursos de upload de SCXML ou de definição de fluxo de trabalho a clientes não autenticados.
  • Valide os arquivos SCXML antes que cheguem ao SCXMLProcessor.
  • Execute o processamento de SCXML em um ambiente restrito e isolado, com privilégios mínimos.

Cronologia da Divulgação

DataEvento
22 de maio de 2026Vulnerabilidade enviada ao VulnCheck
26 de maio de 2026VulnCheck iniciou a divulgação; CVE-2026-47103 alocado provisoriamente
17 de junho de 2026CVE-2026-47103 publicado

Créditos

Descoberto e reportado por Sai Teja Erukude.

A divulgação foi coordenada pelo VulnCheck.

Referências

  • Registro CVE: https://www.cve.org/CVERecord?id=CVE-2026-47103
  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-47103
  • Aviso do VulnCheck: https://www.vulncheck.com/advisories/python-statemachine-rce-via-scxml-eval-injection
  • Aviso do GitHub: https://github.com/fgmacedo/python-statemachine/security/advisories/GHSA-v4jc-pm6r-3vj8
  • Notas de versão do Python StateMachine 3.2.0: https://github.com/fgmacedo/python-statemachine/releases/tag/v3.2.0
  • Projeto Python StateMachine: https://github.com/fgmacedo/python-statemachine
Baixar ferramenta