Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-47103-python-statemachine-rce — Python StateMachine 3.0.0 < 3.2.0 RCE mediante evaluación insegura de <data expr> de SCXML e inyección de eval() de Python. | Kitploit
Herramientas/GitHubGitHub/saiteja-erukude/cve-2026-47103-python-statemachine-rce
Generación de PayloadsAnálisis de VulnerabilidadesExplotaciónPruebas de Penetración
GitHubsaiteja-erukude/cve-2026-47103-python-statemachine-rce

CVE-2026-47103-python-statemachine-rce

Python StateMachine 3.0.0 < 3.2.0 RCE mediante evaluación insegura de <data expr> de SCXML e inyección de eval() de Python.

Ver Repositorio

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
28hace 9 díasAún no revisado
Compartir

CVE-2026-47103: Ejecución remota de código en Python StateMachine mediante inyección de eval() en SCXML

Gravedad: Crítica, CVSS 4.0 9.3, CVSS 3.1 9.8 (asignada por VulnCheck, el CNA)

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

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

Afectado: Python StateMachine >= 3.0.0, < 3.2.0

Corregido en: 3.2.0

CWE: CWE-95 (Neutralización incorrecta de directivas en código evaluado dinámicamente, inyección de eval); también se corresponde con CWE-94 (Control incorrecto de la generación de código, inyección de código)

Descubierto y reportado por: Sai Teja Erukude

Publicado: 17 de junio de 2026


Resumen

Las versiones de Python StateMachine 3.0.0 anteriores a 3.2.0 contienen una vulnerabilidad de ejecución remota de código en la ruta de procesamiento de SCXML.

El SCXMLProcessor acepta documentos SCXML y conserva atributos de expresión como <data expr="...">. En las versiones vulnerables, esas cadenas de expresión pasan por la ruta de procesamiento del modelo de datos SCXML y finalmente llegan al eval() integrado de Python sin sandboxing.

Un atacante que pueda proporcionar o influir en un documento SCXML puede colocar código Python dentro de un atributo <data expr="...">. Cuando la aplicación consumidora analiza el archivo SCXML e inicia el procesador, la expresión se evalúa en el contexto del proceso Python anfitrión.

Impacto

Un atacante puede ejecutar código Python arbitrario si una aplicación vulnerable procesa contenido SCXML controlado por el atacante.

La exposición puede ser remota o local según cómo reciba la aplicación consumidora los documentos SCXML. Las rutas de entrada de riesgo incluyen:

  • Archivos SCXML subidos.
  • Definiciones de flujo de trabajo o de máquina de estados controladas por el usuario.
  • Archivos de configuración cargados desde ubicaciones no confiables.
  • Contenido SCXML proporcionado por plugins, extensiones o integraciones.
  • Cualquier funcionalidad expuesta a la red que acepte o genere SCXML a partir de la entrada del usuario.

Una explotación exitosa puede permitir:

  • Leer o modificar archivos accesibles para el proceso anfitrión.
  • Acceder a variables de entorno y secretos de la aplicación.
  • Llamar a servicios internos accesibles desde el host.
  • Interrumpir o reemplazar el comportamiento de la aplicación.

Ruta afectada

La cadena de llamadas vulnerable reportada a VulnCheck es:

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

El problema se activa cuando un elemento del modelo de datos SCXML analizado se evalúa durante el arranque del procesador.

Detalle técnico

El flujo de control vulnerable presenta dos fallos de límite de confianza:

  1. El procesador SCXML acepta texto de expresión procedente de un documento SCXML.
  2. El texto de la expresión se evalúa con la función eval() nativa de Python.

La PoC utiliza un atributo <data expr="..."> porque esta ruta se ejecuta durante SCXMLProcessor.start(). Pasar un diccionario de globals vacío a eval() no desactiva los builtins de Python; Python aún puede inyectar builtins utilizables en el contexto de evaluación. Como resultado, una expresión puede acceder a __import__ y ejecutar código Python.

Una carga de prueba inofensiva escribe un archivo marcador local:

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

El marcador se crea solo después de que se analiza el documento SCXML y start() evalúa la expresión del modelo de datos.

Prueba de concepto

package_builder.py genera un archivo SCXML local controlado por el atacante en malicious-charts/data_expr_start.scxml. El archivo generado contiene una carga útil benigna <data expr> que escribe marker.txt en este directorio de PoC.

run_poc.py no instala hooks ni modifica el paquete objetivo. Importa el paquete publicado python-statemachine==3.1.2, analiza el archivo SCXML generado con SCXMLProcessor.parse_scxml_file(...), inicia el procesador e imprime la evidencia del marcador antes y después.

Ejecutar solo en un entorno de prueba local:

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

Evidencia esperada en versiones vulnerables:

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

El comportamiento importante es que marker.txt no existe antes de start(), y luego existe después, lo que demuestra que la expresión SCXML se ejecutó dentro del proceso Python anfitrión.

El payload es intencionalmente inofensivo. Solo escribe esta cadena de marcador local:

python_statemachine_scxml_data_expr_eval_triggered

No genera un shell, no se conecta a un servicio de red, no lee secretos, no elimina datos ni modifica archivos fuera del directorio del PoC.

Remediación

Actualice a Python StateMachine 3.2.0 o posterior.

Una corrección duradera debería evitar la evaluación de texto de expresiones SCXML controlado por el atacante con eval() de Python sin restricciones. Los enfoques más seguros incluyen:

  • Reemplazar eval() sin restricciones por un evaluador de expresiones restringido.
  • Tratar la evaluación completa de expresiones de Python como un modo explícito de entrada confiable.
  • Deshabilitar la evaluación de Python por defecto para SCXML proveniente de fuentes no confiables.
  • Rechazar o sanear los atributos de expresión SCXML peligrosos antes de su procesamiento.

Si no es posible una actualización inmediata:

  • No procese documentos SCXML de usuarios no confiables.
  • No exponga funciones de carga de SCXML o de definición de flujos de trabajo a clientes no autenticados.
  • Valide los archivos SCXML antes de que lleguen a SCXMLProcessor.
  • Ejecute el procesamiento de SCXML en un entorno restringido y aislado con privilegios mínimos.

Cronología de divulgación

FechaEvento
22 de mayo de 2026Vulnerabilidad enviada a VulnCheck
26 de mayo de 2026VulnCheck inició la divulgación; CVE-2026-47103 asignado provisionalmente
17 de junio de 2026CVE-2026-47103 publicado

Créditos

Descubierto y reportado por Sai Teja Erukude.

La divulgación fue coordinada a través de VulnCheck.

Referencias

  • Registro CVE: https://www.cve.org/CVERecord?id=CVE-2026-47103
  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-47103
  • Aviso de VulnCheck: https://www.vulncheck.com/advisories/python-statemachine-rce-via-scxml-eval-injection
  • Aviso de GitHub: https://github.com/fgmacedo/python-statemachine/security/advisories/GHSA-v4jc-pm6r-3vj8
  • Notas de la versión 3.2.0 de Python StateMachine: https://github.com/fgmacedo/python-statemachine/releases/tag/v3.2.0
  • Proyecto Python StateMachine: https://github.com/fgmacedo/python-statemachine
Descargar herramienta