Hlavní navigace

POODLE útok na SSLv3

Ondrej Mikle

POODLE je nový útok na SSL verzi 3, umožňující dešifrovat komunikaci aktivním útočníkem. V ideálním světě by POODLE byl jenom kuriozitou obstarožního protokolu, ale SSL verze 3 se dosud kvůli zpětné kompatibilitě používá. Možná je tento útok připomínkou, aby se již od SSL3 definitivně upustilo.

Nový týden, nová zranitelnost v SSL. Je známou věcí, že útoky se pouze zlepšují a nikdy nezhoršují – ovšem, jak se zdá, už to neplatí o jejich jménech. Jméno POODLE je backronym z Padding Oracle On Downgraded Legacy Encryption a podobá se mírně staršímu BEAST, což je také útok založený na padding oracle dotýkající se šifrování v CBC módu.

Útok vyžaduje:

  • útočník musí být aktivní man-in-the-middle s možností měnit pakety
  • oběť musí spustit útočníkův javascript, který bude generovat HTTPS dotazy

Útok by teoreticky fungoval i proti jiným SSL/TLS klientům než je prohlížeč, ale bylo by potřeba místo javascriptu najít jiný způsob, jak generovat požadavky se specifickou strukturou.

Použiji příklad od Adama Langleyho – budeme uvažovat blokovou šifru o velikosti bloku 8 bajtů. Předtím, než se plaintext zašifruje, přidá se MAC a nakonec padding (což je několik bajtů) a to tak, aby zpráva byla velikosti násobku bloku. Padding je vždy přítomen. Před zašifrováním to bude vypadat následovně:

GET request rozdělený na bloky

Úplně poslední bajt v paddingu s hodnotou 7 říká, že před ním je 7 bajtů, které nepatří do zprávy, ale jsou tam jen jako „výplň“. Na jejich hodnotě nezáleží, což je podstatné, protože bez toho by útok nefungoval (zde se to liší od TLS, kde jsou v paddingu vyžadovány specifické hodnoty). Jak se v CBC módu dešifruje, si připomeňme diagramem z Wikipedie:

CBC dešifrování

Důležité je, že útočník musí vědět, kde v plaintextu se nachází cookie, kterou chce dešifrovat a ukrást, i když správu rozšifrovat ještě neumí. Ví, že v tomto případě se nachází ve čtvrtém bloku. V momentě, kdy oběť odesílá šifrovaný požadavek, vezme čtvrtý blok a zkopíruje ho na místo posledního bloku, který šifroval padding.

Co získá útočník nahrazením původního posledního bloku? S největší pravděpodobností dojde k chybě při dešifrování, protože „nový poslední bajt“ bude nějaké nesmyslné číslo – pozná se to podle toho, že se spojení ukončí. Trik spočívá v případu, kdy se útočníkovi povede trefit, aby poslední bajt po dešifrování posledního bloku byl opět původních 7. To se statisticky povede v jednom případě z 256. K tomu slouží ten zmiňovaný javascript, aby opakovaně generoval požadavky, dokud nenastane tento případ.

Teď útočník ví z konstrukce CBC dešifrování, že poslední bajt z dešifrovaného duplikovaného cookie bloku, xorován s posledním bajtem předposledního šifrovaného bloku, je roven 7. Z tohoto už dokáže dopočítat poslední bajt cookie.

Další bajty cookie dostane podobným způsobem: stačí, aby se v požadavku o jeden bajt prodloužila cesta, tak aby se na hranici bloku dostal další bajt z cookie na dešifrování:

GET request posunut

V praxi by bylo asi lepší používat POST požadavky, protože pomocí parametrů se snáze ovládá počet bajtů za cookie, tak aby data nepřetekla do padding bloku.

Jako nejlepší obrana proti POODLE je zjevně vypnutí podpory SSL3. U dvou nejběžnějších serverů Apache a nginx se podpora vypíná následovně v jejich konfiguračních souborech:

Apache:

SSLProtocol All -SSLv2 -SSLv3 

nginx:

ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 

Existuje i mechanismus SCSV, který má zabránit downgrade útoku. I když draft není kompletní, Chrome a poslední Firefox ho už implementuje. Podpora na straně serverů vyžaduje poslední openssl, aby ji servery jako Apache a nginx mohly využít.

Našli jste v článku chybu?

20. 10. 2014 16:29

Někdo (neregistrovaný)

A co by tedy mělo být dobrý důvod k odříznutí MSIE 6 když to vypadá že nestačí existence bezpečnostních problémů které už Microsoft nebude opravovat?

20. 10. 2014 21:21

atarist (neregistrovaný)

Budu hnusnej, ale opravdu nevidim ani jeden duvod, proc by nekdo na serverech mel podporovat klienty s prohlizecem, ktery nepodporuje ani jeho vyrobce.

Lupa.cz: Kdo pochopí vtip, může jít do ČT vyvíjet weby

Kdo pochopí vtip, může jít do ČT vyvíjet weby

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

DigiZone.cz: Test Philips 24PFS5231 s Bluetooth repro

Test Philips 24PFS5231 s Bluetooth repro

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

Podnikatel.cz: 1. den EET? Problémy s pokladnami

1. den EET? Problémy s pokladnami

Vitalia.cz: I církev dnes vyrábí potraviny

I církev dnes vyrábí potraviny

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

Podnikatel.cz: Snížení DPH na 15 % se netýká všech

Snížení DPH na 15 % se netýká všech

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Podnikatel.cz: Zavře krám u #EET Malá pokladna a Teeta?

Zavře krám u #EET Malá pokladna a Teeta?

Podnikatel.cz: Udávání kvůli EET začalo

Udávání kvůli EET začalo

Vitalia.cz: Mondelez stahuje rizikovou čokoládu Milka

Mondelez stahuje rizikovou čokoládu Milka

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

Vitalia.cz: Taky věříte na pravidlo 5 sekund?

Taky věříte na pravidlo 5 sekund?

Podnikatel.cz: Podnikatelům dorazí varování od BSA

Podnikatelům dorazí varování od BSA

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Vitalia.cz: Když přijdete o oko, přijdete na rok o řidičák

Když přijdete o oko, přijdete na rok o řidičák