Relatoria 2 etapa 1 desenvolvimento seguro
Por: bruna_tads • 8/4/2015 • Trabalho acadêmico • 364 Palavras (2 Páginas) • 212 Visualizações
Relatório 2- Evitando Estouro de Buffer
Muitas linguagens de programação dependem exclusivamente de boas práticas para que o software desenvolvido fique imune de falhas de segurança e estouros de buffer. Por isso diversos métodos foram desenvolvidos para implantação e correção de erros que causem a vulnerabilidade do software.
Existem técnicas para melhorar a segurança de programas criados, tais como:
- Melhores práticas de programação:
A maioria dos problemas de falha na segurança poderia ser evitada apenas com boas práticas de programação, como por exemplo, todos os dados de input devem ser devidamente validados;
- Proteção pelo sistema operacional:
Como o sistema possui total controle sobre os recursos do sistema, ele pode fornecer ferramentas necessárias para minimizar a vulnerabilidade em seus aplicativos.
- Proteção pelo compilador:
O compilador pode adicionar implicitamente medidas de segurança para gerar um software seguro.
Métodos de proteção
Para gerar um código com melhores mecanismos de proteção, o SSP(Stack smashing protetor), ajuda a proteger os programas de ataques conhecidos.
- Endereço de retorno: é o local mais usado para se explorar falhas de segurança;
- Variáveis locais e argumentos de função: se uma variável local ou argumento for ponteiro de função, é possível alterar seu valor pra que aponte para o shell cod injetado;
- Ponteiro para o frame anterior;
Tratamento seguro de string.
O tratamento de string é a maior fonte de estouros de buffer, portanto uma revisão nas funções mais utilizadas se faz necessário.
- Strcpy: É insegura e raramente deve ser utilizada;
- Strncpy: É mais segura eu a anterior, mas também vem com alguns problemas;
- Sprintf: É compara-se a Strcpy nos danos que podem causar. Quase na há como utilizar esta função de forma segura;
- _snsprintf: É flexível e é mais segura que a Sprintf;
Os estouros de buffer, apesar de já serem conhecidos, continuam sendo a preocupação mais recorrente no desenvolvimento de software. A falha ocasionada pelo mal uso de funções e arrays, é ainda a principal falha na segurança de um sistema.
Embora as práticas de segurança sejam amplamente divulgadas e discutidas, não se pode confiar apenas nas habilidades dos desenvolvedores para garantir um software confiável, ferramentas que automatizam a verificação de segurança já estão disponíveis e são de suma importância para dificultar a invasão de um usuário malicioso.
...