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

··Feeds·Contacto·Privacidad·© 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 →
5hace 24 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 (asignado 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

Versiones afectadas: 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 asigna a CWE-94 (Control incorrecto de generación de código, inyección de código)

Reportado por: Sai Teja Erukude

CNA: VulnCheck

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 dependiendo de cómo la aplicación consumidora recibe los documentos SCXML. Las rutas de entrada de riesgo incluyen:

  • Archivos SCXML subidos.
  • Definiciones de flujo de trabajo o máquinas de estado controladas por el usuario.
  • Archivos de configuración cargados desde ubicaciones no confiables.
  • Contenido SCXML proporcionado por complementos, extensiones o integraciones.
  • Cualquier funcionalidad expuesta a la red que acepte o genere SCXML a partir de entradas 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 anfitrión.
  • Interrumpir o reemplazar el comportamiento de la aplicación.

Ruta afectada

La cadena de llamadas vulnerable reportada a VulnCheck es:

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

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

Detalle técnico

El flujo de control vulnerable tiene dos fallas de límite de confianza:

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

La PoC utiliza un atributo <data expr="..."> porque esta ruta se ejecuta durante SCXMLProcessor.start(). Pasar un diccionario de globales 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 útil de prueba inofensiva escribe un archivo marcador local:

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

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/después.

Ejecutar solo en un entorno de prueba local:

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

Evidencia esperada en versiones vulnerables:

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

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

La carga útil es intencionalmente inofensiva. Solo escribe esta cadena marcadora local:

root@kitploit:~
python_statemachine_scxml_data_expr_eval_triggered

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

Remediación

Actualice a Python StateMachine 3.2.0 o posterior.

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

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

Si no es posible una actualización inmediata:

  • No procese documentos SCXML de usuarios no confiables.
  • No exponga funcionalidades de carga SCXML o de definición de flujos de trabajo a clientes no autenticados.
  • Valide los archivos SCXML antes de que lleguen al SCXMLProcessor.
  • Ejecute el procesamiento 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, coordinado 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