Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
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.

··Feeds·Contato·Privacidade·© 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 →
Compartilhar
há 4 diasAinda não revisado

CVE-2026-47103: Execução Remota de Código no Python StateMachine via Injeção de eval() em 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

Afetados: Python StateMachine >= 3.0.0, < 3.2.0

Corrigido em: 3.2.0

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

Relatado por: Sai Teja Erukude

CNA: VulnCheck

Publicado: 17 de junho de 2026


Resumo

As versões do Python StateMachine 3.0.0 anteriores à 3.2.0 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() embutido do Python sem sandboxing.

Um atacante que possa fornecer ou influenciar um documento SCXML pode colocar código Python dentro de um atributo <data expr="...">. Quando o aplicativo consumidor 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 um aplicativo vulnerável processar conteúdo SCXML controlado pelo atacante.

A exposição pode ser remota ou local, dependendo de como o aplicativo consumidor recebe os documentos SCXML. Caminhos de entrada arriscados incluem:

  • Arquivos SCXML enviados por upload.
  • Definições de fluxo de trabalho ou 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 recurso exposto à rede que aceite ou gere SCXML a partir da 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 do aplicativo.
  • Chamar serviços internos acessíveis a partir do host.
  • Interromper ou substituir o comportamento do aplicativo.

Caminho Afetado

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

root@kitploit:~
SCXMLProcessor.parse_scxml_file()
SCXMLProcessor.process_definition()
create_datamodel_action_callable()
_create_dataitem_callable()
_eval()
eval()

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

Detalhe Técnico

O fluxo de controle vulnerável tem 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() puro 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:

root@kitploit:~
<data id="x" expr="__import__('pathlib').Path(...).write_text(...)"/>

O marcador é criado somente após o documento SCXML ser analisado e start() avaliar 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 as evidências do marcador antes/depois.

Execute somente em um ambiente de teste local:

root@kitploit:~
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:

root@kitploit:~
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 existe 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:

root@kitploit:~
python_statemachine_scxml_data_expr_eval_triggered

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

Remediaçã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() puro do Python. Abordagens mais seguras incluem:

  • Substituir o eval() puro 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.
  • Desativar a avaliação Python por padrão para SCXML 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 definição de fluxo de trabalho a clientes não autenticados.
  • Valide arquivos SCXML antes que eles cheguem ao SCXMLProcessor.
  • Execute o processamento de SCXML em um ambiente restrito e isolado, com privilégios mínimos.

Cronograma de Divulgação

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

Crédito

Descoberta e relatada por Sai Teja Erukude, com coordenação por meio da VulnCheck.

Referências

  • Registro CVE: https://www.cve.org/CVERecord?id=CVE-2026-47103
  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-47103
  • Comunicado da VulnCheck: https://www.vulncheck.com/advisories/python-statemachine-rce-via-scxml-eval-injection
  • Comunicado do GitHub: https://github.com/fgmacedo/python-statemachine/security/advisories/GHSA-v4jc-pm6r-3vj8
  • Notas de lançamento 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