Bezpečnostní rizika Web 2.0 aplikací

© 2010 Ing. Roman Fischer

Úvod

V této analýze bych se rád věnoval bezpečnostním rizikům, která v současnosti hrozí aplikacím Web 2.0. Aplikace Web 2.0 se začínají velmi rychle šířit Internetem, aniž spousta lidí zná jejich bezpečnostní nedostatky a najde se určitě mnoho těch, kteří ani neví, co to vlastně Web 2.0 je. Proto se nejprve pokusím přiblížit termín Web 2.0 samotný, zkusím obecně shrnout význam aplikací Web 2.0, jejich podstatu, ať již marketingovou, technologickou či sociální a následně prozkoumám jejich možné nedostatky. Budu se snažit shrnout možné způsoby útoku na tyto aplikace a různé možnosti přístupu k jejich zabezpečení.

Web 2.0

Při pokusu o objasnění termínu Web 2.0 a při snaze najít jeho definici narazíme záhy na problém, že vlastně žádná ustálená definice neexistuje. Poprvé byl termín Web 2.0 použit jako název konference pořádané Timem O’Reillym a společností Medialive International v roce 2004. Název prý měl vystihovat novou verzi či „druhý dech“, který nabralo internetové podnikání po splasknutí „dot com“ bubliny na přelomu tisíciletí. Označení „Web 2.0“ mělo vystihovat změnu přístupu k internetu. Sám Tim O’Reilly charakterizoval Web 2.0 následovně: „ Web 2.0 je revoluce podnikání v počítačovém průmyslu způsobená přesunem k chápaní webu jako platformy a pokus porozumět pravidlům vedoucím k úspěchu na této nové platformě. Klíčovým mezi těmito pravidly je toto: tvořte aplikace, které budou díky síťovému efektu s přibývajícím počtem uživatelů stále lepší.“

Vymezení pojmu Web 2.0 Američana Rosse Mayfielda [1], že „Web 1.0 was commerce. Web 2.0 is people“ nám dává pohled i z jiné strany. Nejedná se primárně o business, ale o lidi. Obchodní stránka se dostaví následně. V tomto ohledu je například zajímavé zmínit myšlenku již vyřčenou Johnem Battellem [2]. Ten správně postřehl, že na internetové prostředí nelze aplikovat modely přebírané z jiných médií. Například snahy internetových vyhledávačů udržet si zákazníky co nejdéle u sebe přerostly v budování megalomanských portálů, ovšem bez lepších vyhledávacích funkcí. Zmíněná snaha udržet si zákazníka nakonec vedla k tomu, že odešel k jinému kvalitnějšímu vyhledávači.

AJAX Technology

Obrázek 1: Web 2.0 Mindcloud Markus Angermeier

Tim O’Reilly uvádí několik oblastí a vlastností, jež jsou pro Web 2.0 aplikace klíčové: [3]

1. Dlouhý chvost (The Long Tail)

Dříve nezajímavé, okrajové oblasti se nyní stávají zajímavými. Produkty a služby, které byly dříve považovány za okrajové, se nyní dostávají do čela zájmu. Chris Anderson [4], šéfredaktor časopisu Wired uvádí, že např. v případě Amazonu vytváří ta část nabídky, která není dostupná v běžných obchodech, až 30% prodeje.

2. Datové řízení aplikací

Aplikace jsou stále více řízeny daty. Pro konkurenční výhodu je potřeba usilovat o vlastní unikátní zdroj dat.

3. Uživatelé přidávají hodnotu


Klíčem k Web 2.0 aplikacím je umožnit uživatelům přidávat svá data k datům aplikace. Aplikace Web 2.0 neomezuje uživatele. Naopak je zapojuje, takže mohou jak explicitně, tak implicitně přidávat další data do aplikací.

4. Síťový efekt

Agregace dat, která uživatelé do aplikací přidávají, je vedlejším efektem jejich práce s aplikací. Množství uživatelů násobí rychlost růstu obsahu aplikací.

5. Ochrana práv

Duševního vlastnictví a jeho ochrana s sebou přináší limity znovupoužití a brání experimentům. Využití současných standardů a licence s minimálními restrikcemi jsou také jednou s klíčových vlastností Web 2.0.

6. Věčná beta verze

Jestliže jsou zařízení stále připojena k internetu, aplikace už nejsou hotovými softwarovými díly, ale stále se zlepšujícími službami. Web 2.0 využívá množství uživatelů pro stálé testování nových vlastností aplikací.

7. Spolupráce, nikoliv kontrola

Web 2.0 aplikace jsou postaveny jako kooperující datové služby. Poskytují proto uživatelské rozhraní svých služeb a využívají služeb jiných.

8. Software nad úrovní jediného zařízení

