Transbordamento de dados: diferenças entre revisões

Conteúdo apagado Conteúdo adicionado
Linha 71:
 
=== Uso de bibliotecas seguras ===
O problema de estouro de buffer é comum em C e C++ porque elas expõem detalhes de baixo nível de implementação dos buffers como conteúdos e tipos de dados. Estouros de buffer devem ser evitados para se manter um alto nível de corretudecorreção no código que executa o gerenciamento de buffer. Também recomendado há muito tempo que se evite as funções de bibliotecas padrão que não fazem checagem de limites, como gets, scanf e strcpy. O worm de Morris explorou uma chamada de gets no fingerd.
Bibliotecas de tipos de dados abstratos bem escritas e testadas que centralizam e checam automaticamente o gerenciamento de buffer, incluindo checar os limites, podem reduzir a ocorrência e impacto de estouros de buffer. Os dois principais tipos de dados básicos nessas linguagens nos quais estouros de buffer geralmente ocorrem são strings e arrays. Então, bibliotecas que previnem estouro de buffer nesses tipos podem prover a grande maioria da segurança necessária. Ainda assim, falhas em se usar bibliotecas seguras podem resultar em estouros de buffer e outras vulnerabilidades, e naturalmente, qualquer erro na própria biblioteca é uma vulnerabilidade em potencial. Implementações “seguras” de bibliotecas incluem “The Better String Library”, Vstr e Erwin. A biblioteca C do sistema operacional OpenBSD prove as funções strlcpy e strlcat, mas elas são mais limitadas que a implementação completa da biblioteca segura.