Nota: Desde el 22 de febrero de 2022, todas las referencias en esta entrada deben entenderse realizadas a la recién publicada versión 2021.3.2, que incluye la solución a estos y otro fallo de seguridad, que permitía leer contenidos del escritorio desde pantallas seguras con la navegación por objetos.
Cuando pensamos en el desarrollo de un lector de pantalla, nos imaginamos que se centra exclusivamente en mejorar su integración con el sistema operativo, dar compatibilidad con una aplicación específica o añadir una nueva característica que facilite la vida a las personas ciegas. Lo que nunca nos podríamos imaginar es que un lector de pantalla puede comprometer la seguridad del sistema de una manera que ni los expertos en ciberseguridad de hoy en día ni los hackers (por suerte) tienen en cuenta, y que existen desarrolladores preocupados por esa seguridad, pero ha sido el caso de NVDA durante los últimos años.
Para comenzar la historia que compartimos en esta entrada, debemos remontarnos tres meses atrás. El 14 de noviembre de 2021, un colaborador de la comunidad internacional abrió la incidencia 13056, en la que avisaba de una vulnerabilidad que permite a un atacante escalar privilegios y ejecutar programas desde una pantalla segura si NVDA está en ejecución. Por pantallas seguras entendemos las siguientes:

  • El diálogo de confirmación del control de cuentas de usuario.
  • La pantalla de bloqueo de Windows, pero sólo en el momento que nos solicita la contraseña o el pin para desbloquear la sesión.
  • El diálogo que se muestra al pulsar la combinación control+alt+suprimir.
  • Y la última y más importante: la pantalla de inicio de sesión de Windows.

Esta vulnerabilidad se explota asignando un atajo para abrir rápidamente el gestor de complementos y copiando la configuración para que pueda usarse en pantallas seguras. Tras pulsar el atajo asignado en una pantalla segura, el administrador de complementos se carga, a pesar de que no aparece en el menú NVDA y no debería poder cargarse. Desde ahí, el botón Instalar carga un diálogo de apertura de archivos, que abre un inmenso abanico de posibilidades al atacante. En versiones de Windows anteriores a Windows 11, al pulsar el botón Obtener Complementos, es Internet Explorer el que se abre, ofreciendo todavía más posibilidades.
El mismo día que se abrió la incidencia 13056, como esta no cumplía todos los requisitos del protocolo explicado en la documentación para colaborar con NVDA, el mismo usuario abrió la incidencia 13059. Dicha incidencia pasó a formar parte de la enorme montaña que tiene NV Access de incidencias abiertas y, por increíble que parezca, quedó olvidada hasta hace unos días, cuando llegó la incidencia 13353 abierta por otro usuario. En ella, la vulnerabilidad que se expone es más fácil de alcanzar que la anterior, ya que no requiere preparación previa. Basta con abrir las opciones de NVDA desde una pantalla segura, pulsar la tecla f1 en cualquiera de los controles para cargar la ayuda contextual, e Internet Explorer se abre mostrando la guía de usuario. A partir de ahí, de nuevo, un atacante puede hacer lo que quiera. Al igual que en el caso anterior, como Internet Explorer ya no está como programa independiente en Windows 11, los usuarios de esta versión de Windows no se ven afectados.
Las incidencias, por suerte, ya han sido cerradas, y los cambios propuestos se han integrado en el núcleo de NVDA. Si todo va bien, la versión 2022.1 ya no tendrá estas vulnerabilidades, y la próxima actualización alpha que llegue por el canal de desarrollo, tampoco. Sin embargo, esto no es suficiente. Los usuarios de versiones estables continúan expuestos a estas dos vulnerabilidades, y seguirán así durante varias semanas. La exposición es baja, ya que requiere acceso físicamente al equipo del usuario, pero se dispara si tenemos configurados complementos como NVDA Remote para que se conecten a un servidor automáticamente al arrancar.
Mientras NVDA 2022.1 llega, nuestro compañero Héctor Benítez ha desarrollado un parche, en colaboración con miembros de nuestro equipo. Este parche se distribuye en forma de complemento, y su única finalidad es cerrar los dos agujeros de seguridad explicados anteriormente. Por ello, carece de interfaz y configuración, y su documentación es bastante simple.
El parche es de duración limitada, y dejará de ser necesario tan pronto como NVDA 2022.1 sea liberado. Por tanto, no tendrá presencia en la tienda de complementos ni en esta web en forma de ficha, como sí están los otros. Pulsa este enlace para descargarlo.
Su instalación se parece mucho a la de cualquier complemento. Una vez lo instales y reinicies NVDA, sin embargo, debes enviarlo al lugar donde tiene que hacer su trabajo: las pantallas seguras. Para ello, sigue estos pasos:

  1. Pulsa NVDA+control+g para abrir las opciones generales de NVDA, o utiliza el menú NVDA, Preferencias, Opciones.
  2. Busca el botón «Utilizar opciones actualmente guardadas durante el inicio de sesión y en pantallas seguras (requiere privilegios de administrador)» y púlsalo.
  3. NVDA mostrará un mensaje indicando que se han encontrado complementos y preguntando si quieres copiarlos también. Responde que sí.
  4. Si aparece, acepta la advertencia del control de cuentas de usuario.
  5. Espera a que finalice la copia de la configuración. A partir de ese momento, estarás protegido.

Entendemos que no todo el mundo dispone de la versión estable más reciente de NVDA, y que en ciertos entornos la actualización de software no es instantánea. Por ello, el parche admite un rango de versiones que va desde la 2020.4 a la más actual, 2021.3.1.
La seguridad es un factor clave que siempre tenemos en cuenta cuando revisamos complementos de terceros en esta comunidad. Al fin y al cabo, NVDA lleva una plataforma Python con buena parte de la biblioteca estándar por debajo, bastantes módulos de terceros, y abre a los usuarios la posibilidad de utilizarla con total libertad. Nunca imaginamos que las peores vulnerabilidades iban a encontrarse a la vista de todos, y que no había que instalar nada para explotarlas.
Ahora que has visto un ejemplo real de una vulnerabilidad de seguridad en NVDA, ¿entiendes por qué siempre te pedimos al final de nuestras entradas que te mantengas al día?
¡Feliz fin de semana!

Autor: José Manuel Delicado Alcolea

Ingeniero de software y máster en Ingeniería Informática por la Universidad Rey Juan Carlos. Me encanta todo lo relacionado con la informática, la accesibilidad y las nuevas tecnologías. Consultor de accesibilidad por cuenta propia desde el año 2015.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.