Questão de Segurança da Informação — Práticas de Segurança e Ameaças em Programação — CESPE / CEBRASPE 2024
Segurança da Informação›Práticas de Segurança e Ameaças em Programação
Código
ce404069
Banca
CESPE / CEBRASPE
Órgão
BACEN
Ano
2024
Cargo
Ana ( )
Em relação aos principais tipos de ataques a aplicações web e a sua prevenção, julgue o seguinte item.
Fuzzing é um tipo de teste de prevenção de ataques que consiste na inserção de poucos dados não aleatórios em uma aplicação web com a expectativa de se obter um código de erro 500.
CCerto
EErrado
Revelar gabarito e comentário▾
GabaritoE — Errado
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”.
Fuzzing: técnica de teste de segurança
❌ ERRADO. O fuzzing é uma técnica de teste de software que consiste na injeção massiva de dados aleatórios ou semi-aleatórios em uma aplicação, com o objetivo de encontrar falhas de implementação, estabilidade e segurança — e não na inserção de "poucos dados não aleatórios" com a expectativa de obter um código de erro 500. O erro 500 é apenas uma possível consequência, não o objetivo do teste.
O fuzzing (ou fuzz testing) é uma técnica de teste de software, geralmente classificada como teste de caixa-preta (black box), que visa descobrir vulnerabilidades e bugs em uma aplicação. A ideia central é submeter o programa a uma grande quantidade de entradas inesperadas, malformadas ou aleatórias, para observar como ele se comporta. Se a aplicação falhar, travar ou apresentar um comportamento inesperado, isso indica uma possível vulnerabilidade que pode ser explorada por um atacante.
A definição correta envolve três elementos-chave que a assertiva distorce:
Quantidade de dados: o fuzzing utiliza muitos dados (injeção massiva), não "poucos dados".
Natureza dos dados: os dados são aleatórios ou semi-aleatórios, não "não aleatórios".
Objetivo: o objetivo é encontrar falhas e vulnerabilidades (como crashes, vazamentos de memória, erros não tratados), não especificamente "obter um código de erro 500". O erro 500 (Internal Server Error) pode ser um dos resultados observados, mas não é a finalidade do teste.
O fuzzing é uma ferramenta importante no desenvolvimento seguro de software, pois permite identificar problemas que poderiam ser explorados por ataques como buffer overflow, SQL injection e outros. Ele pode ser aplicado em diferentes camadas: fuzzing de protocolos, de arquivos, de interfaces de programação (APIs), entre outros.
A banca explora aqui uma confusão clássica: o candidato que conhece superficialmente o termo "fuzzing" pode associá-lo a "teste de prevenção" e "erro 500", mas a definição técnica é bem mais específica. O fuzzing não é um "teste de prevenção" em si, mas uma técnica de detecção de vulnerabilidades — ele ajuda a prevenir ataques ao revelar falhas antes que sejam exploradas, mas sua natureza é de teste, não de prevenção direta.
NÃO CAIA NESSA!
A banca inverte três características essenciais do fuzzing de uma só vez: troca "muitos dados aleatórios" por "poucos dados não aleatórios" e ainda atribui um objetivo específico (erro 500) que não é o propósito do teste. O candidato que memorizou apenas a palavra "fuzzing" sem entender o conceito cai facilmente. Lembre-se: fuzzing = injeção massiva de dados aleatórios para encontrar falhas.
Fuzzing (fuzz testing): Natureza (Técnica de teste black box, Detecção de vulnerabilidades); Características (Injeção massiva de dados, Dados aleatórios/semi-aleatórios, Automatizado); Objetivo (Encontrar falhas e bugs, Forçar comportamento inesperado); Possíveis resultados (Crash, Erro 500 (sintoma, não meta), Vazamento de memória)
Item — ❌ Errado
A assertiva está incorreta por três motivos:
"poucos dados não aleatórios": o fuzzing utiliza muitos dados aleatórios ou semi-aleatórios, gerados de forma automatizada. A palavra "poucos" e "não aleatórios" contradiz diretamente a definição da técnica.
"teste de prevenção de ataques": o fuzzing é uma técnica de teste de segurança (detecção de vulnerabilidades), não um mecanismo de prevenção. Ele ajuda a identificar falhas que, se corrigidas, previnem ataques, mas sua função imediata é testar, não prevenir.
"com a expectativa de se obter um código de erro 500": o objetivo do fuzzing é encontrar falhas e comportamentos inesperados (crashes, exceções, vazamentos de memória). O erro 500 pode ser um dos sintomas observados, mas não é a expectativa central do teste. O fuzzing busca qualquer tipo de falha, não um código de erro específico.
A definição correta, conforme o material de apoio, é: "Fuzz testing ou Fuzzing é uma técnica de teste de software Black Box, que basicamente consiste em encontrar bugs de implementação usando injeção massiva de dados aleatórios / semi-aleatórios de forma automatizada forçando o software a falhar."