Estratégia de segurança do Windows Presentation Foundation - Engenharia de Segurança
Trustworthy Computing (computação confiável) é uma iniciativa 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 de dez fases que combinam práticas recomendadas como formalização, mensurabilidade e estruturas adicionais, incluindo:
Análise de segurança de projeto
Verificações de qualidade com base em ferramentas
Testes de penetração
Revisão final de segurança
Gerenciamento de segurança pós-lançamento do produto
Pontos específicos do WPF
A equipe de engenharia do WPF aplica e estende o SDL, a combinação dos quais 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 principal do SDL e é usada para levantar o perfil de um sistema para determinar possíveis vulnerabilidades de segurança. Depois que vulnerabilidades são identificadas, a modelagem de ameaças também garante que as atenuações apropriadas estejam no lugar.
Em um alto nível, a modelagem de ameaças envolve as seguintes etapas chave (usando uma padaria como um exemplo):
Identificação dos ativos. Os ativos de uma padaria podem incluir funcionários, um cofre, máquinas registradoras e o inventário.
Enumeração de pontos de entrada. Os pontos de entrada de uma padaria podem incluir a porta da frente e a de trás, janelas, a área de carga e unidades de ar-condicionado.
Investigação de ataques contra ativos usando os pontos de entrada. Um possível ataque pode ter como alvo o ativo cofre da padaria por meio do ponto de entrada do ar condicionamento ; a unidade de ar condicionado poderia ser desparafusada para permitir que o cofre seja puxado através do buraco e para fora da loja.
A modelagem de ameaças é aplicada em todo o WPF e inclui o seguinte:
Como o parser XAML lê arquivos, mapeia o texto para as classes correspondentes do modelo de objetos e cria o código real.
Como um manipulador de janela (hWnd) é criado, envia mensagens e é usado para renderizar o conteúdo de uma janela.
Como uma associação de dados obtém os recursos e interage com o sistema.
Esses modelos de ameaça são importantes para a identificação dos requisitos de projeto de segurança e atenuações de ameaças durante o processo de desenvolvimento.
Ferramentas de análise e edição de código fonte
Além dos elementos de revisão de segurança manual do código do SDL, a equipe do WPF usa várias ferramentas para análise do código fonte e das edições associadas para reduzir as vulnerabilidades de segurança. Uma ampla variedade de ferramentas de código são usadas e incluem as seguintes:
FXCop: Encontra problemas comuns de segurança em código gerenciado que variam de regras de herança a uso de segurança de acesso código como com segurança interoperar com código não gerenciado. See FXCop.
Prefixo/PREfast: Localiza sistema autônomo vulnerabilidades de segurança e problemas comuns de segurança em código não gerenciado, sistema autônomo saturações de buffer, formato de seqüência de caracteres de problemas e verificação de erros.
APIs banidas: Pesquisas de código para identificar o uso acidental de funções que são conhecidos para causar problemas de segurança, sistema autônomo fontestrcpy. Depois de identificadas, essas funções são substituídas por alternativas que são mais seguras.
Técnicas de teste
O WPF usa uma variedade de técnicas de teste de segurança que incluem:
Teste Whitebox: Os testadores exibir código-fonte e, em seguida, criar testes de exploração
Teste Blackbox: Os testadores tentar encontrar explorações de segurança, examinando a API e os recursos e tente atacar o produto.
Regressing questões de segurança de outros produtos: Quando relevante, 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 identificados e tiveram sua aplicabilidade testada contra o WPF.
Penetração com ferramentas de teste por meio de fuzzing de arquivo: Difusão de arquivo é que a exploração de um leitor de arquivo do intervalo por meio de uma série de entradas de entrada. Um exemplo no WPF onde essa técnica é usada é para verificar falhas no código de decodificar imagens.
Gerenciamento de código crítico
Para as aplicativos de navegador XAML (XBAPs), o WPF cria uma proteção de segurança usando o suporte do .NET Framework para marcar e rastrear código de segurança crítica que realiza elevação de privilégios (consulte Metodologia de segurança crítica em Estratégia de segurança do Windows Presentation Foundation - Segurança da Plataforma). Dados os altos requisitos de qualidade da segurança em código de segurança crítica, tal código recebe um nível adicional de gerenciamento de controle de código fonte e auditoria de segurança. Aproximadamente 5% a 10% do WPF consiste de código de segurança crítica, que é revisado por uma equipe dedicada de revisão. O código-fonte e o processo de check-in é gerenciado por código crítico de segurança de acompanhamento e mapeamento (ou seja, cada entidade crítica um método que contém código crítico) para seu estado de aprovação. Este estado de certificação inclui os nomes de um ou mais revisores. Cada compilação diária do WPF compara o código crítico com as versões anteriores para verificar alterações não aprovadas. Se um engenheiro modifica código crítico sem a aprovação da equipe de revisão, isto é identificado e corrigido imediatamente. Esse processo habilita a aplicação e manutenção de um nível especialmente alto de investigação sobre o código crítico do WPF.
Consulte também
Conceitos
Windows Presentation Foundation Security
Windows Presentation Foundation Partial Trust Security
Estratégia de segurança do Windows Presentation Foundation - Segurança da Plataforma