Prévia do material em texto
BUFFER OVERFLOW Uma das preocupações que temos que ter, quando manipulamos strings, consiste em verificar o tamanho de caracteres gravados para que o espaço reservado para o recebimento dos caracteres não seja extrapolado. No mundo dos ataques pelas redes de computadores, existe uma classe denominada de “buffer overflow”, em português, estouro do buffer, que consiste no uso desta vulnerabilidade de controle para que sejam gravados, na memória, informações que contenham dados maliciosos. (ERNESTO, 2018). Para essa atividade, suponha o código abaixo: #include <stdio.h> #include <string.h> int main() { char str0[6]="98765",str1[5]="abcd",str2[10]="efghijklm"; printf("str0 = %s\t str1 = %s\t str2 = %s\n",str0,str1,str2); strcpy(str1,"1234567"); printf("str0 = %s\t str2 = %s\n",str0,str2); } Como sugestão, seria interessante que você implementasse o código acima e refletisse os resultados impressos na sua execução. Referências ASCENCIO, A. F. G. Fundamentos de Programação de Computadores: Algoritmos, PASCAL, C/C++ (Padrão ANSI) e Java. 3. ed. São Paulo: Pearson Education do Brasil, 2012. Disponível em: <https://laureatebrasil.blackboard.com/>. Acesso em: 29/06/2019. DEITEL, P. J.; DEITEL, H. C: Como Programar. 6. ed. São Paulo: Pearson Prentice Hall, 2011. Disponível em: <https://laureatebrasil.blackboard.com/>. Acesso em: 29/06/2019. ERNESTO, L. O que é Ataque de Buffer Overflow? 2018. Disponível em: <https://www.gestortecnico.net/2018/10/o-que-e-ataque-de-buffer-overflow.html>. Acesso em: 01/07/2019. PUGA, S.; RISSETTI, G. Lógica de Programação e Estruturas de Dados – com Aplicações em Java. 3 ed. São Paulo: Pearson Education do Brasil, 2016. Disponível em: <https://laureatebrasil.blackboard.com/>. Acesso em: 29/06/2019. Vamos praticar Tendo em vista o programa exposto, pede-se para que você reflita sobre os seguintes questionamentos: O que acontece com a string “str0”? Faça uma pesquisa e estabeleça um rápido paralelo da observação feita sobre a string “str0” e o ataque do tipo "buffer overflow" Qual seria a sua sugestão para evitar o problema? Acompanhe as outras postagens para que você possa comparar detalhes e outras formas de raciocínios e, assim, você e os demais poderão aprofundar nas sugestões. Não se esqueça de compartilhar suas conclusões no fórum da seção “Compartilhe”. Resultado str0 = 98765 str1 = abcd str2 = efghijklm Houve um Buffer Overflow na string "str0", quando a string "str0" original que era constituída por "98765" foi copiada (strcpy) para a string "str1" igual a "1234567". O Buffer Overflow, que acontece quando um programa em execução tenta gravar dados além do que o buffer de memória permite, sobrecarregando assim o sistema, ocorreu pois a string original "str0" configurado para 6 bytes (6 casas) foi substituído por dados possuindo 8 bytes (8 casas), o que faz com o Buffer Overflow tenha ocorrido por 2 bytes. Para evitar o problema, seria necessário apenas configurar o string "str0" para 8 bytes (8 casas).