Az elmúlt napokban igen nagy visszhangot kapott informatikai körökben a POODLE nevű biztonsági hiba, ami a fél éve felszínre került Heartbleedhez hasonlóan szintén a biztonságos(nak hitt) HTTPS technológiát érinti.
Mi az a POODLE?
A Padding Oracle On Downgraded Legacy Encryption magyarul nagyjából azt jelenti, hogy bélésből jóslás a leminősített örökölt titkosításon. Ennek így nem sok értelme van, ezért inkább részletezzük egy kicsit, hogy miről is van szó.
A ma használt titkosítási eljárások fix méretű, úgynevezett blokkokkal dolgoznak. Az AES például 16 byte-os, a 3DES pedig 8 byte-os blokkokat használ. A titkosítandó adat viszont ritkán bontható egész számú blokkokra, ezért a bitsorozat végét egy úgynevezett béléssel szokták feltölteni, hogy az utolsó blokk is ugyanolyan méretű legyen, mint a többi. Ha az adat pont olyan hosszúságú, hogy egészszámú blokkokra lehet osztani, akkor az algoritmus hozzárak még egy blokkot, ami csak a bélést fogja tartalmazni. A bélés utolsó byte-ja egy számot tartalmaz, ami azt mondja meg, hogy az utolsó blokkban hány byte hosszú a bélés. Ha tudjuk, hogy az eredeti üzenet hány byte hosszú volt, akkor könnyedén megmondhatjuk, hogy hány byte hosszúságú ez a bélés anélkül, hogy a titkosítást visszafejtenénk.
Ha szerencsénk van, és az adat pont olyan hosszú, hogy az utolsó blokk csak bélés, akkor a bélés utolsó byte-ja csupa egyest fog tartalmazni. Ha a bélés utolsó egy byte-ját kicserélhetjük egy másik titkosított bitsorozattal, és az így képzett blokkot a szerver elfogadja, az azt jelenti, hogy a kicserélt bitsorozat csupa egyesből állt. Ebben az esetben máris megszereztünk egy byte-nyi információt a titkosított adatból. Ha a feltörni kívánt bitsorozat minden byte-jával eljátszuk ezt a trükköt, akkor minden olyan byte-ot megtalálunk, ami csupa egyest tartalmaz. Ezzel persze önmagában még nem sokra megyünk, de az SSL egy korábbi, BEAST nevű sérülékenységét kihasználva viszont vissza tudjuk fejteni a többi byte-ot is.
A titkosított adatok visszafejtéséhez tehát együtt kell használni a POODLE és a BEAST sebezhetőségeket. A jó hír az, hogy a BEAST hibát már 2006-ban, a TLS 1.1-es verziójában javították. A rossz hír viszont az, hogy a mai szerverek még mindig támogatják az elavult SSL 3.0-t. (A sorrend: SSL 3.0, TLS 1.0, TLS 1.1, TLS 1.2)
Az SSL/TLS alkudozás problémája
Amikor két számítógép HTTPS kapcsolaton keresztül akar adatokat küldeni egymásnak, akkor kölcsönösen közlik egymással, hogy milyen titkosítási eljárásokat ismernek, vagyis hogy melyik az a legmagasabb SSL/TLS verzió, amit közösen használni tudnak. Viszont egy rossz megoldásnak köszönhetően, ha a kapcsolódást kezdeményező gépnek magasabb az SSL/TLS verziószáma, mint a másiknak, akkor a kapcsolat nem mindig jön létre, és ilyenkor a kapcsolódást kezdeményező gép nem tudja, hogy miért szakadt meg a kommunikáció. Ezt a problémát a mai böngészők úgy kerülik meg, hogy újra kapcsolódni próbálnak, és azt hazudják a másik gépnek, hogy egyel alacsonyabb számú verziót tudnak használni, mint amit az előbb mondtak. Mindezt addig ismétlik, amíg végre létre nem jön a kapcsolat.
Mivel még mindig vannak olyan aktív szerverek az interneten, amik az SSL 3.0-nál modernebb titkosítást nem ismernek, sokszor a biztonságosabb gépek is lebutítják a saját kapcsolatukat, hogy működjön a kommunikáció. Az SSL 3.0 pedig artalmazza a POODLE sebezhetőséget, így máris megvan a baj.
Az Opera intézkedései
Egyedi esetekben működhet az SSL 3.0 teljes tiltása, globálisan viszont nem jöhet szóba, mert ezzel az összes legfeljebb SSL 3.0 titkosítással rendelkező szerver elérhetetlenné válna. A következő logikus megoldás az lenne, hogy a böngésző a TLS 1.0-s verziója alá nem hazudná magát. Ezt ki is próbálták, de sok szervernél kapcsolódási problémát okozott, így elvetették. Létezik erre egy szabványos megoldás is, amit viszont még csak kevés szerver támogat, így jelenleg nem orvosolja a problémát. Az Opera a saját szerverein viszont már elvégezte a szükséges módosításokat.
A Windowsos, Maces, Linuxos és Androidos kiadásokban bevezettek egy technológiát, ami megakardályozza a POODLE támadást. Ez csak ideiglenes megoldást nyújt, de időt ad a szerverek üzemeltetőinek, hogy frissítsék a titkosítási eljárást a legmodernebb TLS szabványra. Ezzel együtt kikapcsolták a biztonsági plecsnit is az SSL 3.0-nál, így a böngésző címsorában ugyanaz az ikon fog megjelenni, mint a sima HTTP kapcsolat esetében.
Az iOS-es kiadás az Apple beépített megoldását használja, ezért ott az Apple-re kell várni a hiba javításához. A Mini egyáltalán nem érintett a problémában. A régi Opera esetében viszont meglépték az SSL 3.0 teljes tiltását, így a 12-es vagy annál régebbi verziót használók belefuthatnak elérhetetlen weboldalakba. A tiltás távoli eléréssel történt, nem adtak ki hozzá külön frissítést.
A teljes megoldás persze az SSL 3.0-s verziójának teljes kukázása lenne, de a fent említett problémák miatt erre még minimum néhány hónapot várni kell.
A bejegyzés trackback címe:
Kommentek:
A hozzászólások a vonatkozó jogszabályok értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a Felhasználási feltételekben és az adatvédelmi tájékoztatóban.
csakugycsakugy 2014.10.21. 19:26:41
Ha jól értem, akkor a titkosítás "megfelelőségét" mindig az Opera szerveiről kéri le? Ha egyszer úgy dönt az Opera, hogy teljes mértékben leveszi a kezét a 12-es verzióról, akkor elképzelhető, hogy semmilyen titkosított oldal nem fog majd működni?
Amúgy tartalmas cikk, köszi! :)
Nekomajin · http://nekomajin.wordpress.com 2014.10.21. 20:21:15
Nem hiszem. Arra elég kicsi az esély, hogy most 1-2 éven belül megtörjék a legújabb TLS-t, ráadásul még egy csomó tényezőnek össze kéne játszani, hogy a legegyszerűbb megoldás a teljes tiltás legyen. 1-2 év múlva meg már úgyse fog senki önszántából régi Operát használni, mert a plain text oldalakon kívül semmi sem fog működni vele.
Egyébként lusta vagyok megnézni, de szerintem a configban vissza lehet kapcsolni az SSL 3-mat, ha bátor vagy.
csakugycsakugy 2014.10.21. 22:26:09
A configos dolgot megnéztem (opera:config#SecurityPrefs|EnableSSLv3), de ugyanezt megtaláltam a beállításoknál is (Opera menü -> Beállítások -> Beállítások -> Haladó fül -> Biztonság lap -> Biztonsági protokollok... (gomb) -> [_] SSL 3 engedélyezése). Nem tudom, hogy alapértelmezetten így volt e vagy most a történtek hatására (POODLE) lett átállítva az Opera részéről, vagy pedig én kapcsoltam ki annó, de nálam nincs bepipálva az SSL 3 (és ebben az elrejtett beállításokban nem igen jártam mostanság). :D
penge™ · http://www.thevenusproject.com/ 2014.10.24. 05:06:06
"A tiltás távoli eléréssel történt, nem adtak ki hozzá külön frissítést."
És erről miért most hallok először, hogy ilyeneket tudnak csinálni? Régebben a browser.js és Dragonfly módosítások kivételével a legapróbb változtatásnál jött egy javítóbuild.
Nekomajin · http://nekomajin.wordpress.com 2014.10.24. 10:39:13
Konkrétan egy flaget állítottak át. Szerinted?
penge™ · http://www.thevenusproject.com/ 2014.10.26. 13:05:50
Ez kicsit úgy csengett, hogy innentől a checkboxot is hiába nyomogatod, mert központilag letiltották.
Mert máskülönben hogyan alkalmazták volna az ÖSSZES telepítésre? Azokra is, ahol az operaprefs.ini-ben már letárolásra került a beállítás, mert pl. egyszer valamikor módosítva lett a Security Prefs szekció valamelyik értéke?
Nekomajin · http://nekomajin.wordpress.com 2014.10.26. 16:19:07
Szerintem csak annyi történt, hogy átállították a flaget központilag. Én legalábbis ezt vettem ki a bejegyzésből és néhány kommentből.
Azt, hogy nem tudják az összesre alkalmazni a javítást, szerintem úgy kell érteni, hogy nem biztos, hogy a user engedi az autoupdate-et, ezért nem kapná meg mindenki a frissítést.
domel 2014.10.27. 11:27:11
Nekomajin · http://nekomajin.wordpress.com 2014.10.27. 11:56:07
Nincs.
Teddy Beer 2014.10.27. 14:19:20