Sobre la vulnerabilidad
La vulnerabilidad CVE-2024-2658 se identificó en 2024 en el componente FlexNet Publisher, utilizado en Schneider Electric Floating License Manager. Este software se emplea para administrar licencias en productos de Schneider Electric, que se usan en la automatización integral de procesos productivos: desde la programación de controladores lógicos programables (PLC) hasta la creación de paneles de supervisión centralizados. A continuación, mostramos cómo una sola vulnerabilidad puede convertirse en una amenaza para una empresa industrial y explicamos cómo detectarla para minimizar los riesgos.
El problema pertenece a la clase CWE-427: Uncontrolled Search Path Element. Ocurre porque la aplicación del sistema accede al archivo de configuración de OpenSSL mediante una ruta fija en el código, sin imponer restricciones de acceso a dicho archivo.
Esta característica permite que un usuario local sin privilegios administrativos prepare su propio archivo de configuración de OpenSSL y logre que se cargue una DLL externa en el proceso del sistema lmadmin.exe, el servicio encargado de las licencias. Como resultado, el código del atacante puede ejecutarse ya en el contexto del servicio, y no de un usuario común. Bajo ciertas condiciones, esto abre el camino hacia una escalada de privilegios adicional hasta el nivel NT AUTHORITY\SYSTEM.
En ese caso, el atacante puede obtener acceso completo a los archivos de configuración locales, datos de servicio y secretos disponibles en ese host. La posibilidad de moverse lateralmente hacia otros nodos de la red industrial, como estaciones de trabajo de ingenieros, depende de la conectividad de red, la existencia de credenciales almacenadas y la arquitectura de red. Además, el atacante puede interrumpir el funcionamiento del servidor de licencias, lo que afecta de forma directa la disponibilidad del software de ingeniería y de las operaciones de mantenimiento.
A continuación, explicamos qué papel desempeña el componente FlexNet Publisher dentro del software Schneider Electric Floating License Manager (en adelante, Schneider Electric FLM), por qué la ruta fija hacia openssl.cnf dentro de la aplicación resultó peligrosa, cómo es la cadena de explotación de la vulnerabilidad y qué medidas deben tomarse.
Papel de FlexNet Publisher en Schneider Electric FLM
FlexNet Publisher es un producto de terceros de la empresa Flexera Software. Los desarrolladores de la plataforma Schneider Electric FLM y de muchas otras soluciones integran FlexNet Publisher como biblioteca para administrar el licenciamiento de sus productos.
El problema de FlexNet Publisher radica en que, hasta la versión 11.19.6.0 inclusive, esta biblioteca no controlaba el acceso de usuarios con pocos privilegios al archivo openssl.cnf. Este es un ejemplo clásico de vulnerabilidad de la clase Uncontrolled Search Path Element (CWE-427).
En total, Schneider Electric FLM reúne varios componentes interrelacionados.
lmadmin.exe: daemon ligero de 32 bits que atiende las solicitudes de licencia de módulos PLC, HMI y SCADA. Durante la instalación, este componente se registra de forma automática como el servicio de Windows lmadminSchneider. El servicio se inicia de forma automática y se ejecuta con la cuenta NT AUTHORITY\LOCAL SERVICE.- Archivo de configuración
openssl.cnfdel subdirectorio OpenSSL-contrib. Este archivo puede contener la ruta hacia el engine module, una DLL que FlexNet puede cargar en el proceso lmadmin.exe. La ruta del archivo de configuración está fija en el código de la aplicación y tiene la siguiente forma:
1C:\cygwin\home\nightly\LMADMI~1.4\tier1\lmadmin\contrib\openssl\_RELEA~1\openssl\openssl.cnf
Aquí,LMADMI~1.4es el nombre del directorio en el formato de nomenclatura de archivos de MS-DOS. Cualquier usuario con permiso para crear directorios en la raíz deC:\puede recrear esta estructura (por defecto, todos los usuarios autenticados cuentan con ese permiso). Por defecto, esta carpeta no existe después de instalar Schneider Electric FLM. - El componente FlexNet Publisher mencionado (antes FLEXlm) es una biblioteca de administración de licencias que, al iniciarse, lee el archivo de configuración
openssl.cnfy analiza la sección[engine]. Si esta sección contiene el parámetrodynamic_path, FlexNet Publisher carga el módulo DLL indicado en dicho parámetro sin ninguna verificación. - Portal web de Schneider Electric FLM: un pequeño servidor HTTP integrado en el proceso lmadmin.exe que da acceso a dos secciones: Dashboard (disponible sin autenticación) y Administration (protegida con contraseña). Dado que el portal web y lmadmin.exe se ejecutan en el mismo espacio de direcciones, el código cargado a través de FlexNet Publisher se ejecuta dentro del proceso
lmadmin.exe. Esto permite que el atacante intercepte la contraseña de la sección Administration y la use para extender el ataque a otros sistemas.
Ruta de explotación
Para explotar la vulnerabilidad, el atacante necesita poder ejecutar código arbitrario en el sistema local donde está instalado el servicio vulnerable. La principal falla que aprovecha el atacante consiste en que, en una configuración típica de Windows, los permisos NTFS sobre la raíz del disco del sistema pueden permitir que el grupo Authenticated Users cree nuevos directorios. Si estos permisos de acceso (ACL) no se han restringido, un atacante sin privilegios administrativos puede recrear la ruta que lmadmin.exe utiliza para buscar la configuración de OpenSSL:
|
1 |
C:\cygwin\home\nightly\LMADMI~1.4\tier1\lmadmin\contrib\openssl\_RELEA~1\openssl\ |
A continuación, en el archivo de configuración openssl.cnf creado, el atacante indica la ruta hacia un engine module malicioso, ubicado en un directorio con permiso de escritura, por ejemplo: dynamic_path = C:\\Users\\public\\malicious.dll. Al inicializar OpenSSL, FlexNet Publisher procesa esta sección y, al encontrar el parámetro dynamic_path, lo utiliza para cargar la DLL preparada por el atacante. Dado que las versiones vulnerables de FlexNet permiten cargar la configuración de OpenSSL desde una ubicación originalmente inexistente y no confiable, el proceso lmadmin.exe acepta como legítimo al archivo de configuración creado por el atacante.
Para que lmadmin.exe lea el archivo openssl.cnf y cargue la DLL maliciosa, es necesario reiniciar el servicio lmadminSchneider. Esto puede ocurrir bajo las siguientes condiciones:
- Como resultado de un reinicio normal del host.
- Cuando el usuario cuenta con permisos para administrar dicho servicio (por defecto, el grupo Authenticated Users no tiene ese permiso).
En el momento en que se inicia el servicio lmadmin.exe, el componente FlexNet Publisher inicializa OpenSSL, abre el archivo de configuración openssl.cnf y procesa la sección [engine]. Si esta contiene dynamic_path, OpenSSL carga el módulo DLL correspondiente en el proceso lmadmin.exe. A partir de ese momento, el código dentro de la DLL comienza a ejecutarse en el contexto del proceso lmadmin.exe. Dado que el servicio se ejecuta con la cuenta NT AUTHORITY\LOCAL SERVICE, el código malicioso obtiene los privilegios de dicho servicio.
Aunque la cuenta NT AUTHORITY\LOCAL SERVICE tiene privilegios bastante limitados, existe el riesgo de una escalada de privilegios adicional. Este riesgo se debe a que, en la configuración estándar, el proceso del servicio recibe el privilegio SeImpersonatePrivilege, que le permite asumir el contexto de seguridad del cliente después de la autenticación.
Con un escenario de interacción adecuado a través de RPC, COM o canales con nombre (named pipes), esto puede aprovecharse para una escalada de privilegios local adicional hasta el nivel NT AUTHORITY\SYSTEM. Para ello se emplean, por ejemplo, técnicas de la familia Potato y otros métodos basados en el abuso de la suplantación de identidad (impersonation). Así, a pesar de la trivialidad de cada acción por separado, en conjunto forman una cadena de explotación completa, que va desde un usuario local con pocos privilegios hasta la ejecución de código en el contexto del servicio y, cuando existen condiciones adicionales, permite escalar privilegios hasta el nivel NT AUTHORITY\SYSTEM.
Cómo mitigar la explotación de la CVE-2024-2658
- Si la organización no utiliza licencias flotantes (floating license), recomendamos eliminar el software Schneider Electric FLM o no instalarlo en los equipos donde no se requiera este producto. Siempre que sea posible, recomendamos usar licencias vinculadas a un nodo específico.
- Schneider Electric FLM debe alojarse en un servidor dedicado con acceso restringido para los usuarios.
- Recomendamos crear el directorio
C:\cygwinmediante una cuenta administrativa y denegar al grupo Authenticated Users el permiso de escritura en dicho directorio. Esto limita la posibilidad de colocar un archivo de configuración falso de OpenSSL en la ruta definida. - También recomendamos actualizar Schneider Electric FLM a la versión 3.0.0.0 o superior.
Detección mediante soluciones de Kaspersky
La solución Kaspersky Industrial CyberSecurity detecta con éxito la explotación de esta vulnerabilidad. El módulo Vulnerability Manager identifica la presencia de la versión vulnerable del software en la estación de trabajo, y el módulo de comportamiento detecta cada etapa de la explotación, desde la creación del archivo de configuración malicioso en el disco hasta el intento de carga de la biblioteca maliciosa por parte del servicio vulnerable.
La tarjeta de alerta de KICS reúne información adicional sobre el intento de explotación de la vulnerabilidad y las acciones de protección recomendadas.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Descripción El componente Exploit Prevention de la aplicación EPP detectó intentos de explotar una vulnerabilidad en un proceso protegido. Este tipo de ataque puede provocar la ejecución de código malicioso, acceso no autorizado o el compromiso de la integridad del sistema. Datos de la aplicación EPP: ● Nombre del objeto: C:\Program Files (x86)\Schneider Electric\Floating License Manager\FLEXnet Publisher License Server Manager\lmadmin.exe. ● Estado: No tratable. ● Hash MD5: c3f57667d9e8e1b2375ba09cdf71cac8. ● Hash SHA256: 9dab845704d1999ec8ed089594cfd2173a08057f1caf9a2346c22c81039dbb7a. Mitigaciones: ● Analice el evento e identifique qué desencadenó la ejecución o la interacción con el proceso. ● Verifique que esta vulnerabilidad sea relevante para su sistema (revise la versión del software y las actualizaciones instaladas). ● Si se confirma la explotación de la vulnerabilidad, aísle el dispositivo y busque señales de compromiso (archivos sospechosos y sus sumas de verificación, procesos o servicios desconocidos, o consultas a direcciones IP o FQDN externos). Verifique también si existen rastros similares en otros dispositivos. ● Instale las actualizaciones de seguridad del software o sistema operativo atacado y, si es necesario, ejecute un análisis completo del dispositivo. |
También es posible usar la tarea de escaneo OVAL en los productos KICS para identificar de forma anticipada la presencia de la vulnerabilidad en el host, como parte de un proceso continuo de administración de vulnerabilidades. En la captura de pantalla se muestra cómo KICS for Nodes detecta la versión vulnerable del software.
Conclusión
La vulnerabilidad CVE-2024-2658 demuestra las consecuencias que puede tener un control insuficiente al cargar archivos de dependencias. En el caso de Schneider Electric Floating License Manager, un usuario local sin privilegios administrativos puede crear un archivo de configuración openssl.cnf, colocarlo en la ruta necesaria y lograr que se cargue una DLL maliciosa en el contexto del servicio lmadmin.exe. Y, si el sistema está configurado de cierta forma, esta cadena de acciones puede llevar a una escalada de privilegios hasta el nivel NT AUTHORITY\SYSTEM.
Para corregir la vulnerabilidad, recomendamos actualizar el componente afectado (FlexNet Publisher) a una versión corregida. Además, es necesario restringir el permiso de escritura de usuarios sin privilegios en el directorio C:\cygwin. Estas medidas reducen de forma significativa el riesgo de explotación de la vulnerabilidad, y las soluciones Kaspersky Industrial CyberSecurity ofrecen una capa adicional de protección al identificar acciones sospechosas en las etapas tempranas del ataque.








Administrador de licencias de alto riesgo: cómo una vulnerabilidad en el software de Schneider Electric es un peligro para empresas industriales