Professional Documents
Culture Documents
MSDN Magazine > Home > All Issues > 2006 > November > Hábitos seguros: 8 Regras simples para o d...
Hábitos seguros
Conteúdo
Hábito nº 1: Assumir responsabilidade
Hábito nº 2: Nunca confiar nos dados
Hábito nº 3: Modelar as ameaças contra seu código
Hábito nº 4: Ficar um passo à frente
Hábito nº 5: Difundir!
Hábito nº 6: Não escrever código inseguro
Hábito nº 7: Reconhecer a assimetria estratégica
Hábito nº 8: Utilizar as melhores ferramentas que puder
Eu tive muita sorte em trabalhar com milhares de bons desenvolvedores durante muitos anos, que queriam
aprender a escrever software mais seguros. Durante esse tempo, também aprendi muito com pessoas que são
muito boas na criação de sistemas seguros e isso me fez pensar. Imaginei se haveria habilidades ou hábitos
comuns que os "desenvolvedores de segurança" compartilhavam. E acontece que a resposta foi um ressonante Current Issue
sim! Este artigo apresenta a lista de hábitos compartilhados pelos desenvolvedores de código seguro.
Agora, uma coisa de que tenho certeza é que qualquer pessoa que for revisar a lista imediatamente notará a
ausência de alguns hábitos. Não há problema. Eu sei que existem outras ótimas idéias por aí. Esta é minha lista!
Então, dito isso, seguem meus exemplos de hábitos que observei ao longo dos anos.
msdn.microsoft.com/…/cc163518.aspx 1/3
01/09/2010 Hábitos seguros: 8 Regras simples par…
Hábito nº 5: Difundir!
A difusão é uma técnica de teste inventada para encontrar bugs de confiabilidade. Descobriu-se que um
percentual de bugs de confiabilidade são vulnerabilidades de segurança esperando pela exploração certa!
Claro, uma saturação do buffer pode interromper um aplicativo, mas, dada uma transferência maliciosa bem
feita, a interrupção pode não acontecer e o invasor poderia executar o código para fazer sua aposta. Nosso
lema por aqui é "negar trabalho hoje é executar código amanhã."
Quase toda a vulnerabilidade/bug para análise de arquivos foi encontrada por sorte ou difusão. A Microsoft
encontrou vulnerabilidades de segurança analisando vários formatos de arquivos incluindo arquivos XLS, PPT,
DOC e BMP. Muitos fornecedores tinham tido vulnerabilidades semelhantes, pois a análise de estruturas de
dados complexas é uma tarefa difícil. O código complexo tem bugs, e alguns desses bugs revelarão
vulnerabilidades de segurança.
Você precisa difundir todos os códigos que analisam arquivos e tráfego de rede. O SDL (ciclo de vida do
desenvolvimento da segurança) da Microsoft é muito específico no que se refere ao significado disso para os
formatos de arquivo. Você precisa difundir todas as análises com 100 mil iterações de arquivos malformados
usando um difusor de arquivo. Existem vários difusores razoáveis disponíveis e nós incluímos um difusor de
arquivo, bem como código-fonte C++, no livro The Security Development Lifecycle, (em inglês) do qual fui co-
autor junto com Steve Lipner (microsoft.com/MSPress/books/8753.asp).
Uma última observação sobre difusão. Se ocorrer uma interrupção, não pense que é simplesmente uma
interrupção. É provável que um grande percentual das supostas interrupções esteja implorando para que alguém
escreva uma exploração. Portanto, não considere uma interrupção como "apenas uma interrupção."
msdn.microsoft.com/…/cc163518.aspx 2/3
01/09/2010 Hábitos seguros:
forçar regras estritas de código, como excluir o uso de funcionalidades 8 Regras
banidas, como simples
nenhuma chamadapar…
para
strcpy nem strncat e nenhuma criptografia pobre. (A Microsoft baniu mais de 100 funções de tempo de
execução C para código novo!). Por exemplo, em relação à criptografia, não permitimos DES (o tamanho da
chave é muito pequeno), MD4, nem MD5 (estão ambos quebrados agora) em código novo, a menos que um
padrão da indústria exija seu uso.
Não reinvente funcionalidade. Se você tiver um código que analise um formato de arquivo específico, não
precisa de duas ou três etapas da análise de código. Fique com aquela definida, torne-a robusta e a envolva em
uma forma que possa ser utilizada em vários projetos.
Finalmente, lembre-se de que as ferramentas não devem substituir o conhecimento de como escrever código
seguro. É por isso que o aprendizado de segurança e privacidade é tão importante. Você precisa ter um
conhecimento sólido dos conceitos para poder discernir as chamadas e os insights que suas ferramentas são
capazes de fazer.
© 2010 Microsoft Corporation. Todos os direitos reservados. Termos de Uso | Marcas Comerciais | Política de Privacidade
msdn.microsoft.com/…/cc163518.aspx 3/3