Estratégia de segurança do WPF – engenharia de segurança

A Computação Confiável é uma iniciativa da Microsoft para garantir a produção de código seguro. Um elemento-chave da iniciativa de Computação Confiável é o SDL (Ciclo de Vida de Desenvolvimento de Segurança) da Microsoft. 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 ferramenta

  • Teste de penetração

  • Análise final de segurança

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

Aspectos específicos do WPF

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

Modelagem de Ameaças

Ferramentas de edição e análise 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 traçar o perfil de um sistema para determinar possíveis vulnerabilidades de segurança. Após as vulnerabilidades serem identificadas, a modelagem de ameaças também garante que as atenuações apropriadas estejam em vigor.

De modo geral, a modelagem de ameaças envolve as seguintes etapas principais, usando uma mercearia como exemplo:

  1. Identificando ativos. Os ativos de uma mercearia podem incluir funcionários, um cofre, caixas e o inventário.

  2. Enumerando pontos de entrada. Os pontos de entrada de uma mercearia podem incluir as portas da frente e de trás, janelas, a estação de carga e as unidades de ar-condicionado.

  3. Investigando ataques contra ativos usando pontos de entrada. Um possível ataque poderia ter como alvo o ativo cofre de uma mercearia por meio do ponto de entrada ar-condicionado; a unidade de ar-condicionado poderia ser removida para permitir que o cofre seja passado por ela e retirado da mercearia.

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 reduções de ameaças durante o processo de desenvolvimento.

Ferramentas de edição e análise de código-fonte

Além dos elementos de revisão manual 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 variedade de ferramentas de código são usadas e incluem o seguinte:

  • FXCop: encontra problemas comuns de segurança no código gerenciado, que vão desde as regras de herança ao uso da segurança do acesso de código e a como interoperar com segurança com código não gerenciado. Consulte FXCop.

  • Prefix/Prefast: localiza vulnerabilidades de segurança e problemas comuns de segurança em código não gerenciado, como saturações de buffer, problemas com cadeias de formatação e verificação de erros.

  • APIs banidas: pesquisa o código-fonte para identificar usos acidentais de funções que são 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:

  • Teste de caixa branca: os testadores exibem o código-fonte e, em seguida, criam testes de exploração.

  • Testes caixa preta: os testadores tentam localizar falhas de segurança examinando as API e os recursos e, em seguida, tentam atacar o produto.

  • Regressão de problemas de segurança de outros produtos: quando for relevante, problemas de segurança de produtos relacionados serã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.

  • Testes de penetração baseados em ferramentas por meio de fuzzing de arquivos: fuzzing de arquivos é a exploração do intervalo de entradas de um leitor de arquivos por meio 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 aplicativos de navegador XAML (XBAPs), o WPF cria uma área restrita de segurança usando o suporte do .NET Framework para marcar e rastrear código crítico de segurança que eleva privilégios (consulte Metodologia crítica de segurança em Estratégia de segurança do WPF - segurança da plataforma). Considerando os altos requisitos de qualidade da segurança em códigos críticos para a segurança, esse código recebe um nível adicional de auditoria de segurança e controle de gerenciamento de código-fonte. 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 acompanhando o código crítico para segurança e mapeando cada entidade crítica (isto é, um método que contém código crítico) quanto ao 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 modificar o código crítico sem a aprovação da equipe de revisão, isso será 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 área restrita do WPF.

Aviso

XBAPs exigem navegadores herdados para operar, como Internet Explorer e Firefox. Essas versões mais antigas do navegador geralmente não são suportadas 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. Plugins que habilitam XBAPs não são mais suportados.

Confira também