Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
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.

··Feed·Contatto·Privacy·© 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 →
524 giorni faNon ancora revisionato
Condividi

CVE-2026-47103: Esecuzione di codice in 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

Versioni interessate: Python StateMachine >= 3.0.0, < 3.2.0

Corretto in: 3.2.0

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

Segnalato da: Sai Teja Erukude

CNA: VulnCheck

Pubblicato: 17 giugno 2026


Riepilogo

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

SCXMLProcessor accetta documenti SCXML e conserva attributi di espressione come <data expr="...">. Nelle versioni vulnerabili, queste stringhe di espressione attraversano il percorso di elaborazione del datamodel SCXML e alla fine raggiungono la funzione eval() integrata di Python senza sandbox.

Un attaccante che può fornire o influenzare un documento SCXML può inserire codice Python all'interno di un attributo <data expr="...">. Quando l'applicazione che consuma il documento SCXML analizza il file 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 riceve i documenti SCXML. I percorsi di input rischiosi includono:

  • File SCXML caricati.
  • Definizioni di workflow o state machine controllate dall'utente.
  • File di configurazione caricati da posizioni non attendibili.
  • Contenuti SCXML forniti da plugin, estensioni o integrazioni.
  • Qualsiasi funzionalità esposta alla rete che accetta o genera SCXML da input utente.

Uno sfruttamento riuscito può consentire:

  • 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 è:

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

Dettagli tecnici

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

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

La PoC utilizza un attributo <data expr="..."> perché questo percorso viene eseguito durante SCXMLProcessor.start(). Passare un dizionario globals vuoto a eval() non disabilita i built-in di Python; Python può comunque iniettare built-in 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:

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

Prova di concetto

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

run_poc.py non installa hook e non modifica il pacchetto target. 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:

root@kitploit:~
python -m venv .venv
.venv\Scripts\activate
python -m pip install -r requirements.txt
python run_poc.py

Evidenza attesa nelle versioni vulnerabili:

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

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

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

root@kitploit:~
python_statemachine_scxml_data_expr_eval_triggered

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

Rimedio

Aggiornare a Python StateMachine 3.2.0 o versioni successive.

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

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

Se un aggiornamento immediato non è possibile:

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

Cronologia della divulgazione

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

Crediti

Scoperta e segnalata da Sai Teja Erukude, 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
  • Advisory VulnCheck: https://www.vulncheck.com/advisories/python-statemachine-rce-via-scxml-eval-injection
  • Advisory 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