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 Microsoft Security Development Lifecycle (SDL). SDL es una práctica de ingeniería que se utiliza junto con los procesos de ingeniería estándar para facilitar la entrega de código seguro. SDL está compuesto de diez fases que combinan prácticas recomendadas con formalización, mensurabilidad y estructuras adicionales, que incluyen:

  • Análisis de diseño de seguridad

  • Comprobaciones de calidad basadas en herramientas

  • Pruebas de penetración

  • Revisión final de seguridad

  • Administración de la seguridad del producto tras el lanzamiento

Aspectos específicos de WPF

El equipo de ingeniería de WPF aplica y extiende SDL, combinación que incluye los siguientes aspectos clave:

Modelo de amenazas

Herramientas de edición y análisis de seguridad

Técnicas de prueba

Administración de código crítico

Modelo de amenazas

El modelo de amenazas es un componente básico de SDL y se utiliza para generar el perfil de un sistema para determinar potenciales vulnerabilidades de seguridad. Una vez identificadas las vulnerabilidades, el modelo de amenazas garantiza también que estén en efecto las medidas paliativas adecuadas.

A alto nivel, el modelo de amenazas implica los siguientes pasos clave, utilizando una tienda de comestibles como ejemplo:

  1. Identificar los activos. Los activos de una tienda de comestibles podrían incluir los empleados, una caja fuerte, cajas registradoras e inventario.

  2. Enumerar los puntos de entrada. Los puntos de entrada de una tienda de comestibles podrían incluir las puertas delanteras y traseras, el muelle de carga y unidades de aire acondicionado.

  3. Investigar los ataques contra los activos utilizando los puntos de entrada. Un posible ataque podría dirigirse al activo caja de seguridad de una tienda de comestibles a través del punto de entrada aire acondicionado; la unidad de aire acondicionado podría destornillarse para poder extraer la caja fuerte a través de ella y sacarla del almacén.

El modelo 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 del modelo de objetos 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 utiliza 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 requisitos de diseño de seguridad y medidas paliativas frente a amenazas durante el proceso de desarrollo.

Herramientas de edición y análisis de código fuente

Además de los elementos de revisión de código de seguridad manuales de SDL, el equipo de WPF utiliza varias herramientas para el análisis de código fuente y las ediciones asociadas, para reducir las vulnerabilidades de seguridad. Se utiliza una amplia gama de herramientas de código fuente, que incluyen lo siguiente:

  • FXCop: busca problemas de seguridad comunes en el código administrado, que van desde las reglas de herencia hasta uso de la seguridad de acceso del código o a cómo interoperar de forma segura con código no administrado. Vea FXCop.

  • Prefix/Prefast: busca vulnerabilidades de seguridad y problemas de seguridad comunes en el código no administrado, tales como saturaciones del búfer, problemas de la cadena de formato y comprobación de errores.

  • Banned APIs: busca en el código fuente para identificar el uso accidental de funciones de las que se sabe que producen problemas de seguridad, tales como strcpy. Una vez identificadas, estas funciones se reemplazan por alternativas más seguras.

Técnicas de prueba

WPF utiliza diversas técnicas de prueba de seguridad que incluyen:

  • Pruebas de caja blanca: los probadores ven el código fuente y generan pruebas de explotación

  • Pruebas de caja negra: los probadores intentan encontrar puntos débiles para la seguridad examinando la API y sus características y, a continuación, intentan atacar el producto.

  • Regresiones de problemas de seguridad de otros productos: cuando corresponde, se prueban problemas de seguridad de productos relacionados. Por ejemplo, se han identificado variantes de unos sesenta problemas de seguridad de Internet Explorer y se ha comprobado si se aplican a WPF.

  • Pruebas de penetración basadas en herramientas mediante la exploración de vulnerabilidad de archivos: la exploración de vulnerabilidades de archivos es la explotación del intervalo de entrada de un lector de archivos a través de diversas entradas. Un ejemplo de WPF donde se utiliza esta técnica es la comprobación de errores del código de descodificación de imágenes.

Administración de código crítico

Para XAML browser applications (XBAPs), WPF genera un recinto de seguridad utilizando la compatibilidad de .NET Framework con el marcado y seguimiento del código crítico para la seguridad que eleva privilegios (vea Metodología de seguridad crítica en Estrategia de seguridad de WPF: Seguridad de plataforma). Dados los elevados requisitos de calidad de seguridad del código crítico para la seguridad, tal código recibe un nivel adicional de control de administración de código fuente y de auditoría de seguridad. Aproximadamente de un 5% a un 10% de WPF está compuestos de código crítico para la seguridad, que es revisado por un equipo de revisión específico. El código fuente y el proceso de protección se administra realizando un seguimiento del código crítico para la seguridad y asignando cada entidad crítica (por ejemplo un método que contenga código crítico) a su estado de autorización. El estado de autorización incluye los nombres de uno o más revisores. Cada compilación diaria de WPF compara el código crítico con el de compilaciones anteriores para comprobar si hay 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 mantenimiento de un nivel especialmente alto de escrutinio sobre el código de recinto de WPF.

Vea también

Conceptos

Seguridad (WPF)

Seguridad de confianza parcial de WPF

Estrategia de seguridad de WPF: Seguridad de plataforma

Otros recursos

Trustworthy Computing

Application Threat Modeling

Security Guidelines: .NET Framework 2.0