O Heartbleed pode causar a falha de um servidor?

1

Eu sei sobre a vulnerabilidade básica do Heartbleed e suas conseqüências e causas. No entanto, eu li recentemente que Heartbleed pode causar um servidor para falhar. Eu estou querendo saber se esta afirmação é verdadeira e, em caso afirmativo, por que é assim.

Tanto quanto eu entendo Heartbleed simplesmente envia de volta o comprimento que o cliente solicitou e sente falta de verificar se esse comprimento é realmente verdade. Então eu não vejo realmente como seria possível travar o servidor lendo dados?

    
por dirkk 27.04.2014 / 22:27

1 resposta

3

A resposta a esta questão envolve um pouco de fundo em como funciona a paginação. Nos sistemas operacionais modernos, os aplicativos não acessam endereços de memória física, mas sim endereços de memória virtual. O mapeamento entre memória virtual e física acontece em partes chamadas páginas. O tamanho da página depende do hardware, o lado mais comum é 4KB.

Quando um processo é iniciado, a maior parte do espaço de endereço da memória virtual está vazia. O acesso a ele causará uma armadilha no kernel do SO, o que pode terminar o processo e talvez registrar o evento.

Como o processo precisa de memória, ele solicita memória do sistema operacional uma ou mais páginas por vez.

O bug heartbleed permitiria vazar até 64 KB de dados. Isso significa que ele pode cruzar limites de até 16 páginas (em outras palavras, pode abranger 17 páginas). A primeira dessas páginas é onde os dados legítimos são armazenados, para que a página tenha a garantia de existir. Mas as seguintes 16 páginas de espaço de endereço virtual podem não ter sido alocadas ainda. Se isso acontecer, não haverá 64 KB de dados para retornar, e o kernel do sistema operacional terá que lidar com a situação. Se nenhum mecanismo de recuperação tiver sido definido, o processo será eliminado.

Dependendo do design do software do servidor, ele pode se recuperar automaticamente, simplesmente gerando um novo processo. Eu acho que o Apache geraria um novo processo. Outro software pode não reaparecer automaticamente. Nesse caso, o heartbleed poderia fazer com que o software do servidor travasse e ficasse inativo.

Um crash completo do sistema operacional não é possível devido a heartbleed. Isso exigiria um bug diferente para travar o sistema operacional.

    
por 27.04.2014 / 22:44

Tags