co je OWASP?
Open Web Application Security Project neboli OWASP je mezinárodní nezisková organizace zabývající se bezpečností webových aplikací. Jedním z hlavních principů OWASP je, že všechny jejich materiály jsou volně dostupné a snadno dostupné na svých webových stránkách, což umožňuje každému zlepšit jejich vlastní zabezpečení webových aplikací. Materiály, které nabízejí, zahrnují dokumentaci, nástroje, videa a fóra. Snad jejich nejznámějším projektem je OWASP Top 10.
co je OWASP Top 10?,
OWASP Top 10 je pravidelně aktualizovaná zpráva popisující bezpečnostní obavy z zabezpečení webových aplikací se zaměřením na 10 nejkritičtějších rizik. Zprávu sestavuje tým bezpečnostních expertů z celého světa. OWASP označuje Top 10 jako „informační dokument“ a doporučuje, aby všechny společnosti začlenily zprávu do svých procesů, aby minimalizovaly a/nebo zmírňovaly bezpečnostní rizika.
níže jsou uvedena bezpečnostní rizika uvedená ve zprávě OWASP Top 10 2017:
1., Injekce
Injection útoky stane, když nedůvěryhodné data jsou odeslána do kódu tlumočníka přes vstupní formulář, nebo nějaký jiný předkládání údajů do webové aplikace. Například útočník mohl zadat kód databáze SQL do formuláře, který očekává uživatelské jméno v prostém textu. Pokud tento vstup formuláře není řádně zabezpečen, mělo by to za následek spuštění tohoto kódu SQL. Toto je známé jako útok SQL injection.
injekčním útokům lze zabránit ověřením a/nebo dezinfekcí údajů předložených uživatelem., (Validace znamená odmítnutí podezřelých dat, zatímco dezinfekce se týká vyčištění podezřelých částí dat.) Kromě toho může správce databáze nastavit ovládací prvky, aby se minimalizovalo množství informací, které může injekční útok odhalit.
2. Nefunkční autentizace
zranitelnosti v systémech ověřování (přihlášení) mohou útočníkům poskytnout přístup k uživatelským účtům a dokonce i možnost kompromitovat celý systém pomocí účtu správce., Například, útočník může vzít seznam obsahující tisíce známé jméno/heslo kombinace, získané při narušení dat, a pomocí skriptu vyzkoušet všechny ty kombinace na přihlašovacího systému, aby zjistili, zda existují nějaké, které fungují.
některé strategie pro zmírnění zranitelností ověřování vyžadují dvoufaktorovou autentizaci (2FA) a také omezení nebo zpoždění opakovaných pokusů o přihlášení pomocí omezení rychlosti.
3., Citlivá Data Vystavení
Pokud webové aplikace, nemusíš chránit citlivá data jako jsou finanční informace a hesla, útočníci mohou získat přístup k těmto údajům a sellor využít pro hanebné účely. Jednou z populárních metod krádeže citlivých informací je použití útoku na cestě.
riziko expozice dat lze minimalizovat šifrováním všech citlivých dat a zakázáním ukládání do mezipaměti* citlivých informací. Vývojáři webových aplikací by navíc měli dbát na to, aby zbytečně neukládali žádná citlivá data.,
*ukládání do mezipaměti je praxe dočasného ukládání dat pro opětovné použití. Například webové prohlížeče často ukládají webové stránky do mezipaměti, takže pokud je uživatel přehodnotí v pevném časovém rozpětí, prohlížeč nemusí načíst stránky z webu.
4. XML externí entity (XEE)
jedná se o útok proti webové aplikaci, která analyzuje vstup XML*. Tento vstup může odkazovat na externí entitu a pokoušet se zneužít zranitelnost v analyzátoru. „Externí entita“ v této souvislosti odkazuje na paměťovou jednotku, jako je pevný disk., Analyzátor XML může být podveden při odesílání dat neoprávněnému externímu subjektu, který může předat citlivá data přímo útočníkovi.
nejlepší způsoby, jak zabránit XEE útoky jsou webové aplikace přijmout méně komplexní typ data, například JSON**, nebo alespoň patch XML parsery a zakázat použití externí entity XML aplikace.
* XML nebo Extensible Markup Language je značkovací jazyk, který má být čitelný i strojově čitelný. Vzhledem ke své složitosti a zranitelnosti zabezpečení je nyní vyřazen z používání v mnoha webových aplikacích.,
**JavaScript Object Notation (JSON) je typ jednoduché, lidsky čitelné notace často používané pro přenos dat přes internet. Ačkoli to bylo původně vytvořeno pro JavaScript, JSON je jazyk-agnostik a může být interpretován mnoha různými programovacími jazyky.
5. Broken Access Control
Access control označuje systém, který řídí přístup k informacím nebo funkcím. Rozbité ovládací prvky přístupu umožňují útočníkům obejít autorizaci a provádět úkoly, jako by to byli privilegovaní uživatelé, jako jsou administrátoři., Například webová aplikace by mohla uživateli umožnit změnit, který účet jsou přihlášeni, jednoduše změnou části adresy url, bez jakéhokoli jiného ověření.
ovládací prvky přístupu mohou být zajištěny tím, že zajistí, aby webová aplikace používala autorizační tokeny* a nastavila na ně přísné kontroly.
*mnoho služeb vydává autorizační tokeny při přihlášení uživatelů. Každý privilegovaný požadavek, který uživatel učiní, bude vyžadovat, aby byl přítomen autorizační token. Jedná se o bezpečný způsob, jak zajistit, aby uživatel byl tím, kým říká, že je, aniž by musel neustále zadávat své přihlašovací údaje.
6., Bezpečnostní Konfigurací
Bezpečnostní konfigurací je nejčastější chyba na seznamu, a je často výsledkem použití výchozí konfigurace nebo zobrazení nadměrně mnohomluvný chyby. Například, aplikace by mohla ukázat uživateli příliš popisné chyby, které mohou odhalit zranitelnosti v aplikaci. To lze zmírnit odstraněním všech nepoužívaných funkcí v kódu a zajištěním obecnějších chybových zpráv.
7., Cross-Site skriptování
cross-site skriptování zranitelnosti dojít, když webové aplikace umožňují uživatelům přidat vlastní kód do cesty url nebo na webové stránky, které budou vidět ostatní uživatelé. Tuto chybu zabezpečení lze využít ke spuštění škodlivého kódu JavaScript v prohlížeči oběti. Například útočník by mohl poslat e-mail oběti, která se zdá být z důvěryhodné banky, s odkazem na webové stránky této banky. Tento odkaz by mohl mít na konci adresy url nějaký škodlivý kód JavaScript., Pokud web banky není řádně chráněn před skriptováním mezi stránkami, bude tento škodlivý kód spuštěn ve webovém prohlížeči oběti, když kliknou na odkaz.
strategie zmírňování pro skriptování mezi weby zahrnují únik nedůvěryhodných požadavků HTTP a ověřování a/nebo dezinfekci obsahu generovaného uživatelem. Použití moderních rámců pro vývoj webových aplikací, jako jsou ReactJS a Ruby on Rails, také poskytuje vestavěnou ochranu skriptování napříč stránkami.
8. Nejistá Rekonstrukci
Tato hrozba se zaměřuje na mnoho webových aplikací, které často serializaci a deserializaci dat., Serializace znamená vzít objekty z aplikace kódu a jejich konverzi do formátu, který může být použit pro jiný účel, jako je ukládání dat na disk nebo streamování. Deserializace je právě naopak: převod serializovaných dat zpět na objekty, které aplikace může použít. Serializace je něco jako balení nábytku do krabice před přesunout, a deserializace je jako vybalování krabic a montáže nábytku po stěhování. Nejistý dezerializační útok je jako nechat stěhováky manipulovat s obsahem krabic dříve, než jsou rozbaleny.,
nezabezpečené zneužití deserializace je výsledkem deserializace dat z nedůvěryhodných zdrojů a může mít vážné důsledky, jako jsou útoky DDoS a útoky na vzdálené spuštění kódu. Zatímco kroky mohou být přijata, aby se pokusila chytit útočníky, jako je sledování rekonstrukci a prováděcí typ kontroly, jediný jistý způsob, jak chránit proti nejistá rekonstrukci útoků je zakázat deserializace dat z nedůvěryhodných zdrojů.
9., Použití komponent se známými zranitelnostmi
mnoho moderních webových vývojářů používá ve svých webových aplikacích komponenty, jako jsou knihovny a rámce. Tyto komponenty jsou kousky software, které pomáhají vývojářům vyhnout se nadbytečné práci a poskytne potřebné funkce; běžný příklad patří front-end rámce, jako Reagovat a menší knihovny, které používá k přidání ikony sdílet nebo a/b testování. Někteří útočníci hledají zranitelnosti v těchto komponentách, které pak mohou použít k organizování útoků., Některé z více populární komponenty jsou použity na stovky tisíc webových stránek; útočník nalezení bezpečnostní díry v jedné z těchto složek by odejít stovky tisíc stránek zranitelné využití.
Součást vývojáři často nabízejí bezpečnostní záplaty a aktualizace ucpat známých zranitelností, ale vývojář webových aplikací ne vždy mají opravené nebo nejnovější verze komponenty běží na jejich aplikace., Aby se minimalizovalo riziko běhu komponenty s známých zranitelností, vývojáři by měli odstranit nepoužívané komponenty z jejich projektů, stejně jako zajištění, že jsou přijímání komponenty z důvěryhodného zdroje, a zajistit, že jsou aktuální.
10. Nedostatečné protokolování a monitorování
mnoho webových aplikací neprovádí dostatečné kroky k detekci narušení dat. Průměrná doba objevu porušení je asi 200 dní poté, co se to stalo. To dává útočníkům spoustu času na poškození, než dojde k nějaké reakci., OWASP doporučuje, aby weboví vývojáři by měli zavést logování a monitorování, jakož i plány reakce na incidenty, aby bylo zajištěno, že jsou informováni o útoky na jejich aplikace.
pro podrobnější a podrobnější pohled na OWASP Top 10, viz oficiální zpráva .