Osobní počítač už dávno není jediným přístupovým zařízením k internetu a aplikace, které jsou použitelné jen na jediném zařízení jsou k ničemu. Web 2.0 aplikace musí spolupracovat s osobními i kapesními počítači, servery, mobilními telefony a dalšími zařízeními.

Bezpečnost

Na konferenci The New New Internet, konané na podzim roku 2007 za podpory předních světových společností jako Google, Microsoft, Cisco a dalších byl jeden z hlavních bodů programu i rizika Web 2.0 aplikací. Zkušenosti expertů jasně říkají, že Web 2.0 aplikace jsou vážnou hrozbou. A zůstanou tak dlouho, dokud jejich uživatelé a provozovatelé nezačnou vyžadovat stejný stupeň zabezpečení, jako je tomu u klasických webových aplikací.

Web 2.0 aplikace jsou typicky postiženy nedostatky nových technologií. Aplikace Web 2.0 jsou vyvíjeny rychle s hlavním důrazem na jejich spuštění, bez velkého přemýšlení nad možnými bezpečnostními nedostatky. A jsou tak rizikové pro bezpečnost už od samého počátku.

„Dnešní Web 2.0 aplikace jsou, podle expertů, ve stejném stavu, jako byly předchozí Web 1.0 aplikace v době, kdy na webu začínaly. Snaha dodat co nejdříve použitelné aplikace a doslova je narvat funkčností vedly k situaci, ze které se (například) Microsoft vzpamatovává dodnes - psaní nezabezpečených aplikací, absence důkladné analýzy toho, co všechno s jejich pomocí lze napáchat.“ [5]

Co je používané, láká útočníky

Aplikace Web 2.0 jsou dnes hlavně trendem. Některé společnosti, např. Google, je velmi prosazují, byť zatím nejsou ve větším měřítku rozšířené a snad by se dalo i říct, že zatím nemají žádný zvláštní ekonomický význam, neboť se investice do nich nikdy nemohou vrátit. Například, když Microsoft koupil 1,6 % podíl ve Facebooku, vycházela z této transakce cena Facebooku na 15 miliard dolarů. Co je ale důvodem těchto cen? Především obliba. Služby jako MySpace, Del.icio.us nebo Flickr jsou velmi oblíbené s obrovskými počty uživatelů.

A cokoli je hodně používané, láká útočníky. Aplikace Web 2.0 jsou v tomto pohledu ohroženy bezpečnostními riziky úplně stejně jako freemaily, ICQ nebo Windows XP. Jednoduše proto, že dokázaly nashromáždit dost potenciálních obětí. Stejné je to ale i s mnoha dalšími nastupujícími technologiemi, ať už jde o VoIP nebo Windows Vista. Přičemž technologie jako taková zde nehraje zásadní roli. Právě sociální sítě přinášejí další a další rizika. Můžeme skutečně důvěřovat vlastním uživatelům? Víme skutečně, že uživatel X.Y je skutečně X.Y a jaké cíle a motivy vlastně má? Například v okamžiku, kdy vám nabídne program, video či nějaký widget či doplněk.

Riziko pro data

A nemusí se jednat jen o uživatele. Stačí si například připomenout nedávný problém, kdy z MySpace unikly fotografie z privátních částí profilů uživatelů a byly dostupné jako 16 GB balík volně ke stažení z Internetu. Obdobně je na tom i vystavování osobního profilu na různých social network webech. Uživatelé dávají o sobě vědět mnohem více, něž si uvědomují. K tomu lze už jen připomenout nedávný skandál u České policie, kdy elitní detektivové z ÚOOZ měli (téměř) volně dostupné profily na službě Seznam Spolužáci, včetně vlastních fotografií a fotografií svých rodin.

Sdílení kódů a aplikací

Sdílení kódů je mnohem starší než Web 2.0. Příkladem může být vložení inzertního systému, předpovědi počasí nebo kurzovního lístku. Princip Web 2.0 v plné kráse. Problémem ale je, že nemusí být zcela jasné, odkud se daný kód vzal a kdo je zodpovědný za jeho obsah.

Aplikace využívající převzatý kód může mít bezpečnostní díru, která se však neprojeví, pokud komunikujeme s ověřeným serverem. Pro útočníka je zde však možnost připravit vlastní server, poskytovat na něm službu se závadným obsahem a jen čekat, kdo ji implementuje do své aplikace. Z tohoto pohledu jsou nejspíš nejrizikovější ovládací prvky ActiveX. To může vést až získání kontroly nad počítačem uživatele.

