Ler além do que chegou
Confiar num tamanho informado, em vez de medir o dado, faz o programa devolver memória vizinha.
Um programa guarda dados em blocos de memória (buffers). Quando ele precisa copiar ou devolver um pedaço, usa um tamanho. Se esse tamanho vem de fora e não é conferido contra o que realmente chegou, o programa lê além do dado e pega o que estava ao lado na memória: isso é uma leitura além do limite (buffer over-read).
No Heartbleed (CVE-2014-0160), o heartbeat do TLS mandava um texto e o tamanho dele. O servidor devolvia tamanho bytes sem checar quantos bytes de texto chegaram. Mandando 3 bytes e dizendo 500, o cliente recebia 500: os 3 reais e 497 de memória vizinha, que podiam conter chaves, sessões e senhas de outros usuários. Nada de código rodava; só vazava memória (divulgação de informação).
O conserto foi conferir que o tamanho informado cabe no que chegou, e descartar o heartbeat se não couber. A regra: não confie num tamanho que veio junto com o dado; meça o dado.