
ETS5 Password Recovery Tool es una prueba de concepto para CVE-2021-36799
¿Has olvidado la contraseña de uno de tus proyectos de ETS5 y ya no puedes acceder a la configuración de la instalación KNX? La Herramienta de Recuperación de Contraseñas ETS5 te permite recuperar la contraseña del proyecto y otros secretos guardados en el almacén de proyectos del ETS5. Esto es posible porque el ETS5 tiene un fallo de diseño significativo: utiliza una contraseña y una sal fijas en el código para cifrar la información del proyecto (CVE-2021-36799).
Almacenar secretos criptográficos en el código fuente es desaconsejable porque pueden recuperarse mediante ingeniería inversa del software, ofreciendo así poca más protección que almacenar la información en texto claro. Esto puede suponer una amenaza para la seguridad de las instalaciones KNX. Si un atacante logra acceder a los archivos del almacén de proyectos, puede descifrarlos a pesar de no conocer la contraseña del proyecto. La información contenida permite espiar, suplantar y reconfigurar dispositivos KNX. Esto es particularmente problemático porque el ETS5 da a los usuarios la impresión de que la contraseña del proyecto se usaría para cifrar la información del proyecto, no solo para proyectos exportados. Por lo tanto, es probable que muchos usuarios e integradores de sistemas no hayan tomado medidas adicionales para garantizar la confidencialidad del almacén de proyectos. Si el ETS5 implementara correctamente el cifrado y se eligiera una contraseña de proyecto fuerte, supondría un desafío mucho mayor para un atacante, incluso si lograra acceso remoto al ordenador.
La siguiente información confidencial está cifrada de manera inadecuada:
La Herramienta de Recuperación de Contraseñas ETS5 es una prueba de concepto que demuestra el problema descifrando y mostrando la información sensible. Se desarrolló como parte de la divulgación coordinada de vulnerabilidades y se publica con permiso de la KNX Association. La publicación de la herramienta tiene los siguientes propósitos:
ADVERTENCIA: Use esta herramienta solo si está legalmente autorizado para ver la información del proyecto. Eludir las medidas de seguridad, incluso las ineficaces, para acceder a información que no tiene permiso de ver, puede ser un delito en su jurisdicción.
El ejecutable se puede descargar desde la sección de lanzamientos. No necesita instalación y se puede colocar en cualquier directorio de su elección.
Alternativamente, si no desea ejecutar un binario no confiable en su sistema, puede descifrar atributos individuales de los archivos XML del proyecto en el sitio web CyberChef.
El software depende de .NET Framework 4.6 o posterior. Windows 10 ya incluye una versión adecuada de .NET por defecto. Los usuarios de versiones anteriores de Windows deberán instalar una versión actual de .NET Framework para ejecutar el software.
Contrariamente a lo que sugiere la interfaz de usuario, el ETS5 no cifra sus archivos de proyecto almacenados localmente en C:\ProgramData\KNX\ETS5\ProjectStore con la contraseña del proyecto. En su lugar, utiliza la contraseña fija ETS5Password y la sal Ivan Medvedev para ofuscar atributos específicos en los archivos XML del proyecto. Los secretos criptográficos fijos en el código van en contra de las mejores prácticas, como se explica en CWE-798 y CWE-321.
El proceso de desofuscación es:
Ivan Medvedev como cadena codificada en ASCII o UTF-8.ETS5Password como contraseña y la representación en bytes de Ivan Medvedev como sal. Los primeros 32 bytes de la salida de la derivación de clave se usarán como clave y los siguientes 16 bytes como IV.Se puede encontrar una implementación de la desofuscación en el archivo Deobfuscator.cs. Dado que la contraseña y la sal son constantes, sería posible precalcular la clave y el IV para omitir la derivación de clave. Esto no se hace en la implementación de este software, ya que pretende mostrar todos los pasos de la desofuscación. Sin embargo, si necesita la clave y el IV, se muestran a continuación.
| Hex | Base64 | |
|---|---|---|
| Clave | 22BD16CDBB96B0E18E977BB3FEFADD8886E7E38A2F8A6FD9D2F2F5663AC20371 | Ir0WzbuWsOGOl3uz/vrdiIbn44ovim/Z0vL1ZjrCA3E= |
| IV | 8E977BB3FEFADD88E6AE6CBEAE3E7CAF | jpd7s/763Yjmrmy+rj58rw== |