Estrategia de seguridad de WPF: Ingeniería de seguridad
Trustworthy Computing es una iniciativa de Microsoft para garantizar la producción de código seguro. Un elemento clave de la iniciativa Trustworthy Computing es el Ciclo de vida de desarrollo de seguridad de Microsoft (SDL). El SDL es un procedimiento de ingeniería que se usa junto con procesos de ingeniería estándar para facilitar la distribución de código seguro. El SDL consta de diez fases en las que se combinan prácticas recomendadas con formalización, mensurabilidad y una estructura adicional, e incluye:
Análisis del diseño de seguridad
Comprobaciones de calidad basadas en herramientas
Pruebas de penetración
Revisión final de la seguridad
Administración de la seguridad del producto después de su lanzamiento
Especificaciones de WPF
El equipo de ingenieros de WPF aplica y extiende el SDL, y esta combinación incluye los siguientes aspectos clave:
Herramientas de edición y análisis de la seguridad
Administración de código crítico
Modelo de amenazas
El modelado de amenazas es un componente básico del SDL y se usa para generar perfiles de un sistema con el fin de determinar las posibles vulnerabilidades de seguridad. Una vez identificadas las vulnerabilidades, el modelado de amenazas también garantiza que se tomen las medidas oportunas.
De forma general, el modelado de amenazas conlleva los siguientes pasos principales, usando una tienda de comestibles como ejemplo:
Identificar los activos. Entre los activos de una tienda de comestibles se pueden incluir los empleados, una caja de seguridad, las cajas registradoras y el inventario.
Enumerar los puntos de entrada. Los puntos de entrada de una tienda de comestibles podrían ser las puertas delantera y trasera, las ventanas, el muelle de carga y el sistema de aire acondicionado.
Investigar ataques contra activos mediante los puntos de entrada. Un posible ataque podría dirigirse al activo caja de seguridad de la tienda de comestibles a través del punto de entrada aire acondicionado; el sistema de aire acondicionado puede desatornillarse para poder sacar la caja de seguridad a través de él.
El modelado de amenazas se aplica en todo WPF e incluye lo siguiente:
Cómo el analizador de XAML lee los archivos, asigna el texto a las clases de modelo de objetos correspondiente y crea el código real.
Cómo se crea un identificador de ventana (hWnd), cómo envía los mensajes y cómo se usa para representar el contenido de una ventana.
Cómo el enlace de datos obtiene los recursos e interactúa con el sistema.
Estos modelos de amenazas son importantes para identificar los requisitos de diseño de seguridad y reducir las amenazas durante el proceso de desarrollo.
Análisis de código fuente y herramientas de edición
Además de los elementos manuales de revisión del código de seguridad del SDL, el equipo de WPF usa varias herramientas para realizar análisis del código fuente y las modificaciones asociadas para reducir las vulnerabilidades de seguridad. Se usa una amplia variedad de herramientas de código fuente, entre ellas:
FXCop: busca problemas de seguridad comunes en código administrado, que van desde reglas de herencia hasta el uso de la seguridad de acceso del código para interoperar de forma segura con código no administrado. Consulte FXCop.
Prefix/Prefast: busca vulnerabilidades de seguridad y problemas de seguridad comunes en código no administrado, como la saturación de búferes, los problemas de cadenas de formato y la comprobación de errores.
API prohibidas: busca código fuente para identificar el uso accidental de funciones que se sabe que producen problemas de seguridad, como
strcpy
. Una vez identificadas, estas funciones se reemplazan por alternativas más seguras.
Técnicas de pruebas
WPF usa diferentes técnicas de pruebas de seguridad, entre las que se incluyen:
Pruebas de caja blanca: los evaluadores ven el código fuente y, a continuación, generan pruebas de explotación.
Pruebas de caja negra: los evaluadores intentan encontrar vulnerabilidades de seguridad examinando la API y las características y, después, intentan atacar el producto.
Regresiones de problemas de seguridad de otros productos: cuando procede, se prueban problemas de seguridad de productos relacionados. Por ejemplo, se han identificado variantes de unos sesenta problemas de seguridad para Internet Explorer y se ha probado su aplicabilidad a WPF.
Pruebas de penetración basadas en herramientas mediante datos aleatorios: las pruebas de exploración de vulnerabilidades mediante datos aleatorios consisten en explotar el intervalo de entrada de un lector de archivos mediante diferentes entradas. Un ejemplo del uso de esta técnica en WPF es la comprobación de errores en el código de descodificación de imágenes.
Administración de código crítico
Para las aplicaciones de navegador de XAML (XBAPs), WPF crea un espacio aislado de seguridad usando la compatibilidad de .NET Framework para marcar y realizar el seguimiento de código crítico para la seguridad que eleva los privilegios (consulte Metodología crítica para la seguridad en Estrategia de seguridad de WPF: seguridad de plataforma). Dados los requisitos de calidad de alta seguridad del código crítico para la seguridad, este código recibe un nivel adicional de auditoría de seguridad y control de administración de código fuente. Aproximadamente entre un 5 % y un 10 % de WPF consiste en código crítico para la seguridad, que es revisado por un equipo de revisión dedicado. Para administrar el código fuente y el proceso de inserción en el repositorio, se realiza el seguimiento del código crítico para la seguridad y se asigna cada entidad crítica (es decir, un método que contiene código crítico) a su estado de autorización. El estado de autorización incluye los nombres de uno o varios revisores. Cada compilación diaria de WPF compara el código crítico con el de compilaciones anteriores para comprobar si ha habido cambios no aprobados. Si un ingeniero modifica código crítico sin la aprobación del equipo de revisión, se identifica y se corrige inmediatamente. Este proceso permite la aplicación y el mantenimiento de un nivel especialmente alto de control sobre el código WPF en espacio aislado.
Advertencia
Las aplicaciones XBAP requieren exploradores heredados, como Internet Explorer y versiones anteriores de Firefox. Estos exploradores anteriores suelen no ser compatibles con Windows 10 y Windows 11. Los exploradores modernos ya no admiten la tecnología necesaria para las aplicaciones XBAP debido a riesgos de seguridad. Los complementos que habilitan XBAPs ya no se admiten. Para obtener más información, vea Preguntas más frecuentes sobre las aplicaciones hospedadas en explorador (XBAP) de WPF.
Consulte también
.NET Desktop feedback