Od doby, kdy jsem přeložil (s podporou kolegů ze společnosti CZ.NIC) OWASP 10 Ten 2013 uplynulo mnoho let. Dílo je stále aktuální – a to v mnoha detailech. Bez ohledu na to, že OWASP vydal dvě novější verze – 2017 a 2021.
Překlad si můžete stáhnout z oficiálních stránek OWASP Top 10 2013.
OWASP Top 10 – 2013 je dobrý přehled desíti nejkritičtějších bezpečnostních rizik či zranitelností webových aplikací. A mnoha společnostem i jednotlivým vývojářům pomáhá pochopit okolnosti důležitých zranitelností. Verzemi 2017 a 2021 žádná ze zranitelností uvedených ve verzi 2013 nezmizela. Jsou stále aktuální, byť statisticky nebo metodicky dnes mohou mít více či méně odlišnou povahu.
OWASP je komunita a organizace zabývající se bezpečností webových (a dnes i mobilních) aplikací. Je otevřená všem zájemcům o bezpečnější webové či jiné aplikace, její přínos je velmi edukační, čím zásadně působí na zlepšení kvality zabezpečení webových a mobilních aplikací na celém světě. Produkuje velmi zajímavé projekty (pro testery, vývojáře, manažery…), bezpečnostní nástroje (OWASP ZAP, pravidla pro aplikační firewally…), kontrolní standardy, pořádá zajímavé konference po celém světě – a můžeme říci, že mnohé z toho zadarmo.
Z poměrně skromných začátků malého neformálního týmu talentů našeho oboru, kteří se snažili změnit svět (počítaje v to Marka Curpheyho, Dennise Grovese aj.), OWASP expandoval na rozmanitou, globální, a jednu z nejvlivnější neziskových organizaci v oblasti bezpečnosti aplikací na světě, která má neobyčejný vliv.
Je pravda, že OWASP Top 10 navazuje na OWASP Top 10 2013 a je následován OWASP Top 10 2017 a OWASP Top 10 2021. Avšak verze z roku 2013 na mě působí nejvyzráleji, následující jsou již příliš překombinované („přezrálé“) a zvláště pak 2021 nese známky touhy za každou cenu „něco“ vydat – zřejmě v důsledku potřeby vydat novou verzi k 20. výročí založení OWASP (24. září).
10 slabých míst webových aplikací z OWASP Top 10 2013
A1 – Injektování – Ke zranitelnostem injektováním, např. injektováním SQL, OS a LDAP, dochází, když se jako součást příkazu nebo dotazu odesílají do interpretu nedůvěryhodná data. Útočníkova nepřátelská data mohou lstí přimět
interpret k provedení nezamýšlených příkazů nebo k umožnění přístupu k datům bez řádné autorizace.
A2 – Chybná autentizace a správa relace – Funkce aplikací, které se vztahují k ověřování a správě relace, často nejsou provedeny správně, což útočníkům umožňuje kompromitovat hesla, klíče nebo tokeny relací anebo zneužít jiné slabiny v implementaci k tomu, aby převzali identitu jiných uživatelů.
A3 – Cross-Site Scripting (XSS) – Chyby typu XSS nastávají tehdy, když aplikace přijme nedůvěryhodná data a odešle je webovému prohlížeči bez řádného ověření nebo escapování. XSS útočníkům umožňuje spouštět skripty v prohlížeči oběti, které mohou unést uživatelské relace, přetvořit webové stránky nebo přesměrovat uživatele na nebezpečné stránky.
A4 – Nezabezpečený přímý odkaz na objekt – Přímý odkaz vznikne, když vývojář vystaví odkaz na vnitřní objekt implementace, například soubor, adresář
nebo databázový klíč. Bez kontroly řízení přístupu nebo jiné ochrany mohou útočníci manipulovat s těmito odkazy, a získat tak neoprávněný přístup k datům.
A5 – Nezabezpečená konfigurace – Dobré zabezpečení vyžaduje mít definováno a nasazeno bezpečné nastavení aplikace, frameworků, aplikačního serveru, webového serveru, databázového serveru a platformy. Bezpečnostní nastavení by měla být definována, prováděna a udržována, protože výchozí hodnoty jsou často riskantní. Navíc by měl být software průběžně aktualizován.
A6 – Expozice citlivých dat – Mnoho webových aplikací nechrání náležitě citlivá data, jakými jsou kreditní karty, daňová ID (pozn.: v USA) a autorizační údaje. Tato slabě chráněná data útočníci mohou krást či modifikovat, aby mohli provádět podvody s kreditními kartami, krádeže identity nebo jiné zločiny. Citlivá data si zaslouží zvláštní ochranu, např. šifrování dat v klidu nebo v pohybu, stejně tak i zvláštní bezpečnostní opatření pro data v prohlížeči.
A7 – Chyby v řízení úrovní přístupu – Většina webových aplikací ověří úroveň přístupových oprávnění k funkcím před tím, než je tato funkcionalita viditelná v uživatelském rozhraní. Přesto je zapotřebí, aby se při přístupu ke každé funkci prováděla stejná kontrola přístupu na serveru. Jestliže požadavky nejsou verifikovány, útočníci budou moci vytvořit požadavky na získání přístupu k funkcionalitě bez řádného povolení.
A8 – Cross-Site Request Forgery (CSRF) – Útok typu CSRF donutí prohlížeč přihlášené oběti odeslat zranitelné webové aplikaci podvržený požadavek HTTP, včetně cookie relace oběti a jiných automaticky vkládaných autentizačních informací. To útočníkovi umožňuje donutit prohlížeč oběti generovat požadavky, které zranitelná aplikace považuje za legitimní požadavky oběti.
A9 – Použití známých zranitelných komponent – Komponenty, např. knihovny, frameworky a další softwarové moduly, téměř vždy běží s nejvyššími oprávněními. Jestliže je zranitelná komponenta zneužita, útok může usnadnit závažnou ztrátu dat nebo ovládnutí serveru. Aplikace používající komponenty se známými zranitelnostmi mohou zmařit ochranu aplikací a umožnit řadu útoků a dopadů.
A10 – Neošetřené přesměrování a předávání – Webové aplikace často přesměrovávají a předávají uživatele na jiné webové stránky a používají k určení cílové stránky nedůvěryhodné údaje. Bez řádného ověření mohou útočníci přesměrovat oběti na rhybařící nebo malwarové stránky nebo použít předání k získání přístupu k neoprávněným stránkám.