Právě prvek ActiveX byl příčinou problémů sociální sítě Facebook. „Chyba byla údajně v ovládacích prvcích ActiveX vyvinutých společností Aurigma, které se na Facebooku i MySpace používají k uploadu obrázků. Postiženi jsou pouze uživatelé prohlížeče Internet Explorer. Dosud nepanuje shoda, zda chyba je už přímo v kódu od Aurigmy, nebo zda vznikla až v důsledku úprav provozovateli sítí MySpace a Facebook.“ [6]

Výsledkem však může být spouštění vzdáleného kódu a infiltrace malwaru na uživatelův počítač. K tomu sice na Facebook ani na MySpace nedošlo, ale kombinace této ActiveX komponenty a podvržené stránky, kde by ji uživatelé mohli využívat by již bezpečnostní problém způsobilo. Poté by podvodník získal kontrolu nad počítačem uživatele.

Technologie používané aplikacemi Web 2.0

Tím se dostáváme do roviny problémů, která se sice netýká dat, kolujících v rámci aplikací Web 2.0, ale jde v ní o vlastní technologické řešení. Především AJAX, rozsáhlé použití Javascriptu a další technologie představují speciální riziko navíc.

AJAX (Asynchronous JavaScript and XML)

Tradiční model Internetu

Když uživatel klikne na odkaz, webový prohlížeč si vyžádá příslušnou stránku (serveru je odeslán HTTP příkaz GET) nebo když odešle formulář (serveru je odeslán HTTP příkaz POST). Server následně zpracuje požadavek a předá prohlížeči zpět výsledek. Tímto synchronním způsobem, tzv. „click-and-wait“ komunikační metodou jsou vyměňovány informace pomocí požadavků a odpovědí na celé webové stránky. Po dobu čekání na vyřízení požadavku, ztrácí uživatel kontrolu nad aplikací a nemůže s ní pracovat. Právě tato dočasná ztráta interakce byla dlouho diskutovaným problémem a nedostatkem webových aplikací oproti aplikacím desktopovým. Pokud trvá vyřízení požadavku příliš dlouho, uživatel ztrácí zájem a může stránku i opustit.

Response-Request Model

Internetový model s pomocí technologie AJAX

V tomto modelu si klient také vyžádá celou stránku. Jakmile je však stránka načtena do uživatelova prohlížeče, stará se o komunikaci mezi uživatelem a serverem engine AJAX na asynchronní bázi. To snižuje čekací dobu klienta, jelikož se serverem jsou vyměňovány jen částečné aktualizace uživatelského rozhraní.

AJAX Technology Model

Díky použití objektu XmlHttpRequest, jenž využívá Javascript na straně klienta, webový server nepozná rozdíl mezi požadavkem browseru a požadavkem od AJAXu. Výhodou je sice automatické získávání jakéhokoliv obsahu z webového serveru, ať už XML, HTML, prostého textu, obrázků, Flash animací či jiného mediálního obsahu, nevýhoda však spočívá v tom, že uživatel přímo nevidí, co si prohlížeč se serverem vyměňuje a zda si tento obsah vyměňuje se správným serverem. Javascript může číst odpovědi serveru, může posílat další odvozené požadavky. To je jistě výhodné pro interaktivní uživatelské rozhraní, ale na druhou stranu se zde otevírá široké pole působnosti pro potencionální útoky.

A nejedná se o nijak nové metody útoku. Dobře známý Cross Site Scripting je zde plně využitelný. Lze ho využít pro ukradení hodnoty Cookie, získání hodnoty Session, vytváření podvržených dotazů na server a následnému získání přístupu k informacím, které jsou jinak utajené.

Nevýhodou AJAXu je právě komunikace se serverem, kterou uživatel nevidí. Za použití podvržených Javascript kódů lze automaticky infikovat webové stránky stále dokola, aniž by si uživatel něčeho všiml, lze posílat vícenásobné nevyžádané požadavky na server pomocí všech http metod, aniž by se musela stránka obnovovat, požadavek lze přesměrovat na jiný server, než se kterým se má komunikovat apod. Útoky tohoto typu se ve své podstatě blíží klasickým virům.

Klasické virové epidemie jsou dnes spíše na ústupu, a ani phishing není moc účinný. I když se vždy najde několik neinformovaných obětí, jako tomu bylo například při nedávném útoku na Českou Spořitelnu.

Aplikace Web 2.0 však představují otevřené dveře. Jednou narušená aplikace rozšiřuje nákazu dál. Díky vzájemnému využívání služeb se narušení virálně šíří. Již zmiňované využívání služeb třetích stran je pak pěknou ukázkou virální působnosti narušené aplikace. Zasažená služba pak nakazí všechny aplikace, které ji využívají.

