ASP.NET a "oracle padding" útok - Nethemba

BLOG

ASP.NET a “oracle padding” útok

2010-09-28 17:01 Pavol Lupták

Za posledných niekoľko dní sa čoraz častejšie objavujú správy o zraniteľnosti technológie ASP.NET, ktorú odprezentoval Juliano Rizzo na bezpečnostnej konferencii ekoparty 2010. Ako však táto chyba funguje a aké sú jej potenciálne hrozby?

ASP.NET používa blokovú šifru AES v CBC móde na výmenu citlivých údajov v komunikácii klienta so serverom, čím zabraňuje ich podvrhnutiu a zaručuje integritu. Táto zraniteľnosť však využíva niektoré implementačné chyby a umožňuje šifrovanie kompletne rozbiť, útočník týmto získava možnosť dáta ľubovoľne modifikovať.

Týka sa nasledovných vecí:
– ViewState
– Autentizačné tickety pre formuláre
– Anonymná identifikácia
– Role Cookies

Inými slovami, zraniteľosť postihuje každú verziu ASP.NET.

Zraniteľnosť využíva základný kryptografický útok CCA (Chosen-ciphertext attack), útočník pošle zašifrovaný text bez toho, aby použil správny kľúč, webovému serveru. Podľa návratovej chyby zistí, či sa istá časť dešifrovala správne. Týmto spôsobom dokáže nazbierať dostatočné množstvo informácií na zistenie kľúča, ktorým aplikácia dáta šifruje. Technické detaily sú k dispozícii v http://netifera.com/research/poet//PaddingOraclesEverywhereEkoparty2010.pdf, útok bol odprezentovaný na bezpečnostnej konferencii Eurocrypt už v roku 2002 ako “padding oracle attack”.

Návrh ASP.NET však umožňuje chybu kriticky zneužiť aj pre aplikácie, ktoré na prvý pohľad neobsahujú citlivé údaje. Podľa nepísaných bezpečnostných pravidiel sa neodporúča umiestniť žiadne citlivé informácie do koreňového adresára pre webový server (DocumentRoot). ASP.NET však túto zásadu porušuje napríklad súborom “web.config”.

Vo verzi ASP.NET 3.5 Service Pack 1 a ASP.NET 4.0 je pridaná podpora načítania ľubovoľného súboru aplikácie. Táto funkcionalita je chránená cez “machine” kľúč, ktorý je možné tiež útokom získať a zobraziť vyššie spomínaný “web.config”, často obsahujúci prístupové heslá.

Aktuálne neexistuje žiadna ochrana proti útoku, Microsoft síce pred pár dňami uviedol, že stačí nastaviť “CustomErrors” tak, aby server vrátil rovnakú chybovú stránku pre všetky chyby. Táto ochrana je však úplne nedostatočná, nakoľko je možné zmerať rozdiely časov odozvy a použiť útok s miernou modifikáciou pomocou “time delay” techniky. Dátum zverejnenia exploitu je zatiaľ neurčitý.

UPDATE: Microsoft zverejnil dnes opravu pre tento druh útoku http://www.microsoft.com/technet/security/bulletin/MS10-070.mspx a podľa vyjadrenia Julianno Rizzo-a danú chybu naozaj rieši.

referencie:
http://en.wikipedia.org/wiki/Chosen-ciphertext_attack

http://blogs.technet.com/b/srd/archive/2010/09/17/understanding-the-asp-net-vulnerability.aspx

http://ekoparty.org