O bug heartbleed é uma manifestação da exploração clássica de estouro de buffer em C?

Em uma de nossas primeiras palestras da CS sobre segurança, abordamos o problema de C sem verificar os comprimentos alegados do buffer e alguns exemplos das diferentes maneiras pelas quais essa vulnerabilidade poderia ser explorada.

Nesse caso, parece que foi um caso de operação de leitura maliciosa, em que o aplicativo acabou de ler quantos bytes de memória

Estou correto ao afirmar que o bug do Heartbleed é uma manifestação do problema de verificação do comprimento do buffer C?

Por que o uso malicioso não causou uma falha de segmentação ao tentar ler a memória de outro aplicativo?

Simplesmente zerar a memória antes de gravá-la (e depois ler a partir dela) causaria uma falha de segmentação? Ou isso varia entre os sistemas operacionais? Ou entre algum outro fator ambiental?

Aparentemente, as explorações do bug não podem ser identificadas. Isso ocorre porque a função de pulsação não registra quando chamada? Caso contrário, certamente qualquer solicitação de uma cadeia de ~ 64k provavelmente será maliciosa?

questionAnswers(2)

yourAnswerToTheQuestion