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 Computação Confiável é o SDL (Ciclo de Vida de Desenvolvimento de Segurança) da Microsoft. O SDL é uma prática de engenharia 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:
Ferramentas de edição e análise de segurança
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. 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:
Identificando ativos. Os ativos de uma mercearia podem incluir funcionários, um cofre, caixas e o inventário.
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.
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 do 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 visualizam 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 quanto à 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 em que 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 acompanhar o código crítico de segurança que eleva privilégios (consulte Metodologia crítica de segurança na 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 da área restrita do WPF.
Aviso
Os XBAPs exigem navegadores legados para operar, como o Internet Explorer e versões antigas do Firefox. Esses navegadores mais antigos geralmente não são compatíveis com Windows 10 e 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 frequentes sobre aplicativos hospedados no navegador do WPF (XBAP).
Confira também
.NET Desktop feedback