Más información sobre el modo de impresión protegido de Windows para empresas
Para obtener información sobre los conceptos básicos del modo de impresión protegido de Windows para empresas y desarrolladores, consulte Modo de impresión protegido de Windows para empresas y desarrolladores.
El sistema de impresión de Windows ha sido históricamente un objetivo frecuente de los ataques y los fallos de impresión representaron el 9 % de todos los casos notificados al Centro de respuesta de seguridad de Microsoft (MSRC) en los últimos tres años. El servicio de administrador de trabajos de impresión, que controla la administración de impresoras, la conversión de datos y muchas otras tareas, es el núcleo del sistema de impresión de Windows. Este proceso se ejecuta como SYSTEM, que es uno de los niveles de privilegio más altos de Windows, razón por la cual es un objetivo tan atractivo. El administrador de trabajos de impresión también es ampliamente accesible para los usuarios estándar y carga código de terceros a petición. Estos controladores eran históricamente necesarios para admitir una amplia gama de impresoras durante un tiempo en el que el sector no tenía estándares uniformes para el control de documentos y la comunicación de impresoras. Este amplio ecosistema de controladores de varios fabricantes permite a Windows admitir una amplia gama de impresoras antiguas y sus más de 40 lenguajes de descripción de página (PDL). Sin embargo, esa complejidad dificulta tener un conjunto común de criterios. Esta complejidad presenta muchos desafíos de seguridad que limitan la capacidad de Microsoft para proporcionar opciones más seguras para los usuarios. En este artículo se analizan los retos relacionados con la seguridad de la pila de impresión y se comparte información que puede ayudar a los usuarios en la actualidad. También ofrece una vista previa de una colaboración entre el equipo de Microsoft Offensive Research & Security Engineering (MORSE) y el equipo de impresión de Windows sobre lo que creemos que será el futuro de la impresión de Windows, una revisión basada en IPP en la pila de impresión que ya no carga controladores de terceros y se ejecuta con superficie expuesta a ataques reducida.
Problema del controlador
El modelo de seguridad para controladores de impresión se basa en un modelo de responsabilidad compartida en el que la pila de impresión de Windows y los controladores de terceros deben desempeñar un papel en proporcionar funcionalidad y aplicar promesas de seguridad al tiempo que evitan la introducción de vulnerabilidades. Esto es como otros subsistemas en Windows, pero la impresión es un escenario desafiante porque los clientes quieren que el proceso sea sin fricción al cargar código remoto en un proceso de sistema con privilegios elevados.
La carga de código de terceros presenta varios desafíos desde una perspectiva de seguridad. No solo debe asegurarse de que está cargando el código que pretende cargar, sino que ese código puede cambiar el comportamiento de la aplicación de maneras inesperadas. Por ejemplo, los controladores admiten lógica de análisis compleja que puede provocar errores que permiten el control total del administrador de trabajos de impresión o el proceso de impresión relacionado. En caso de que se detecte una vulnerabilidad en un controlador, Microsoft depende del tercero para actualizar el controlador. Cuando los publicadores ya no existen o consideran que los productos más antiguos no son compatibles, no hay ninguna manera clara de solucionar la vulnerabilidad.
La dependencia de los controladores de terceros en un modelo de responsabilidad compartida limita la agilidad y las opciones de Microsoft para proteger a los clientes. A menudo estamos en la vanguardia de las nuevas protecciones de seguridad, pero no se pueden implementar uniformemente al cargar código de terceros.
Compatibilidad
Un desafío con los controladores de impresión es su antigüedad. Muchos controladores de impresión tienen décadas de antigüedad y no son compatibles con las mitigaciones de seguridad modernas, como la protección de flujo de control (CFG), la tecnología de cumplimiento de flujo de control (CET), la protección de código arbitraria (ACG) y las muchas otras protecciones que Microsoft ha implementado a lo largo de los años. Estas protecciones suelen ser "todo o nada" lo que significa que todos los archivos binarios participantes deben tomar medidas para que la protección sea eficaz. Dado que no todos los fabricantes de impresión han realizado los pasos necesarios para actualizar estos controladores, el servicio de impresión no se beneficia actualmente de estas mitigaciones de vulnerabilidades de seguridad modernas. Si se detecta una vulnerabilidad, es más probable que los atacantes consigan aprovecharla.
Permisos excesivos
La pila impresión de Windows mantiene muchos aspectos de su diseño original que tiene más de dos décadas de antigüedad. El administrador de trabajos de impresión se ejecuta como SYSTEM con privilegios especiales que hacen que sea más eficaz que las cuentas de administrador estándar en Windows. Los controladores cargados en el administrador de trabajos de impresión (incluidos los controladores de terceros) se ejecutan en este nivel de privilegios para la impresión básica de documentos y el control de solicitudes de usuario. Para la solicitud de cada usuario, el administrador de trabajos de impresión que la recibe debe determinar el nivel de acceso adecuado para esa tarea, que puede resultar difícil.
Una razón por la que el administrador de trabajos de impresión mantiene estos permisos se debe a problemas de compatibilidad con versiones anteriores. Miles de controladores, realizados a lo largo de 30 años, están en uso en Windows y la identificación de todos los posibles riesgos para los usuarios es difícil.
La solución ideal sería quitar controladores por completo y mover el administrador de trabajos de impresión a un modelo de seguridad con privilegios mínimos. Algunas operaciones pueden requerir privilegios de nivel SYSTEM, pero la mayoría ciertamente no. El desafío al que a menudo nos enfrentamos en Microsoft es que cualquier solución debe tener en cuenta los requisitos de compatibilidad de nuestros clientes. Equilibrar esta necesidad con el deseo de mejorar la seguridad es una tarea difícil. Afortunadamente, creemos que tenemos una solución.
Fundamentos de IPP
IPP es un protocolo basado en HTTP y admite muchos de los métodos de autenticación que cabría esperar de HTTP. Cada solicitud IPP es un mensaje HTTP POST y las impresoras se identifican mediante URI como ipps://printer.example.com/ipp/print. IPP admite todas las operaciones comunes que cabría esperar de una impresora como:
Create-Job: crear un nuevo trabajo de impresión
Send-Document: agregar un documento a un trabajo de impresión
Print-Job: crear un nuevo trabajo de impresión con un único documento
Get-Printer-Attributes: obtener el estado y las funcionalidades de la impresora
Get-Jobs: obtener una lista de trabajos en cola
Get-Job-Attributes: obtener el estado y las opciones del trabajo
Cancel-Job: cancelar un trabajo en cola
La impresión sin controladores admite un número limitado de archivos PLS basados en estándares públicos como PWG Raster y PDF. Esto limita el número único de formatos que el sistema operativo debe controlar para la conversión y simplifica considerablemente el código. La representación del lado cliente se usa para generar el documento final enviado a la impresora.
Aplicación para compatibilidad con impresión (PSA)
Las PSA permiten que los OEM e IHV de impresoras amplíen nuestra compatibilidad existente con IPP para sus necesidades específicas. No todas las impresoras admiten las mismas características y opciones de configuración. Las PSA permiten experiencias de usuario adaptadas sin poner en peligro la experiencia que esperan los usuarios.
Punto e impresión
Punto e impresión es una característica que permite a los usuarios conectarse a una impresora remota sin proporcionar controladores, y tiene instalados todos los controladores necesarios en el cliente. Punto e impresión permanece con IPP, pero funciona de forma diferente. Ya no debemos instalar controladores, pero se requiere alguna configuración básica para configurar la impresora. Este proceso funciona de la siguiente manera con IPP:
El cliente y servidor de Windows realizan una conexión a través de RPC
Tanto el servidor como el cliente usan su controlador IPP de serie de Microsoft
El servidor usa IPP para comunicarse con la impresora
La PSA se instala, si está disponible
Seguridad
La impresión basada en IPP en Windows actualmente elimina la necesidad de controladores de terceros. IPP admite el cifrado de transporte y, con un número limitado de compatibilidad con PDL, la complejidad del análisis se reduce considerablemente. Se trata de una mejora significativa sobre el modelo que requiere el uso de controladores.
La impresión IPP en Windows hoy ya es un gran avance desde una perspectiva de seguridad, y animamos a los usuarios a cambiar siempre que sea posible. También animamos a los administradores a priorizar esta acción en toda la flota.
Seguridad del administrador de trabajos de impresión en modo de impresión protegido de Windows
El modo de impresión protegido de Windows se basa en la pila de impresión IPP existente en la que solo se admiten impresoras certificadas por Mopria y deshabilita la capacidad de cargar controladores de terceros. De este modo, podemos introducir mejoras significativas en la seguridad de la impresión en Windows que, de otro modo, serían imposibles. Nuestro objetivo es proporcionar en última instancia la configuración predeterminada más segura y proporcionar la flexibilidad de revertir a la impresión heredada (basada en controladores) en cualquier momento, si los usuarios encuentran que su impresora no es compatible. Para usar el modo de impresión protegido de Windows, asegúrese de que las impresoras tengan IPP habilitado.
Cuando los usuarios habilitan el modo de impresión protegido de Windows, las operaciones normales de cola se aplazan a un nuevo proceso del administrador de trabajos de impresión que implementa las mejoras del modo de impresión protegido de Windows. Echemos un vistazo a estos cambios.
Configuración de impresión limitada y segura
En el modo de impresión protegido de Windows, muchas configuraciones heredadas ya no son válidas. Un ataque común en Windows abusaría del hecho de que un monitor de puerto de impresora puede ser una biblioteca de vínculos dinámicos (DLL), y los atacantes abusarían de esto para cargar código malicioso. Los atacantes también usarían vínculos simbólicos para engañar al administrador de trabajos de impresión para cargar código malintencionado, y eso ya no es posible. Hay muchas API heredadas que se actualizan para restringir la configuración a valores que solo tienen sentido al usar IPP. Esto limita la oportunidad de que los atacantes usen el administrador de trabajos de impresión para modificar archivos en el sistema.
Bloqueo de módulos
Las API que permiten la carga de módulos se modificarán para evitar la carga de nuevos módulos. Por ejemplo, AddPrintProviderW y otras llamadas darían lugar a la carga de módulos que podrían ser malintencionados. También aplicaremos una restricción que garantice que solo se carguen los archivos binarios firmados de Microsoft necesarios para IPP.
Representación XPS por usuario
La representación de XPS se ejecuta como el usuario en lugar de SYSTEM en modo de impresión protegido de Windows. La mayoría de los trabajos de impresión en Windows actualmente implican algunas conversiones XPS y el proceso que controla esta tarea (PrintFilterPipelineSVC) es el origen de muchas vulnerabilidades de daños en la memoria. Al igual que con los otros problemas, al ejecutar este proceso como usuario, se minimiza el impacto de estos errores.
Menores privilegios para tareas comunes del administrador de trabajos de impresión
La eliminación de controladores también nos permite realizar tareas comunes realizadas por el proceso del administrador de trabajos de impresión y moverlas a un proceso que se ejecuta como usuario. Si estos procesos tienen vulnerabilidades de daños en la memoria, ese impacto se limita a las acciones que solo puede realizar el usuario.
El nuevo proceso de trabajo del administrador de trabajos de impresión tiene un nuevo token restringido que quita muchos privilegios, como SeTcbPrivilege, SeAssignPrimaryTokenPrivilege y ya no se ejecuta en SYSTEM IL.
Mitigaciones de archivos binarios
Al quitar archivos binarios de terceros, ahora podemos habilitar muchas de las mitigaciones de archivos binarios en las que Microsoft ha invertido durante los años. Los procesos en el modo de impresión protegido de Windows se ejecutan con muchas nuevas mitigaciones de archivos binarios. Estos son algunos de los aspectos destacados:
Tecnología de cumplimiento de flujo de control (CFG, CET): mitigación basada en hardware que ayuda a mitigar los ataques basados en programación orientada a retornos (ROP).
Creación de procesos secundarios deshabilitada: se bloquea la creación de procesos secundarios. Esto evita que los atacantes generen un nuevo proceso si consiguen ejecutar código en el administrador de trabajos de impresión.
Protección de redirección: evita muchos ataques de redirección de rutas de acceso comunes que a menudo tienen como destino el administrador de trabajos de impresión.
Protección de código arbitrario: evita la generación dinámica de código dentro de un proceso.
Estas protecciones hacen que sea más difícil abusar de una vulnerabilidad si se encuentra una.
Punto e impresión con el modo de impresión protegido de Windows
Como se mencionó anteriormente, Punto e impresión normalmente permitirá la carga de controladores, así como la configuración de la impresora IPP. Algunos usuarios pueden tener un entorno con solo impresoras IPP, pero los atacantes maliciosos pueden hacerse pasar por una impresora y engañar a los usuarios para que instalen controladores. El modo de impresión protegido por Windows impide que Punto e impresión instale controladores de terceros, lo que mitiga este riesgo.