Questão de Segurança da Informação — Questões Mescladas de Ameaças aos Sistemas Computacionais — VUNESP 2023
Segurança da Informação›Questões Mescladas de Ameaças aos Sistemas Computacionais
Código
vu196972
Banca
VUNESP
Órgão
CIJUN
Ano
2023
Cargo
Ana ( )
Um potencial problema de segurança em programas em execução é o buffer overflow. Ele consiste em uma anomalia na qual
Aum buffer usado na comunicação entre dois dispositivos ou processos é alimentado com dados em velocidade menor do que os dados são lidos, provocando um esvaziamento que gera efeitos indesejados.
Bo espaço disponível no disco rígido se esgota, gerando mau funcionamento e comportamentos inesperados no sistema operacional.
Cinstruções de máquina relacionadas a operações aritméticas de números inteiros são chamadas com números representados em ponto flutuante, resultando em um comportamento inesperado da ULA (Unidade Lógica e Aritmética) do processador.
Dum cálculo com números representados em ponto flutuante resulta em um valor muito grande, sem representação existente no tipo de dados utilizado.
Eo programa escreve dados em um buffer ultrapassando seus limites, sobrescrevendo a memória adjacente.
Revelar gabarito e comentário▾
GabaritoE — o programa escreve dados em um buffer ultrapassando seus limites, sobrescrevendo a memória adjacente.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Buffer Overflow: definição e mecanismo
Gabarito: letra E. O buffer overflow (ou estouro de buffer) é uma anomalia em que o programa, ao escrever dados em um buffer, ultrapassa os limites desse buffer e sobrescreve a memória adjacente — exatamente o que descreve a alternativa E. Essa é a definição clássica adotada pelas bancas e pela literatura de segurança da informação.
O buffer é uma região de memória temporária usada para armazenar dados enquanto eles são processados ou transferidos. Quando um programa não valida corretamente a quantidade de dados que está escrevendo, ele pode gravar além do espaço reservado, invadindo áreas de memória que pertencem a outras variáveis, estruturas de controle ou até mesmo ao código do programa. Essa falha é uma das vulnerabilidades mais antigas e perigosas da computação, pois permite que um atacante execute código arbitrário, obtenha privilégios elevados ou provoque a queda do sistema.
Na prática, o estouro de buffer ocorre em linguagens de baixo nível, como C e C++, que não fazem verificação automática de limites. Por exemplo, se um programa declara um vetor de 10 posições e recebe uma entrada de 20 caracteres sem checar o tamanho, os 10 caracteres extras serão gravados em endereços de memória vizinhos, corrompendo dados ou sobrescrevendo o endereço de retorno de uma função — o que pode redirecionar a execução para código malicioso.
A banca explora aqui a confusão entre buffer overflow e outros problemas de memória ou de comunicação. As alternativas A, B, C e D descrevem fenômenos distintos: subutilização de buffer, esgotamento de disco, erro de tipo em operações aritméticas e overflow numérico em ponto flutuante. Nenhuma delas corresponde ao conceito de buffer overflow, que é essencialmente um problema de escrita além dos limites de uma área de memória.
Guarde a essência: buffer overflow = escrita além dos limites do buffer, sobrescrevendo memória adjacente. É esse critério que separa a alternativa correta das demais.
Buffer overflow: Definição (Escrita além dos limites do buffer, Sobrescreve memória adjacente); Causa (Falta de validação de tamanho, Linguagens de baixo nível (C, C++)); Consequências (Execução de código arbitrário, Privilégios elevados, Queda do sistema); Confusões comuns (Subutilização de buffer, Esgotamento de disco, Erro de tipo na ULA, Overflow numérico (ponto flutuante))
Alternativa A — ❌ Incorreta
Descreve uma situação em que o buffer é alimentado com dados em velocidade menor do que são lidos, provocando esvaziamento. Isso não é buffer overflow — é o oposto: um problema de subutilização ou de fluxo de dados, que poderia causar atrasos ou perda de dados, mas não envolve ultrapassar limites de memória. O conceito correto de buffer overflow é justamente o excesso de escrita, não a falta dela.
Alternativa B — ❌ Incorreta
Trata do esgotamento do espaço em disco rígido, que gera mau funcionamento do sistema operacional. Esse é um problema de armazenamento, não de memória volátil (buffer). O buffer overflow ocorre na memória RAM, não no disco. A alternativa confunde o meio físico de armazenamento com a memória de trabalho do programa.
Alternativa C — ❌ Incorreta
Menciona instruções de máquina que recebem números inteiros quando deveriam receber ponto flutuante, causando comportamento inesperado da ULA. Isso é um erro de tipo de dado ou de conversão, não um estouro de buffer. A ULA (Unidade Lógica e Aritmética) executa operações sobre valores, mas o buffer overflow é uma falha de escrita em memória, não uma incompatibilidade de tipos.
Alternativa D — ❌ Incorreta
Descreve um cálculo com ponto flutuante que resulta em um valor muito grande, sem representação no tipo de dados. Isso é conhecido como overflow numérico (ou estouro aritmético), que ocorre quando um valor excede o intervalo representável pelo tipo. Embora o nome contenha "overflow", é um fenômeno completamente diferente do buffer overflow: aqui não há escrita em memória adjacente, apenas um valor que não cabe na representação numérica.
Alternativa E — ✅ Correta ⟵ GABARITO
Esta é a definição exata de buffer overflow: o programa escreve dados em um buffer ultrapassando seus limites, sobrescrevendo a memória adjacente. É a descrição fiel do mecanismo da falha, conforme adotada pela literatura e pelas bancas. A alternativa captura os dois elementos essenciais: a escrita além do limite e a consequência de sobrescrever memória vizinha.
PEGA ESSA DICA!
Para diferenciar na prova, lembre-se: buffer overflow é sempre sobre escrita além dos limites de memória. Se a alternativa falar em esvaziamento, disco cheio, erro de tipo ou valor numérico grande demais, descarte — são outros problemas. O termo "overflow" sozinho pode enganar, mas o contexto de memória é o que define.