Partilhar via


Estratégia de Segurança WPF - Engenharia de Segurança

Trustworthy Computing é uma iniciativa da Microsoft para garantir a produção de código seguro. Um elemento-chave da iniciativa Trustworthy Computing é o Microsoft Security Development Lifecycle (SDL). O SDL é uma prática de engenharia que é usada em conjunto com processos de engenharia padrão para facilitar a entrega de código seguro. O SDL consiste em dez fases que combinam as melhores práticas com formalização, mensurabilidade e estrutura adicional, incluindo:

  • Análise de projeto de segurança

  • Verificações de qualidade baseadas em ferramentas

  • Testes de penetração

  • Revisão final da segurança

  • Gerenciamento de segurança de produtos pós-lançamento

Especificidades do WPF

A equipe de engenharia do WPF aplica e estende o SDL, cuja combinação inclui os seguintes aspetos principais:

Modelagem de Ameaças

Ferramentas de Análise e Edição de Segurança

Técnicas de Teste

Gerenciamento de Código Crítico

Modelagem de ameaças

A modelagem de ameaças é um componente central do SDL e é usada para criar o perfil de um sistema para determinar possíveis vulnerabilidades de segurança. Uma vez identificadas as vulnerabilidades, a modelagem de ameaças também garante que as mitigações apropriadas estejam em vigor.

Em um alto nível, a modelagem de ameaças envolve as seguintes etapas principais usando um supermercado como exemplo:

  1. Identificação de Ativos. Os ativos de uma mercearia podem incluir funcionários, um cofre, caixas registadoras e inventário.

  2. Enumerando pontos de entrada. Os pontos de entrada de uma mercearia podem incluir as portas dianteiras e traseiras, janelas, a doca de carga e unidades de ar condicionado.

  3. Investigando ataques contra ativos usando pontos de entrada. Um possível ataque poderia ter como alvo o cofre de uma mercearia através do ponto de entrada do ar condicionado ; a unidade de ar condicionado pode ser desenroscada para permitir que o cofre seja puxado para cima através dele e retirado da loja.

A modelagem de ameaças é aplicada em todo o WPF e inclui o seguinte:

  • Como o analisador XAML lê arquivos, mapeia texto para classes de modelo de objeto correspondentes e cria o código real.

  • Como um identificador de janela (hWnd) é criado, envia mensagens e é usado para renderizar o conteúdo de uma janela.

  • Como a vinculação de dados obtém recursos e interage com o sistema.

Esses modelos de ameaças são importantes para identificar requisitos de design de segurança e mitigações de ameaças durante o processo de desenvolvimento.

Ferramentas de análise e edição de fontes

Além dos elementos manuais de revisão de código de segurança do SDL, a equipe do WPF usa várias ferramentas para análise de origem e edições associadas para diminuir as vulnerabilidades de segurança. Uma ampla gama de ferramentas de fonte é usada e incluem o seguinte:

  • FXCop: Encontra problemas de segurança comuns em código gerenciado que vão desde regras de herança até o uso de segurança de acesso ao código e como interoperar com segurança com código não gerenciado. Consulte FXCop.

  • Prefix/Prefast: Localiza vulnerabilidades de segurança e problemas de segurança comuns em código não gerenciado, como estouro de buffer, problemas de cadeia de caracteres de formato e verificação de erros.

  • APIs proibidas: pesquisa o código-fonte para identificar o uso acidental de funções que são bem conhecidas por causar problemas de segurança, como strcpy. Uma vez identificadas, essas funções são substituídas por alternativas mais seguras.

Técnicas de Teste

O WPF usa uma variedade de técnicas de teste de segurança que incluem:

  • Whitebox Testing: Os testadores visualizam o código-fonte e, em seguida, criam testes de exploração.

  • Blackbox Testing: Os testadores tentam encontrar vulnerabilidades de segurança analisando a API e as funcionalidades e depois tentam explorar o produto.

  • Regressão de problemas de segurança de outros produtos: Quando relevante, os problemas de segurança de produtos relacionados são testados. Por exemplo, variantes apropriadas de aproximadamente sessenta problemas de segurança para o Internet Explorer foram identificadas e testadas por sua aplicabilidade ao WPF.

  • Tools-Based Teste de penetração através do File Fuzzing: File fuzzing é a exploração do intervalo de entrada de um leitor de arquivos através de uma variedade de entradas. Um exemplo no WPF onde essa técnica é usada é verificar se há falha no código de decodificação de imagem.

Gerenciamento de código crítico

Para aplicações de navegador XAML (XBAPs), o WPF cria uma sandbox de segurança usando o suporte do .NET Framework para marcar e rastrear código crítico de segurança que elevam privilégios (consulte Security-Critical Metodologia em Estratégia de Segurança do WPF - Segurança da Plataforma). Dados os altos requisitos de qualidade de segurança em código crítico de segurança, esse código recebe um nível adicional de controle de gerenciamento de fonte e auditoria de segurança. Aproximadamente 5% a 10% do WPF consiste em código crítico de segurança, que é revisado por uma equipe de revisão dedicada. O código-fonte e o processo de check-in são gerenciados rastreando o código crítico de segurança e mapeando cada entidade crítica (ou seja, um método que contém código crítico) para seu estado de aprovação. O estado de aprovação inclui os nomes de um ou mais revisores. Cada compilação diária do WPF compara o código crítico com o das compilações anteriores para verificar se há alterações não aprovadas. Se um engenheiro modifica um código crítico sem a aprovação da equipe de revisão, ele é identificado e corrigido imediatamente. Esse processo permite a aplicação e a manutenção de um nível especialmente alto de escrutínio sobre o código de sandbox do WPF.

Advertência

Os XBAPs requerem navegadores herdados para funcionar, como o Internet Explorer e versões antigas do Firefox. Esses navegadores mais antigos geralmente não são suportados no Windows 10 e no Windows 11. Os navegadores modernos não suportam mais a tecnologia necessária para aplicativos XBAP devido a riscos de segurança. Plug-ins que habilitam XBAPs não são mais suportados. Para obter mais informações, consulte Perguntas freqüentes sobre aplicativos hospedados no navegador WPF (XBAP).

Ver também