Los investigadores de la empresa de firmware y seguridad de la cadena de suministro Eclypsium afirman haber encontrado, lo que han denominado de forma exagerada, una “puerta trasera” en cientos de modelos de placas base del conocido fabricante de hardware Gigabyte.
De hecho, el titular de Eclypsium se refiere a ella no solo como una puerta trasera, sino en mayúsculas.
La buena noticia es que parece tratarse de una función legítima que se ha implementado mal, por lo que no es una puerta trasera en el sentido habitual de un agujero de seguridad que se ha insertado deliberadamente en un sistema informático para proporcionar acceso no autorizado en el futuro.
Por lo tanto, no es como si un visitante diurno abriera a sabiendas una ventana poco conocida en la parte trasera del edificio para poder volver al amparo de la oscuridad y robar.
La mala noticia es que parece ser una función legítima que se ha implementado mal, dejando a los ordenadores afectados potencialmente vulnerables al abuso de los ciberdelincuentes.
Es un poco como una ventana poco conocida en la parte trasera del edificio que se ha dejado sin cerrar por error.
El problema, según Ecylpsium, forma parte de un servicio de Gigabyte conocido como APP Center, que “te permite iniciar fácilmente todas las aplicaciones de GIGABYTE instaladas en tu sistema, comprobar en línea las actualizaciones relacionadas y descargar las últimas aplicaciones, controladores y BIOS”.
Actualizaciones automáticas con puntos débiles
Según los investigadores, el componente defectuoso de este ecosistema APP Center es un programa de Gigabyte llamado GigabyteUpdateService.exe, una aplicación .NET que se instala en el directorio %SystemRoot%\System32 (la raíz de tu sistema suele ser C:\Windows) y se ejecuta automáticamente al iniciarse como un servicio de Windows.
Los servicios son el equivalente en Windows a los procesos en segundo plano o demonios de los sistemas tipo Unix: generalmente se ejecutan bajo una cuenta de usuario propia, a menudo la cuenta SYSTEM, y siguen ejecutándose todo el tiempo, aunque cierres sesión y tu ordenador espere tranquilamente en la pantalla de inicio de sesión.
Este programa GigabyteUpdateService, al parecer, hace exactamente lo que sugiere su nombre: actúa como descargador e instalador automático de otros componentes de Gigabyte, entre los que se encuentran aplicaciones, controladores e incluso el propio firmware de la BIOS.
Desgraciadamente, según Eclypsium, obtiene y ejecuta el software desde una de las tres URL conectadas, y se programó de tal forma que:
- Una URL utiliza HTTP normal y corriente, por lo que no proporciona ninguna protección de integridad criptográfica durante la descarga. Un manipulador-en-el-medio (MitM) a través de cuyos servidores pasa tu tráfico de red puede no solo interceptar los archivos que descarga el programa, sino también modificarlos de forma indetectable por el camino, por ejemplo infectándolos con malware, o sustituyéndolos por archivos totalmente diferentes.
- Dos URL utilizan HTTPS, pero la utilidad de actualización no verifica el certificado HTTPS que devuelve el servidor del otro extremo. Esto significa que un MitM puede presentar un certificado web emitido en nombre del servidor que el descargador espera, sin necesidad de hacer validar y firmar ese certificado por una autoridad de certificación (CA) reconocida, como Let’s Encrypt, DigiCert o GlobalSign. Los impostores podrían simplemente crear un certificado falso y “avalarlo” ellos mismos.
- Los programas que el descargador obtiene y ejecuta no se validan criptográficamente para comprobar que proceden realmente de Gigabyte. Windows no permitirá que se ejecuten los archivos descargados si no están firmados digitalmente, pero la firma digital de cualquier organización servirá. Los ciberdelincuentes adquieren habitualmente sus propias claves de firma de código utilizando empresas pantalla falsas, o comprando en la red oscura claves robadas en violaciones de datos, ataques de ransomware, etcétera.
Eso ya es malo de por sí, pero hay algo más.
Inyectar archivos en Windows
No puedes salir y hacerte con una nueva versión de la utilidad GigabyteUpdateService, porque ese programa en concreto puede haber llegado a tu ordenador de forma inusual.
Puedes reinstalar Windows en cualquier momento, y una imagen estándar de Windows no sabe si vas a utilizar una placa base Gigabyte o no, por lo que no viene con GigabyteUpdateService.exe preinstalado.
Por tanto, Gigabyte utiliza una función de Windows conocida como WPBT, o Windows Platform Binary Table (Microsoft la presenta como una función, aunque puede que no estés de acuerdo cuando sepas cómo funciona).
Esta “función” permite a Gigabyte inyectar el programa GigabyteUpdateService en el directorio System32, directamente desde tu BIOS, aunque tu unidad C: esté cifrada con Bitlocker.
WPBT proporciona un mecanismo para que los fabricantes de firmware almacenen un archivo ejecutable de Windows en sus imágenes de la BIOS, lo carguen en la memoria durante el proceso de prearranque del firmware y, a continuación, le digan a Windows: “Una vez que hayas desbloqueado la unidad C: e iniciado el arranque, lee este bloque de memoria que te he dejado por ahí, escríbelo en el disco y ejecútalo al principio del proceso de arranque”.
Sí, has leído bien.
Según la propia documentación de Microsoft, solo se puede inyectar un programa en la secuencia de inicio de Windows de esta forma:
La ubicación del archivo en el disco es \Windows\System32\Wpbbin.exe en el volumen del sistema operativo.
Además, hay algunas limitaciones estrictas de codificación impuestas a ese programa Wpbbin.exe, en particular que:
WPBT solo admite aplicaciones nativas, en modo usuario, que son ejecutadas por el Administrador de Sesiones de Windows durante la inicialización del sistema operativo. Una aplicación nativa es una aplicación que no depende de la API de Windows (Win32). Ntdll.dll es la única dependencia DLL de una aplicación nativa. Una aplicación nativa tiene un subsistema PE de tipo 1 (IMAGE_SUBSYSTEM_NATIVE).
Del código en modo nativo a la aplicación .NET
Llegados a este punto, probablemente te estés preguntando cómo una aplicación nativa de bajo nivel que comienza su vida como Wpbbin.exe acaba siendo una aplicación de actualización basada en .NET llamada GigabyteUpdateService.exe que se ejecuta como un servicio normal del sistema.
Pues bien, del mismo modo que el firmware de Gigabyte (que no puede ejecutarse por sí mismo en Windows) contiene un programa WPBT IMAGE_SUBSYSTEM_NATIVE incrustado que “suelta” en Windows el código del modo nativo WPBT (que no puede ejecutarse como una aplicación normal de Windows) contiene una aplicación .NET integrada que “suelta” en el directorio System32 para que se inicie más tarde en el proceso de arranque de Windows.
En pocas palabras, tu firmware tiene una versión específica de GigabyteUpdateService.exe incorporada, y a menos que actualices tu firmware, y hasta que lo hagas, seguirás teniendo esa versión del servicio de actualización del APP Center “introducida” en Windows en el momento del arranque.
Aquí hay un problema obvio, el del huevo y la gallina, sobre todo (e irónicamente) que si dejas que el ecosistema del APP Center actualice tu firmware automáticamente, es muy posible que tu actualización acabe siendo gestionada por el mismo servicio de actualización vulnerable, cableado e integrado en el firmware que quieres sustituir.
En palabras de Microsoft (énfasis nuestro):
El objetivo principal de la WPBT es permitir que el software crítico persista aunque el sistema operativo haya cambiado o se haya reinstalado en una configuración “limpia”. Un caso de uso de la WPBT es permitir que el software antirrobo persista en caso de que un dispositivo haya sido robado, formateado y reinstalado. […] Esta funcionalidad es potente y proporciona a los proveedores de software independientes (ISV) y a los fabricantes de equipos originales (OEM) la capacidad de hacer que sus soluciones persistan en el dispositivo indefinidamente.
Dado que esta función proporciona la capacidad de ejecutar persistentemente software del sistema en el contexto de Windows, es fundamental que las soluciones basadas en WPBT sean lo más seguras posible y no expongan a los usuarios de Windows a condiciones explotables. En particular, las soluciones WPBT no deben incluir malware (es decir, software malicioso o no deseado instalado sin el consentimiento adecuado del usuario).
¿Qué hay que hacer?
¿Se trata realmente de una “puerta trasera”?
No lo creemos, porque preferimos reservar esa palabra concreta para comportamientos de ciberseguridad más peligrosos, como debilitar a propósito los algoritmos de cifrado, incorporar deliberadamente contraseñas ocultas, abrir vías de mando y control no documentadas, etc.
En cualquier caso, la buena noticia es que esta inyección de programas basada en WPBT es una opción de la placa base Gigabyte que puedes desactivar.
Los propios investigadores de Eclypsium dijeron: “Aunque este ajuste parece estar desactivado por defecto, estaba activado en el sistema que examinamos”, pero un lector de Naked Security dijo: “Acabo de construir un sistema con una placa Gigabyte ITX hace unas semanas y el Gigabyte App Center estaba [activado en la BIOS] nada más sacarlo de la caja”.
Así que, si tienes una placa base Gigabyte y te preocupa esta supuesta puerta trasera, puedes evitarla por completo: entra en la configuración de la BIOS y asegúrate de que la opción de Descarga e Instalación del Centro APP está desactivada.
Incluso puedes utilizar el software de seguridad de tu endpoint o el firewall de tu red corporativa para bloquear el acceso a las tres URL que están conectadas al inseguro servicio de actualización, que Eclypsium enumera como:
- http://mb.download.gigabyte.com/FileList/Swhttp/LiveUpdate4
- https://mb.download.gigabyte.com/FileList/Swhttp/LiveUpdate4
- https://software-nas SLASH Swhttp/LiveUpdate4
Para que quede claro, no hemos probado a bloquear estas URL, así que no sabemos si bloquearía el funcionamiento de otras actualizaciones necesarias o importantes de Gigabyte, aunque sospechamos que bloquear las descargas a través de esa URL HTTP es una buena idea de todos modos.
Suponemos, por el texto LiveUpdate4 en la parte de la ruta de la URL, que seguirás pudiendo descargar y gestionar las actualizaciones manualmente y desplegarlas a tu manera y en tu tiempo libre, pero es solo una suposición.
Además, estate atento a las actualizaciones de Gigabyte.
A ese programa GigabyteUpdateService no le vendría mal una mejora, y cuando lo parcheen, puede que tengas que actualizar el firmware de tu placa base, no solo el sistema Windows, para asegurarte de que no sigues teniendo la versión antigua enterrada en el firmware, esperando a volver a la vida en el futuro.
Y si eres un programador que está escribiendo código para gestionar descargas basadas en web en Windows, utiliza siempre HTTPS, y realiza siempre al menos un conjunto básico de comprobaciones de verificación de certificados en cualquier servidor TLS al que te conectes.