Kritická bezpečnostní chyba v ASP.NET

V pátek byla zveřejněna kritická bezpečnostní chyba ve všech verzích ASP.NET, od 1.0 po 4.0 včetně. Dosud na ni neexistuje patch, jenom workaround, a ten je bohužel dosti pracný.

Abychom byli zcela korektní, tak původní příčina, známá jako "Padding Oracle Exploit" nemá v zásadě s ASP.NET nic společného, je to kryptografický útok, který zahrnuje rodinu symetrických algoritmů, zahrnující bohužel i AES – nejpoužívanější symetrický algoritmus dneška. Tímto problémem jsou zasaženy všechny webové frameworky a nejenom ony.

Problém ASP.NET spočívá v tom, že využívá AES způsobem, který umožňuje tento problém využít mimo jiné k získání obsahu jinak chráněných souborů – zejména web.config. Tento soubor typicky obsahuje informace jako connection string a další, které mohou být dále zneužitelné různým způsobem.

Podrobnější informace najdete na webu netifera.com.

Workaround

V okamžiku publikace tohoto článku neexistuje na tuto chybu pro ASP.NET oprava, ačkoliv na ní Microsoft usilovně pracuje. Existuje pouze workaround, který zavírá jeden známý směr útoku. Jeho podstatou je, aby server pro všechny HTTP chyby vracel stejné chybové hlášení (tedy nerozlišoval např. chyby 404 a 500).

Nestačí pouze dodržovat best practices a mít povolené custom errors. Problém nespočívá v obsahu chybového hlášení, ale v prostém odlišení odpovědi "nenalezeno" a "vnitřní chyba serveru".

Návod k aplikaci workaroundu najdete zde:

Pozor! Čtěte a aplikujte pozorně!

Problém zmíněného workaroundu je, že jej není možné aplikovat na celý server, ale je nutné opatchovat každou aplikaci zvlášť, což je dosti pracné. Pracuji na řešení pomocí globálně aplikovatelného HTTP modulu, ale mám s ním jisté problémy, takže není dosud k dispozici.

Nic se nejí tak horké…

Jistou uklidňující zprávou je, že v době vydání tohoto článku nebyl zatím k dispozici žádný hotový nástroj pro provedení útoku na ASP.NET aplikaci. Na výše linkované stránce je k nalezení POET (Padding Oracle Exploit Tool) ve verzi 1.0, která ASP.NET přímo nepodporuje.

Také dosud nebyl zaznamenán žádný úspěšný útok na produkční aplikaci. Jediné co je k dispozici, je následující video na YouTube:

Bohužel, tento uklidňující stav je pouze dočasný. Dá se předpokládat, že mechanismus pro úspěšný útok bude k dispozici v řádu hodin, nejvýše dnů. Doporučuji tedy okamžitě přijmout odpovídající opatření.

Preventivní opatření

Dopady útoku může zmínit šifrování kritických konfiguračních sekcí. Útočník sice získá konfigurační soubor, ale důležité údaje v něm budou zašifrované. Podrobnější informace najdete na MSDN:

Bohužel, v řadě scénářů je použití šifrování konfigurace nepoužitelné a ve zbytku dosti komplikované.

Vzhledem k tomu, že realizace úspěšného útoku vyžaduje zaslání řádově desítek tisíc požadavků, lze ke zkomplikování útoku použít i Dynamic IP Restrictions modul pro IIS 7.0. Ten umožňuje dočasně dynamicky blokovat IP adresy, z nichž přichází velké množství požadavků. Jedná se ovšem pouze o zpomalení útoku, nikoliv jeho odvrácení.

Titulek:
Text komentáře:
Vaše jméno:
Váš e-mail: (nebude zveřejněn)

WWW stránka:
Opište text z obrázku:
odpovědětodpovědět Gravatar

Doufejme...

22.9.2010 22:03:0322.9.2010 22:03:03 TomášTomáš 217.117.208.---

... že zrovna_tomu_našemu_serveru_se_to_vyhne, tak jako xxx dalších možných útoků využívajících yyy bezpečnostních chyb. K tomu nám dopomáhej Microsoft!

Pokud vím, tak tohle je první závažná bezpečnostní chyba v ASP.NET za víc než deset let jeho existence.

odpovědětodpovědět Gravatar

RE: Doufejme...

7.10.2010 0:25:067.10.2010 0:25:06 TomášTomáš 217.117.208.---

Souhlasím, já to myslel obecně ve vztahu k celé architektuře Windows, ne jen a pouze k ASP.NET. Jinak díky za osvětlení celé problematiky na jiném místě tohoto webu, určitě zajímavá exkurze do oblastí, kam se člověk během každodenního vývoje tolik nedostane.

  • Altairis
  • Nemesis
  • Microsoft MVP
  • IIS
  • ASP.NET