Heartbleed i muke Open Source projekata
„Given enough eyeballs, all bugs are shallow“
– Eric Steven Raymond, „The Cathedral and the Bazaar“, 1997
„People, people, people
You know what it mean to be left alone“
– Elmore James, „Bleeding Heart“, 1961
Prošlomesečni Heartbleed bug je u medijima bio propraćen naslovima kao što su „Change Your Passwords: A Massive Bug Has Put Your Details at Risk“, „Hackers use Heartbleed to attack ‘major corporation‘“, „YOU MIGHT WANT TO STAY AWAY FROM THE INTERNET ENTIRELY FOR THE NEXT FEW DAYS WHILE THINGS SETTLE.„. Ali, ovog puta su se uzbunili i poznati stručnjaci – Bruce Schneier je napisao: „‘Catastrophic’ is the right word. On the scale of 1 to 10, this is an 11.„. Google, Facebook, Instagram, Pinterest, Tumblr, Yahoo, svi su pogođeni i reagovali su promenom SSL sertifikata i savetovanjem korisnika da promene lozinke. Čak su i Minecraft serveri prestali sa radom dok nisu zakrpljeni. Fin pregled značajnijih servisa i da li su pogođeni Heartbleed-om se može videti ovde.
CVE-2014-0160 je, kako to i treba da bude, zakrpljen, a zatim i javno objavljen 7. aprila 2014. godine. Jedan je od retkih bug-ova koji je dobio i nadimak, Heartbleed, svoj web sajt, logo i puno medijske pažnje. Špekulisalo se da li je namerno ubačen da bi NSA imala (dodatni) mehanizam za špijunažu, iako je to NSA istog dana negirala. Ili je možda Microsoft želeo da okalja OpenSource pa je pomoću svog Howarda Schmidta i firme Codenomicon (koja je vlasnik domena heartbleed.com) poslednjeg dana podrške za Windows XP pokušao da nagna korisnike da se ipak ne prebace na Linux. Ili je bug prosto nastao pod dejstvom alkohola u novogodišnjoj noći kada je problematični deo koda commit-ovan u git repozitorijum.
Heartbleed bug je programerski sitna ali kritična greška – u pitanju je buffer-overread usled nevalidacije ulaznih podataka. Radi provere stanja SSL konekcije jedna strana komunikacije može da pošalje „heartbeat request“ poruku veličine do 64KB i 16-bitni broj koji označava veličinu te poruke, na šta druga strana treba da odgovori identičnom porukom. Greška u OpenSSL implementaciji ove SSL ekstenzije je u tome što nije proveravano da li je primljena poruka iste veličine kao i naznačena veličina. Time je „heartbeat request“ poruka „zdravo“ (dužine 6 bajtova) uz naznaku da je u pitanju poruka od 16 bajtova rezultirala heartbeat odgovorom koji je sadržao tu reč „zdravo“ ali i dodatnih 10 bajtova koji su se u memoriji našli iza tih 6 bajtova reči „zdravo“. Da bi dokazala koliko je to ozbiljno, ekipa iz CloudFlare-a je 11. aprila pokrenula izazov – postavila je nginx server sa ranjivom verzijom OpenSSL biblioteke i pozvala ljude da pribave privatni ključ sertifikata. Dvojica istraživača su uspeli, jedan nakon 2.5 miliona, drugi nakon samo 100 hiljada pokušaja. Bilo je potrebno samo 9 sati testiranja da bi se dokazalo ono čega su se svi plašili – OpenSSL nam ne pruža toliko željenu bezbednost.
Prema istraživanjima Netcraft-a, od ukupnog broja servera koji koriste SSL, Heartbleed-om je pogođeno 17.5%, što je oko pola miliona servera. Da bi se uklonile posledice potrebno je da svi serveri ažuriraju OpenSSL na bezbednu verziju (1.0.1g) i da promene privatne ključeve i sertifikate, a korisnici da promene svoje lozinke. Procene su da je u prvoj nedelji nakon objavljivanja bug-a oko 80 hiljada SSL sertifikata ponovo izdato. Srećom, ponovno izdavanje sertifikata je kod velikog broja autoriteta besplatno. Takođe, 39% korisnika Interneta je zbog Heartbleed-a promenilo svoje lozinke, što je takođe besplatno 😉
Heartbleed bug je otkriven u delu koda koji je napisao Robin Seggelmann, no njega nikako ne treba kriviti za grešku koju je slučajno napravio pre dve godine volontirajući u razvoju Open Source softvera. Ne treba kriviti ni tim koji stoji iza OpenSSL-a. Kao i kod velikog broja Open Source projekata, u pitanju je neformalna grupa ljudi koji se verovatno nikad nisu ni sreli. Projekat je nekomercijalne prirode i finansira se iz donacija, ali je tim putem poslednjih godina sakupljano tek oko 2000 dolara godišnje. Od dvadesetak programera koji doprinose kodu, samo je jedan bio plaćen da na njemu radi puno radno vreme. Open Source model razvoja softvera takođe ne treba kriviti (kao što je to pokušano ovde), jer se kaže da kad dovoljno očiju gleda kod, svi su bag-ovi površni. Na OpenSSL, bez obzira na to koliko je značajan i koristan velikom broju ogromnih kompanija, nije gledalo dovoljno ljudi. Kao da su svi prihvatili ovaj važan bezbednosni projekat zdravo za gotovo i sladili se proizvodom tuđeg napornog rada, bez učestvovanja i ulaganja u njegovo poboljšanje. Da li je bila potrebna katastrofa, velika medijska pažnja i da se „krv prolije“ da bi se neko počešao po glavi i shvatio koliko mu koristi donosi OpenSSL projekat?
Izgleda da jeste – OpenSSL projekat je nakon Heartbleed-a primio prvu veliku donaciju u vrednosti od 50 hiljada dolara. Osim toga, kao direktna posledica prašine koja se podigla oko Heartbleed-a, Linux Fondacija je okupila softverske gigante kao što su Amazon Web Services, Cisco, Dell, Facebook, Fujitsu, Google, IBM, Intel, Microsoft, NetApp, RackSpace i VMware oko projekta „Core Infrastructure Initiative“ radi dugoročne multi-millionske finansijske pomoći OpenSSL-u i drugim Open Source projektima koji su od velikog značaja za funkcionisanje Interneta. Inicijativa Linux Fondacije je svakako za pohvalu, ali može se slobodno reći „bilo je krajnje vreme“.
Svetu je potrebno više ljudi kakav je Neel Mehta, zaposleni u Google-u koji je otkrio Heartbleed. On je Internet Bug Bounty nagradu za pronalaženje bug-a u vrednosti od 15 000 dolara donirao Fondaciji za slobodu medija koja podržava razvoj nekoliko važnih Open Source projekata za anonimnost novinara i njihovih izvora.
Za više informacija o Heartbleed bug-u, njegovom uticaju i načinima zaštite, preporučujemo članak „Everything you need to know about the Heartbleed SSL bug„.
Bez komentara