openssh jde prikladem, snazi se zbavit openssl :)
http://article.gmane.org/gmane.os.openbsd.cvs/126239/match=ssh+openssl
A zase (další server) s odkazem na web s názvem bugu v url který ve skutečnosti nepodává příliš relevantní informace a přijde mi jako klasický scare korporátní web ještě navíc s reklamou (s naším bezpečnostním řešením by se tohle odhalilo).
Pro relevantní info (tedy alespoň pro programátory) je lepší kouknout na http://blog.existentialize.com/diagnosis-of-the-openssl-heartbleed-bug.html
čti prosímtě
Can attacker access only 64k of the memory?
There is no total of 64 kilobytes limitation to the attack, that limit applies only to a single heartbeat. Attacker can either keep reconnecting or during an active TLS connection keep requesting arbitrary number of 64 kilobyte chunks of memory content until enough secrets are revealed.
Pozor, dopustil jste se poměrně nebezpečného zjednodušení. Používá-li jakýkoli SSL server (zejména tedy webservery, ale i OpenSSH a OpenVPN a další) zranitelnou OpenSSL knihovnu, je paměť serverového procesu jednoduše volně čitelná komukoli v internetu bez jakékoli potřeby autentizace.
Snadno lze tedy kompromitovat privátní klíč serveru, s jehož pomocí je pak možno například:
1) Provést nedetekovatelný MITM (pracné)
2) Dešifrovat jakoukoli zachycenou komunikaci serveru s libovolným klientem (v době různých veřejných WiFi často triviální)
3) Za chodu přečíst kompletní obsah paměti (uživatele, hesla, session klíče, cokoli, kvůli čemu se vůbec TLS používá) serverového procesu (tedy pokud jeden proces, řekněme Apache s mpm_worker, obsluhuje spojení pro řadu klientů, lze najednou získat data všech relací).
Jinak řečeno, všechny serverové certifikáty, které byly používány pro službu stojící nad zranitelnou OpenSSL, je nutné považovat za kompromitované a vyměnit. Exploituje to snadno školák během pár minut.
Tohle neni uplne pravda. OpenSSH sice pouziva openssl knihovnu, ale ne na vlastni komunikaci. Takze primarne neni kde pouzit utok na hearbeat. Host-key OpenSSH by tedy "mel byt" podle me v bezpeci, nechavam stranou jestli se k nemu dalo dostat oklikou pres napadeni jine sluzby.
Vida. Ta chyba je v kódu dva roky, a za tu dobu si jí nikdo nevšimnul. Nebo v horším případě všimnul a nenahlásil. Ten princip "víc očí víc vidí" zřejmě nefunguje. Zřejmě hlavně proto, že se ty oči mohou koukat, ale nedělají to, protože tomu nerozumí.
Tady vidím, že podle odhadů je možné kompromitovat dvě třetiny web serverů. Moc pěkné. Vzpomínám na doby, kdy zastánci Linuxu kritizovali nebezpečí plynoucí z "monokultury Windows".
http://arstechnica.com/security/2014/04/critical-crypto-bug-in-openssl-opens-two-thirds-of-the-web-to-eavesdropping/
Více očí víc vidí. Zde _není_ nad čím pochybovat. Vždy očekávejte v software chyby, tím více, čím méně práce bylo stráveno vývojem.
Security-by-obscurity nefunguje, také jasné.
Závažnost chyby rozhodně není pěkná. Nevím, z čeho se radujete.
S jakousi "monokulturou Windows" to nesouvisí, ať tím myslíte cokoliv.
[OT] teď pěkně dejme dohromady všechny binárky na windows táhnoucí s sebou openssl, majoritní distribuce tento bug měly opraven velmi rychle po embargu. [/OT]
Jak jsem psal, musely by se ty oči dívat, a velmi dobře věci rozumět. Je prostým faktem, že do kódu nakonec kouká minimum lidí, schopných odhalit bezpečnostní problémy. S počtem řádků a počtem těch lidí to vypadá tak, že problém může zůstat dlouho ukrytý.
Navíc do open source SW není problém vložit backdoor. Přispívat do kódu může prakticky kdokoliv. Stačí odvést pár stovek hodin kvalifikované práce, a váš kód bude vítán. Pak už stačí jen udělat drobnou "chybu", která není na první pohled zjevná, a backdoor se dostane do upstreamu. A jak takové "chyby" vyrobit? Koukněte se:
http://underhanded.xcott.com/
Paranoidní jedinci (zvlášť ty mluvící o spiknutí MS nejspíš se židy a zednáři) by se měli zamyslet, jestli to nebyl případ bugu v OpenSSL na Debianu.
Dovolím si také citovat z linkované site: C is an ideal language for this contest because of both its universality and its ability to do horrible things. C lets you overwrite stack entries, screw up function pointers, and poison all data at the bit level. C nods encouragingly as you attempt to execute a floating point array. In terms of enforcing program correctness, your typical C compiler is basically the two guards from Swamp Castle in Monty Python and the Holy Grail.
Pokud byste neznal tu scénku z filmu Monty Python and the Holy Grail, doporučuji ke shlédnutí:
https://www.youtube.com/watch?v=g3YiPC91QUk&list=RDg3YiPC91QUk#t=01m53s
Ad Nevím, z čeho se radujete - obyčejně to není potřeba, ale speciálně pro vás: <irony>Moc pěkné.</irony>
Ad dejme dohromady všechny binárky na windows táhnoucí s sebou openssl - těch asi nebude moc. Jak dlouho bude trvat je opravit, to záleží na autorech aplikací. Nakonec na Linuxu také musíte čekat na Oracle, SAP, IBM a další.
Tak to zkuste ;-) Je mnohem jednodušší dostat backdoor do proprietárního kódu. Už proto, že to nikdo moc zkontrolovat ani nemůže. A pak se může stát, že první, kdo podobnou chybu odhalí, bude pětiletý kluk ;-)
Je hezke, ze si vase pritelkyne smi zahrat Titanfall a nemusi kvuli tomu tahat svoji vlastni kreditku. Je mi uplne jedno, ze se do Xboxu da vlamat zadanim mezery misto hesla. Potiz ale je, ze takovouto kvalitu programovani MS predvadi i v jinych, mnohem zavaznejsich produktech. Pristup MS je nejak to zprasit, na bezpecnosti nezalezi a kdyz vznikne pruser, tak se to zalepuje.
Do closed source lze dát backdoor také a kontroluje to mnohem méně očí. Uzavřený sw dekompiluje zvenčí opravdu jen útočník a ten chybu nenahlásí. Chcete si kopnout, ale chybí tomu pointa.
Spíše ten problém ukazuje na super model distribuce sw v linuxu, kdy chyba je v podstatě okamžitě ve všech distribucích opravena.
Do closed source SW rozhodně nedá backdor jakýkoliv anonym, který párkrát přispěl do kódu. Komerční firmy navíc většinou provádějí vlastní audit kódu, plus si často platí externí audit. V případě produktů MS mají navíc kód k dispozici klíčoví zákazníci a vlády, a mohou provádět vlastní audit.
Distra mohou opravit problém poměrně rychle, stejně jako například Microsoft nebo Oracle. Problém je s malými výrobci SW, kterým to může trvat déle. Faktem je, že pro Linux většina výrobců SW prostě nepíše. Ovšem to je asi stejná výhoda, jako ta že u koňského povozu na rozdíl od automobilů nemáte svolávací akce :)
Do closed source může autor zanést backdoor vědomě nebo na příkaz nějaké vládní autority, u opensource má tuto možnost omezenou a musel by ji maskovat. Zdroják sice dostanou vyvolení, ale pochybuji, že mají možnost jak si ověřit shodu binárky se zdrojákem nebo že to sami kompilují. Ale budiž, několik málo má vyvolených má možnost obdobné možnosti jakou mají u opensource všichni a vy to považujete (pro mne paradoxně) za výhodu. S auditem jste ale argumentačně zcela mimo, protože ten si můžete nechat udělat i opensource, pokud jste na nich kriticky závislý a tedy nejde o žádnou výhodu.
Druhým odstavcem zamlouváte faktickou připomínku: zatímco distra zajistí překompilování a aktualizaci prakticky všeho obsaženého sw a máte prakticky ihned opraveno (nebo spíše ještě před zveřejněním chyby), u closed source jste ohrožen až dokud poslední z x dodavatelů neprovede záplatu. Plus to musíte sledovat, protože neinstalujete vše z jednoho centrálního repositáře sw.
Ve firmách se commity kontrolují stejně jako ve světě open source. Rozdíl je v tom, že autoři kódu nejsou anonymní. Například TrueCrypt píšou neznámí autoři.
Minimálně MS dává zdrojáky i s návodem ke kompilaci a s krátkým kurzem.
U open source si jistě audit můžete zaplatit. Otázkou je, kdo to opravdu udělá.
Pokud kód SW součástí distra, je to stejné, jako když je například součástí Windows. Pokud součástí distra nebo Windows není, a jde o nějakého nezávislého vývojáře, tak je situace horší. A jak jste si mohl všimnout, většina SW pro podporu businessu (účetnictví, billing, sklady, groupware, POS SW, opravdové DB engines atd.) součástí dister nejsou.
Kdokoli může navázat HTTPS spojení s veřejným webserverem a získat z toho 64 kB nějakých dat. To může opakovat. Co se tam obvykle nachází, to nikdo neví. Je možné, že získat něco zajímavého je skoro nemožné, protože se do těch 64 kB nic moc zajímavého nevyskytuje. Nebo je rozložení v paměti natolik náhodné, že se tam vyskytuje s rozumným rozložením pravděpodobnosti cokoli?
Ale teoreticky se tam může nacházet třeba tajný klíč. Dobře, řekněme, že jej útočník získá. Aby ale způsobil nějakou reálnou škodu, tak by ještě musel mít možnost dostat se k datům po cestě mezi nějakým jiným klientem a serverem, aby data mohl alespoň odposlechnout (a následně dešifrovat). Nebo lépe, aby je mohl pozměnit a provést útok man-in-the-middle. Tohle už jen tak někdo hromadně nezíská. Buď někde na nějaké lokální wifi nebo by musel být někde o nějakého poskytovatele připojení, na páteřních linkách apod. Nebo je to jinak? Nestudoval jsem to, jen jsem to tak nějak pochopil z indicií, které jsem si přečetl.
Záleží na tom, co mohlo být v paměti v době útoku. Privátní klíč certifikační autority byste asi v paměti serveru běžně mít neměl, privátní klíč serveru v paměti nejspíš byl. Ale pokud nemáte představu, jak se zachází s klíči pro VPN, připadá mi ta výměna klíčů skoro zbytečná, protože těch možných vektorů útoku je dost možná mnohem víc. Jinak tu výměnu klíčů je samozřejmě potřeba provádět až po té, co budete mít nasazenou verzi s vyřešenou chybou.