Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-47103-python-statemachine-rce — Python StateMachine 3.0.0 < 3.2.0 RCE tramite valutazione non sicura di SCXML <data expr> e iniezione in Python eval(). | Kitploit
Strumenti/GitHubGitHub/saiteja-erukude/cve-2026-47103-python-statemachine-rce
Generazione di PayloadAnalisi delle VulnerabilitàExploitPenetration Testing
GitHubsaiteja-erukude/cve-2026-47103-python-statemachine-rce

CVE-2026-47103-python-statemachine-rce

Python StateMachine 3.0.0 < 3.2.0 RCE tramite valutazione non sicura di SCXML <data expr> e iniezione in Python eval().

Vedi Repository

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
289 giorni faNon ancora revisionato
Condividi

CVE-2026-47103: Esecuzione di codice remoto in Python StateMachine tramite iniezione eval() in SCXML

Gravità: Critica, CVSS 4.0 9.3, CVSS 3.1 9.8 (assegnata da VulnCheck, il CNA)

Vettore (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

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

Interessato: Python StateMachine >= 3.0.0, < 3.2.0

Corretto in: 3.2.0

CWE: CWE-95 (Neutralizzazione impropria delle direttive nel codice valutato dinamicamente, Eval Injection); corrisponde anche a CWE-94 (Controllo improprio della generazione di codice, Code Injection)

Scoperta e segnalata da: Sai Teja Erukude

Pubblicata: 17 giugno 2026


Riepilogo

Le versioni di Python StateMachine dalla 3.0.0 precedente alla 3.2.0 contengono una vulnerabilità di esecuzione di codice remoto nel percorso di elaborazione SCXML.

SCXMLProcessor accetta documenti SCXML e preserva gli attributi di espressione come <data expr="...">. Nelle versioni vulnerabili, queste stringhe di espressione passano attraverso il percorso di elaborazione del datamodel SCXML e raggiungono infine la funzione built-in eval() di Python senza sandboxing.

Un attaccante in grado di fornire o influenzare un documento SCXML può inserire codice Python all'interno di un attributo <data expr="...">. Quando l'applicazione che consuma il file analizza il documento SCXML e avvia il processore, l'espressione viene valutata nel contesto del processo Python ospitante.

Impatto

Un attaccante può eseguire codice Python arbitrario se un'applicazione vulnerabile elabora contenuti SCXML controllati dall'attaccante.

L'esposizione può essere remota o locale a seconda di come l'applicazione che consuma riceve i documenti SCXML. I percorsi di input a rischio includono:

  • File SCXML caricati.
  • Definizioni di workflow o macchine a stati controllate dall'utente.
  • File di configurazione caricati da posizioni non attendibili.
  • Contenuti SCXML forniti da plugin, estensioni o integrazioni.
  • Qualsiasi funzionalità esposta in rete che accetti o generi SCXML a partire da input dell'utente.

Un'exploitazione riuscita può consentire di:

  • Leggere o modificare file accessibili al processo ospitante.
  • Accedere a variabili d'ambiente e segreti dell'applicazione.
  • Chiamare servizi interni raggiungibili dall'host.
  • Interrompere o sostituire il comportamento dell'applicazione.

Percorso interessato

La catena di chiamate vulnerabile segnalata a VulnCheck è:

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

Il problema viene attivato quando un elemento del datamodel SCXML analizzato viene valutato durante l'avvio del processore.

Dettaglio tecnico

Il flusso di controllo vulnerabile presenta due fallimenti del confine di fiducia:

  1. Il processore SCXML accetta testo di espressione da un documento SCXML.
  2. Il testo dell'espressione viene valutato con la funzione Python grezza eval().

Il PoC utilizza un attributo <data expr="..."> perché questo percorso viene eseguito durante SCXMLProcessor.start(). Passare un dizionario globals vuoto a eval() non disabilita i builtin di Python; Python può comunque iniettare builtin utilizzabili nel contesto di valutazione. Di conseguenza, un'espressione può accedere a __import__ ed eseguire codice Python.

Un payload di prova innocuo scrive un file marcatore locale:

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

Il marker viene creato solo dopo che il documento SCXML è stato analizzato e start() valuta l'espressione del datamodel.

Proof of Concept

package_builder.py genera un file SCXML locale controllato dall'attaccante in malicious-charts/data_expr_start.scxml. Il file generato contiene un payload <data expr> benigno che scrive marker.txt in questa directory PoC.

run_poc.py non installa hook e non modifica il pacchetto di destinazione. Importa il pacchetto pubblicato python-statemachine==3.1.2, analizza il file SCXML generato con SCXMLProcessor.parse_scxml_file(...), avvia il processore e stampa le prove del marker prima/dopo.

Eseguire solo in un ambiente di test locale:

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

Evidenza attesa sulle versioni vulnerabili:

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

Il comportamento importante è che marker.txt non esiste prima di start(), poi esiste dopo, dimostrando che l'espressione SCXML è stata eseguita all'interno del processo Python ospitante.

Il payload è intenzionalmente innocuo. Scrive solo questa stringa di marcatore locale:

python_statemachine_scxml_data_expr_eval_triggered

Non genera una shell, non si connette a un servizio di rete, non legge segreti, non elimina dati né modifica file al di fuori della directory del PoC.

Remediation

Eseguire l'aggiornamento a Python StateMachine 3.2.0 o versione successiva.

Una correzione duratura dovrebbe evitare di valutare il testo delle espressioni SCXML controllato dall'attaccante con la eval() nativa di Python. Approcci più sicuri includono:

  • Sostituire la eval() nativa con un valutatore di espressioni vincolato.
  • Trattare la valutazione completa delle espressioni Python come una modalità esplicita per input attendibili.
  • Disabilitare la valutazione Python per impostazione predefinita per SCXML proveniente da fonti non attendibili.
  • Rifiutare o sanificare gli attributi delle espressioni SCXML pericolosi prima dell'elaborazione.

Se l'aggiornamento immediato non è possibile:

  • Non elaborare documenti SCXML provenienti da utenti non attendibili.
  • Non esporre le funzionalità di caricamento SCXML o di definizione dei workflow a client non autenticati.
  • Convalidare i file SCXML prima che raggiungano SCXMLProcessor.
  • Eseguire l'elaborazione SCXML in un ambiente isolato e limitato con privilegi minimi.

Cronologia della divulgazione

DataEvento
22 maggio 2026Vulnerabilità inviata a VulnCheck
26 maggio 2026VulnCheck ha avviato la divulgazione; CVE-2026-47103 assegnato in via provvisoria
17 giugno 2026CVE-2026-47103 pubblicato

Crediti

Scoperta e segnalata da Sai Teja Erukude.

La divulgazione è stata coordinata tramite VulnCheck.

Riferimenti

  • Record CVE: https://www.cve.org/CVERecord?id=CVE-2026-47103
  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-47103
  • Avviso VulnCheck: https://www.vulncheck.com/advisories/python-statemachine-rce-via-scxml-eval-injection
  • Avviso GitHub: https://github.com/fgmacedo/python-statemachine/security/advisories/GHSA-v4jc-pm6r-3vj8
  • Note di rilascio di Python StateMachine 3.2.0: https://github.com/fgmacedo/python-statemachine/releases/tag/v3.2.0
  • Progetto Python StateMachine: https://github.com/fgmacedo/python-statemachine
Scarica lo strumento