heartbleed - ceho vseho se vlastne tyka

Jan Pechanec jp at devnull.cz
Fri Apr 11 06:07:31 CEST 2014


On Thu, 10 Apr 2014, Dan Lukes wrote:

> Pokud vim ja, tak chyba spocina v nekontrolovani pripustnych hodnot zaslanych
> parametru, takze klient si dokaze vyzadat odpoved vetsi, nez je na serveru
> buffer na ni vyhrazeny. Ergo zpet dostane nejen tento buffer, ale taky vse, co
> je za nim, az do velikosti 64kB.

	dival jsem se po praci na ten changeset.  Je to tak.  Co se deje 
presne je, ze dle RFC ta data, co odesilatel v heartbeat paketu posle, musi 
prijemce poslat zpatky, pokud souhlasi "payload_length" se skutecnou 
velikosti payloadu, jinak to ma zahodit.  A tohle OpenSSL nekontrolovalo.

	na strane prijemce dostane heartbeat funkce odkaz na pamet, kde je 
skutecny payload.  Pak alokuje pamet velikosti toho payload_length fieldu 
(ktery mohl lhat), data se zkopiruji a poslou zpatky.

	takze kdyz jsem v payload_length rekl, ze posilam 64KB dat (je to 
short int), ale do payloadu jsem dal pouze jeden bajt, tak zbylych 64KB-1 
bajtu se zkopirovalo do odchoziho paketu z pameti, ktera byla za tim 
ulozenym prichozim paketem a patrila necemu jinemu.

	je to tak jednoduchy, az z toho fakt mrazi.  Divil bych se, kdyby 
tohle ruzny instituce nevedely davno.  Staci platit par desitek lidi, ktery 
budou metodicky zkoumat kazdou zmenu v zakladnich security toolkitech a 
programech.  A to bude na cely rok stat asi tak jako jeden dva tanky.

-- 
Jan Pechanec <jp (at) devnull (dot) cz>
http://www.devnull.cz


More information about the Users-l mailing list