Praktickým příkladem je nákaza uživatelských profilů MySpace.com z října roku 2005. Útočník využil povolené značky <SCRIPT> v uživatelských profilech a každému, kdo navštívil narušenou stránku byl automaticky přidán do kontaktů uživatel Samy a následně byla v profilu přidána informace „Samy is my hero.“ Zneužití takové bezpečnostní mezery je již nasnadě. Kupříkladu přidávání nevyžádaných informací do miliónů uživatelských profilů lehce ovlivní výsledky dotazů ve vyhledávačích.

Pravdou je, že vývojáři aplikací si většinou mohou za tyto chyby sami. Podle Billy Hoffmana lze jistý vliv přisuzovat i nedokonalé literatuře o vývoji webových aplikací typu „Teach yourself ASP.NET in 24 hours“, které by se podle něj měly jmenovat spíše „Teach yourself enough ASP.NET in 24 hours to create an insecure web application.“

Podle Daniel Estermanna [7] je potřebné hned zpočátku tvorby aplikace určit správný bezpečností přístup. Příkladem negativného přístupu k zabezpečení aplikace jsou podle něj virové a malware skenery a IDS/IPS (v podstatě firewallová řešení). Přirovnává je k bezpečnostním kontrolám na letištích. Žádné nože, nůžky nebo zbraně. V aplikační úrovni pak žádné známé sekvence nebezpečného kódu. Problémem tohoto přístupu je ono slovo „známé“. A co ty neznámé? Zde jsme vždy o krok pozadu oproti útočníkovi, odhalíme jen známé útoky a nikdy se nevyhneme obcházení filtrů.

Jako protiklad a řádné zabezpečení aplikace pak uvádí pozitivní bezpečnostní model, kde je vše zakázáno, pokud to není explicitně povoleno. Aplikace definuje, co je povolené. Vše ostatní je zakázané. Jedině tak se ubráníme i proti neznámým a občasným útokům. Technickým řešení tohoto přístupu jsou white listy, kódování URL, šifrování obsahu formulářů nebo přijmutí jen povolených vstupů z formulářů. Bohužel tento přístup s sebou přináší riziko, že chybějící pravidlo vede k falešnému odmítnutí požadavku.

Taktéž je potřeba se zamyslet nad tím, kolik aplikační logiky hodláme uživateli odkrýt a rozhodně se držet vyzkoušených standardů před vlastní implementací.

Shrnutí

Pravdou zůstává, že podstata všech útoků proti Web 2.0 aplikacím je známá. Ani aplikace, které nevykazují vlastnosti Web 2.0 jich nebyly ušetřeny. Nevýhoda sdílení informací a velkého množství uživatelů však tyto rizika zvyšuje a pokud k tomu přičteme honbu za funkcionalitou aplikací Web 2.0, vychází nám solidní bezpečnostní problém.

Na rozdíl od dřívějších webových aplikací, kde hrozba útoku byla na straně serveru, přináší Web 2.0 aplikace riziko i na straně klienta. A stejně jako se mnoho společností honilo za internetovým businessem před splasknutím „dot com“ bubliny koncem minulého století, snaží se opět vyždímat co nejvíce z trendu Web 2.0 a AJAX, aniž by dostatečně hleděli na možné hrozby. V podstatě se historie opakuje. Zapojení velkého množství uživatelů do Web 2.0 aplikací a zejména sociálních sítí, jsou velkou motivací pro krádeže identit, získávání jejich osobních údajů a mnoha dalších informací.

Mějme na paměti, že „75% útoků se odehrává na aplikační úrovni.“[8]

Zdroje

1. Mayfield, Ross, ross.typepad.com

2. Battelle, John, http://en.wikipedia.org/wiki/John_Battelle

3. O'Reilly, Tim, 30.9.2005. What Is Web 2.0, http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.html?page=1

4. Anderson, Chris, A methodology for estimating Amazon's Long Tail sales

5. Houser, Pavel, Bezpečnostní rizika aplikací Web 2.0: zmatek nad zmatek, 8. 2.2008, http://www.lupa.cz/clanky/bezpecnostni-rizika-aplikaci-web-2-0-zmatek/

6. Houser, Pavel, Nahrávání obrázků na Facebook nebo MySpace není bez rizika, 05.02.2008, http://www.securityworld.cz/sew.nsf/id/Facebook-MySpace-ActiveX

7. Estermann, Daniel, Web Application Security 2.0 How to face current web security problems

8. Gartner, Inc. 2009

9. Zbiejczuk, Adam, web 2.0, 2007, http://zbiejczuk.com/web20/01-uvod.html

10. Dočekal, Daniel, Bezpečnostní experti varují před Web 2.0 aplikacemi, 6.11.2007, http://www.pooh.cz/a.asp?a=2014406

11. Hoffman, Billy, Ajax (in)security, www.blackhat.com/presentations/bh-usa-06/BH-US-06-Hoffman.pdf

© FISCHER SOFTWARE, s.r.o.