Security@Opera: TLS "Renegotiation" biztonsági probléma

Az IETF Transport Layer Security Working Group 2009. november elején egy súlyos, az SSL/TLS protokollban levő sebezhetőségről értesült: a "Renego" sebezhetőségről.

A TLS klienseknek és a szervereknek is megvan az a képessége, hogy a titkosítási paraméterek frissítését vagy teljes újraegyeztetését kezdeményezze. Ezzel a kulcsok kevésbé kiszámíthatóbbá tehetők, így a lehetséges támadó(k)nak kevesebb információ áll rendelkezésre, vagy ahogy gyakran használják, egy már biztonságos kapcsolaton keresztül egy kliens-tanúsítvánnyal való azonosítást kérnek a felhasználótól. ...

... egy lehetséges támadó kihasználhatja ezt a feature-t arra, hogy beszúrjon egy részleges HTTP kérést a HTTP szervernek egy, a támadó által létrehozott kapcsolaton, majd továbbítsa a TLS-kézfogást a klienstől a szerverre, és így létrehozza a saját biztonságos kapcsolatát. Ezzel az a probléma, hogy a támadó részleges kérését és a kliens kérését a szerver összekapcsolja egy, a támadó által irányított kéréssé, és végrehajtja azt, például egy 100 000 dolláros átutalást egy másik számlára, úgy, mintha azt a felhasználó jóváhagyta volna. Olyan lehetőségek is léteznek amik a klienset támadják a szerver helyett.

A probléma fő oka az, hogy a szerver azt hiszi, hogy a kliens kért egy újraegyeztetést, amíg a kliens részéről csak a kapcsolat jött létre, és egyik sem tudja a másikról, hogy most a kapcsolat milyen állapotában valónak hiszik magukat...

... Kihangsúlyozandó, hogy ez nem alkalmazás-sebezhetőség, ez egy protokoll-sebezhetőség... és az SSL és TLS protokollok specifikációjának a frissítését igényelte.

Továbbá, ez egy olyan biztonsági probléma, ami nem oldható meg kizárólag azáltal, hogy kijavítjuk a klienset vagy a bank szerverét. Hogy a probléma teljesen kiküszöbölhető legyen, nemcsak hogy a szerver _és_ a kliens is javítva kell legyen, de képesnek kell lenniük arra is, hogy el tudják dönteni: a másik oldal rendelkezik-e javítással.

... majdnem két hónap tárgyalás után a TLS WG-ben a következő konszenzus született: az összes TLS verzió frissítése (és az SSLv3-é, de erre a protokoll verzióra nincs hatáskörük).

  • Egy új TLS Hello Extensiont, RenegotiationInfo-t (RI) adtak hozzá, és a kliens és a szerver közötti legutóbbi TLS-kézfogással kapcsolatos információcserére szolgál.
  • Mivel néhány szerver nem támogatja megfelelően a TLS-kiterjesztéseket, különösen az SSLv3 szerverek, egy különleges Signaling Cipher Suite Value-t (SCSV) küldhet a kliens a szervernek, hogy jelezze: támogatja a RI-kiterjesztést. Egy patchelt szervernek úgy kell válaszolnia, mintha a kliens egy üres RI-t küldött volna, és egy üres RI-vel válaszol, vagy ha azt látja hogy a kapcsolat újraegyeztetés alatt van, akkor megszakítja azt.

A mai Opera 10.5 snapshottal megkezdjük a mi "Renego"-fix implementációnknak a nyilvános tesztelését.

Tesztszerver: https://www.mikestoolbox.net/, ugyanaz amit a TLS 1.2 tesztelésnél használtunk.

A Security@Opera blog teljes cikke itt olvasható.

Hozzászólások

Ez azért elég durvának látszik. Még jó hogy semmiféle pénzzel kapcsolatos ügyet nem intézek a neten.

Kivancsi leszek mikor fogjak ezt javitani a web oldal uzemeltetok es az IE. Mert ha jol olvastam akkor Kliens es Szerver oldalon is javitani kell.

Nem ertem, abbban a hitben eltem hogy az ilyen fontos protokollokat formalis modszerrel ellenorzik, de legalabbis vegigprobalgatnak minden letezo lehetoseg, erre egy 10-15 eves alapprotokollrol ez derul ki?