OWASP alebo Open Web Security Project je nezisková charitatívna organizácia zameraná na zlepšovanie bezpečnosti softvéru a webových aplikácií.
Organizácia zverejňuje zoznam hlavných chýb zabezpečenia webu na základe údajov od rôznych bezpečnostných organizácií.
Zraniteľnosti zabezpečenia webu sú uprednostňované v závislosti od využiteľnosti, zistiteľnosti a dopadu na softvér.
- Exploitability -
Čo je potrebné na zneužitie bezpečnostnej chyby? Najvyššia využiteľnosť, keď útok vyžaduje iba webový prehliadač, a najmenšia je pokročilé programovanie a nástroje.
- Zistiteľnosť -
Aké ľahké je odhaliť hrozbu? Najvyššia je informácia zobrazená na URL, formulári alebo chybovej správe a najnižšia je zdrojový kód.
- Náraz alebo poškodenie -
Aké veľké škody sa narobia, ak dôjde k odhaleniu alebo napadnutiu bezpečnostnej chyby? Najvyššia je úplná porucha systému a najnižšia úplne nič.
Hlavným cieľom OWASP Top 10 je vzdelávať vývojárov, dizajnérov, manažérov, architektov a organizácie o najdôležitejších bezpečnostných chybách.
Top 10 bezpečnostných chýb podľa OWASP Top 10 sú:
- SQL Injection
- Cross-Site Scripting
- Zlomená autentifikácia a správa relácie
- Nezabezpečené priame odkazy na objekty
- Falšovanie požiadaviek medzi stránkami
- Nesprávna konfigurácia zabezpečenia
- Nezabezpečené kryptografické úložisko
- Zlyhanie v obmedzení prístupu na URL
- Nedostatočná ochrana transportnej vrstvy
- Neoverené presmerovania a preposielania
SQL Injection
Popis
Injection je chyba zabezpečenia, ktorá umožňuje útočníkovi meniť koncové príkazy SQL manipuláciou s údajmi poskytnutými používateľom.
Vstrekovanie nastane, keď je vstup používateľa odoslaný tlmočníkovi ako súčasť príkazu alebo dotazu, a podvedie tlmočníka, aby vykonal neúmyselné príkazy, a umožní prístup k neoprávneným údajom.
Príkaz SQL, ktorý pri spustení webovou aplikáciou môže tiež odhaliť databázu typu back-end.
Dôsledok
- Útočník môže vložiť škodlivý obsah do zraniteľných polí.
- Citlivé údaje, ako sú používateľské mená, heslá atď., Je možné načítať z databázy.
- Dáta databázy je možné upravovať (Vložiť / Aktualizovať / Odstrániť).
- V databáze je možné vykonávať administratívne operácie
Zraniteľné objekty
- Vstupné polia
- Adresy URL interagujúce s databázou.
Príklady:
- Vloženie SQL na prihlasovaciu stránku
Prihlásenie do aplikácie bez platných poverení.
Platné meno používateľa je k dispozícii a heslo nie je k dispozícii.
Testovacia adresa URL: http://demo.testfire.net/default.aspx
Užívateľské meno: sjones
Heslo: 1 = 1 'alebo heslo 123
Bol vytvorený dotaz SQL a odoslaný tlmočníkovi, ako je uvedené nižšie
SELECT * FROM Users WHERE User_Name = sjones AND Password = 1 = 1 'alebo pass123;
Odporúčania
- Biely zoznam vstupných polí
- Nezobrazujte podrobné chybové správy užitočné pre útočníka.
Cross-Site Scripting
Popis
Cross Site Scripting je tiež krátko známe ako XSS.
Zraniteľnosti XSS sa zameriavajú na skripty vložené do stránky, ktoré sa vykonávajú na strane klienta, tj v prehliadači používateľa, a nie na strane servera. Tieto chyby môžu nastať, keď aplikácia vezme nedôveryhodné údaje a odošle ich do webového prehľadávača bez náležitého overenia.
Útočníci môžu použiť XSS na vykonávanie škodlivých skriptov pre používateľov, v tomto prípade prehliadačov obetí. Pretože prehliadač nevie, či je skript dôveryhodný alebo nie, skript sa vykoná a útočník môže uniesť súbory cookie relácie, znefunkčniť webové stránky alebo presmerovať používateľa na nežiaduce a škodlivé webové stránky.
XSS je útok, ktorý útočníkovi umožňuje vykonávať skripty v prehliadači obete.
Implikácia:
- Vďaka využitiu tejto bezpečnostnej chyby môže útočník vložiť do aplikácie skripty, ukradnúť súbory cookie relácie, znefunkčniť webové stránky a spustiť malware na počítačoch obete.
Zraniteľné objekty
- Vstupné polia
- URL
Príklady
1. http://www.vulnerablesite.com/home?" < script > výstraha("xss") script >
Skript uvedený vyššie, keď je spustený v prehliadači, zobrazí sa okno so správou, ak je web zraniteľný voči XSS.
Vážnejší útok je možné vykonať, ak chce útočník zobraziť alebo uložiť súbor cookie relácie.
2. http://demo.testfire.net/search.aspx?txtSearch width = 500 height 500>
Po spustení vyššie uvedeného skriptu načíta prehliadač neviditeľný rámec smerujúci na stránku http://google.com .
Útok môže byť vážny spustením škodlivého skriptu v prehliadači.
Odporúčania
- Vstupné polia Bieleho zoznamu
- Kódovanie vstupného výstupu
Zlomená autentifikácia a správa relácie
Popis
Webové stránky zvyčajne vytvárajú súbory cookie relácie a ID relácií pre každú platnú reláciu a tieto súbory cookie obsahujú citlivé údaje, ako sú používateľské meno, heslo atď. Po ukončení relácie odhlásením alebo náhlym zatvorením prehliadača by tieto súbory cookie mali byť zneplatnené, tj pre každú reláciu. mal by tam byť nový cookie.
Ak súbory cookie nebudú zneplatnené, v systéme budú existovať citlivé údaje. Napríklad používateľ, ktorý používa verejný počítač (Cyber Cafe), súbory cookie zraniteľného webu sa nachádzajú v systéme a sú vystavené útočníkovi. Útočník po istej dobe použije ten istý verejný počítač, citlivé údaje sú ohrozené.
Rovnakým spôsobom používateľ, ktorý používa verejný počítač, namiesto odhlásenia náhle zatvorí prehľadávač. Útočník používa rovnaký systém, pri prehliadaní rovnakého zraniteľného webu sa otvorí predchádzajúca relácia obete. Útočník môže robiť čokoľvek, čo chce, od krádeže informácií o profile, informácií o kreditnej karte atď.
Mali by ste skontrolovať, či je k dispozícii sila autentifikácie a správy relácie. Kľúče, tokeny relácie, súbory cookie by mali byť implementované správne bez toho, aby boli ohrozené heslá.
Zraniteľné objekty
- ID relácie vystavené na adrese URL môžu viesť k útoku na fixáciu relácie.
- ID relácie rovnaké pred aj po odhlásení a prihlásení.
- Časové limity relácií nie sú implementované správne.
- Aplikácia prideľuje rovnaké ID relácie pre každú novú reláciu.
- Overené časti aplikácie sú chránené pomocou protokolu SSL a heslá sa ukladajú v hašovanom alebo šifrovanom formáte.
- Reláciu môže znova použiť nízko privilegovaný užívateľ.
Dôsledok
- Útočník, ktorý využije túto chybu zabezpečenia, môže prepadnúť reláciu, získať neoprávnený prístup do systému, ktorý umožňuje zverejnenie a úpravu neoprávnených informácií.
- Relácie môžu byť vysoko zdvihnuté pomocou ukradnutých súborov cookie alebo relácií pomocou XSS.
Príklady
- Aplikácia na rezerváciu leteckých spoločností podporuje prepisovanie adries URL a vkladanie ID relácií do adresy URL:
http://Examples.com/sale/saleitems;jsessionid=2P0OC2oJM0DPXSNQPLME34SERTBG/dest=Maldives (Predaj leteniek na Maldivy)
Autentizovaný užívateľ stránky chce informovať svojich priateľov o predaji a pošle e-mail ďalej. Priatelia dostanú ID relácie a môžu byť použité na neoprávnené úpravy alebo zneužitie uložených údajov o kreditnej karte.
- Aplikácia je zraniteľná voči XSS, vďaka ktorej má útočník prístup k ID relácie a môže byť použitý na prepadnutie relácie.
- Časové limity aplikácií nie sú správne nastavené. Používateľ použije verejný počítač a namiesto odhlásenia zavrie prehliadač a odíde. Útočník použije rovnaký prehliadač o nejaký čas neskôr a relácia je overená.
Odporúčania
- Všetky požiadavky na autentifikáciu a správu relácie by mali byť definované podľa štandardu OWASP Application Security Verification Standard.
- Nikdy nevystavujte žiadne poverenia v adresách URL alebo denníkoch.
- Je tiež potrebné vyvinúť veľké úsilie, aby sa zabránilo chybám XSS, ktoré možno použiť na odcudzenie ID relácie.
Nezabezpečené priame odkazy na objekty
Popis
Nastáva, keď vývojár vystaví odkaz na interný implementačný objekt, napríklad na súbor, adresár alebo kľúč databázy, ako v adrese URL, alebo ako parameter FORM. Útočník môže tieto informácie použiť na prístup k iným objektom a môže vytvoriť budúci útok na prístup k neoprávneným údajom.
Dôsledok
- Pomocou tejto chyby zabezpečenia môže útočník získať prístup k neoprávneným interným objektom, môže upravovať údaje alebo ohroziť aplikáciu.
Zraniteľné objekty
- V URL.
Príklady:
Zmena „userid“ na nasledujúcej adrese URL môže spôsobiť, že útočník bude môcť zobraziť informácie iného používateľa.
http://www.vulnerablesite.com/userid=123 Upravené na http://www.vulnerablesite.com/userid=124
Útočník môže zobraziť ďalšie informácie zmenou hodnoty ID používateľa.
Odporúčania:
- Implementovať kontroly kontroly prístupu.
- Nevystavujte odkazy na objekty v adresách URL.
- Overte autorizáciu pre všetky referenčné objekty.
Falšovanie požiadaviek medzi stránkami
Popis
Cross Site Request Forgery je sfalšovaná žiadosť pochádzajúca z cross site.
Útok CSRF je útok, ku ktorému dôjde, keď škodlivá webová stránka, e-mail alebo program spôsobia, že prehľadávač používateľa vykoná nežiaducu akciu na dôveryhodnom webe, pre ktorý je používateľ momentálne overený.
Útok CSRF prinúti prihlásený prehliadač obete, aby poslal zraniteľnej webovej aplikácii sfalšovanú požiadavku HTTP vrátane súboru cookie relácie obete a akýchkoľvek ďalších automaticky zahrnutých informácií o overení.
Útočník pošle odkaz obeti, keď používateľ klikne na adresu URL, keď sa prihlási na pôvodnom webe, dáta mu budú z webu ukradnuté.
Dôsledok
- Použitie tejto chyby zabezpečenia ako útočníka môže zmeniť informácie o profile používateľa, zmeniť stav, vytvoriť nového používateľa v mene správcu atď.
Zraniteľné objekty
- Stránka profilu používateľa
- Formuláre používateľských účtov
- Stránka obchodných transakcií
Príklady
Obeť je prihlásená na webovú stránku banky pomocou platných prihlasovacích údajov. Dostáva poštu od útočníka s textom „Kliknite prosím, aby ste prispeli $ 1“.
Keď naň obeť klikne, vytvorí sa platná žiadosť o darovanie $ 1 na konkrétny účet.
http://www.vulnerablebank.com/transfer.do?account=cause&amount=1
Útočník túto požiadavku zachytí a vytvorí nižšiu požiadavku a vloží do tlačidla s textom „Podporujem príčinu“.
http://www.vulnerablebank.com/transfer.do?account=Attacker&amount=1000
Pretože je relácia autentizovaná a požiadavka prichádza cez web banky, server by previedol útočníkovi 1 000 dolárov.
Odporúčanie
- Pri vykonávaní citlivých akcií nariadte prítomnosť používateľa.
- Implementujte mechanizmy ako CAPTCHA, opätovné overenie totožnosti a tokeny jedinečných požiadaviek.
Nesprávna konfigurácia zabezpečenia
Popis
Konfigurácia zabezpečenia musí byť definovaná a nasadená pre aplikáciu, rámce, aplikačný server, webový server, databázový server a platformu. Ak sú tieto správne nakonfigurované, útočník môže mať neoprávnený prístup k citlivým údajom alebo funkciám.
Niekedy takéto chyby vedú k úplnému kompromisu systému. Dobrá bezpečnosť je tiež udržiavaná v dobrom stave.
Dôsledok
- Útočník, ktorý využije túto chybu zabezpečenia, môže vymenovať základné informácie o technológii a verzii servera aplikácie, informácie o databáze a získať informácie o aplikácii na pripojenie ďalších útokov.
Zraniteľné predmety
- URL
- Polia formulára
- Vstupné polia
Príklady
- Správcovská konzola aplikačného servera sa automaticky nainštaluje a neodstráni. Predvolené účty sa nezmenia. Útočník sa môže prihlásiť pomocou predvolených hesiel a môže získať neoprávnený prístup.
- Zoznam adresárov nie je na vašom serveri zakázaný. Útočník zistí a môže jednoducho vypísať zoznamy adresárov, aby našiel akýkoľvek súbor.
Odporúčania
- Silná aplikačná architektúra, ktorá poskytuje dobré oddelenie a zabezpečenie medzi komponentmi.
- Zmeňte predvolené používateľské mená a heslá.
- Zakážte zoznamy adresárov a implementujte kontroly riadenia prístupu.
Nezabezpečené kryptografické úložisko
Popis
Nezabezpečené kryptografické úložisko je bežná chyba zabezpečenia, ktorá existuje v prípade, že citlivé údaje nie sú bezpečne uložené.
Poverenie používateľa, profilové informácie, údaje o zdravotnom stave, informácie o kreditnej karte atď. Spadajú pod citlivé údaje na webe.
Tieto údaje budú uložené v databáze aplikácie. Ak budú tieto dáta uložené nesprávne a nepoužijú sa šifrovanie ani hašovanie *, budú zraniteľné voči útočníkom.
(* Hašovanie je transformácia znakov reťazca na kratšie reťazce pevnej dĺžky alebo kľúča. Na dešifrovanie reťazca by mal byť k dispozícii algoritmus použitý na vytvorenie kľúča)
Dôsledok
- Pomocou tejto chyby zabezpečenia môže útočník ukradnúť, upraviť takto slabo chránené údaje tak, aby došlo ku krádeži identity, podvodu s kreditnou kartou alebo k iným trestným činom.
Zraniteľné predmety
- Databáza aplikácií.
Príklady
V jednej z bankových aplikácií používa databáza hesiel nesolené hashy * na ukladanie hesiel všetkých používateľov. Chyba vloženia SQL umožňuje útočníkovi získať súbor s heslom. Všetky nesolené haše je možné brutálne vynútiť behom chvíle, zatiaľ čo solené heslá by trvali tisíce rokov.
(* Neslané soli - soľ je náhodný údaj pripojený k pôvodným údajom. Soľ je pripojená k heslu pred hašovaním)
Odporúčania
- Zabezpečte vhodné silné štandardné algoritmy. Nevytvárajte vlastné kryptografické algoritmy. Používajte iba schválené verejné algoritmy, ako sú AES, kryptografia verejného kľúča RSA a SHA-256 atď.
- Zaistite, aby boli zálohy mimo pracoviska šifrované, ale kľúče sú spravované a zálohované osobitne.
Zlyhanie v obmedzení prístupu na URL
Popis
Webové aplikácie pred vykreslením chránených odkazov a tlačidiel kontrolujú prístupové práva k URL. Aplikácie musia vykonávať podobné kontroly prístupu pri každom prístupe na tieto stránky.
Vo väčšine aplikácií sa privilegované stránky, umiestnenia a prostriedky nezobrazujú privilegovaným používateľom.
Inteligentným odhadom môže útočník získať prístup na stránky privilegovaných osôb. Útočník môže získať prístup k citlivým stránkam, vyvolať funkcie a zobraziť dôverné informácie.
Dôsledok
- Využitie tejto chyby zabezpečenia môže získať prístup k neoprávneným adresám URL bez prihlásenia do aplikácie a zneužiť túto chybu zabezpečenia. Útočník môže získať prístup k citlivým stránkam, vyvolať funkcie a zobraziť dôverné informácie.
Zraniteľné objekty:
- URL
Príklady
- Útočník si všimol, že adresa URL označuje rolu ako „/ user / getaccounts“. Upraví sa ako „/ admin / getaccounts“.
- Útočník môže k adrese URL pridať rolu.
http://www.vulnerablsite.com je možné upraviť ako http://www.vulnerablesite.com/admin
Odporúčania
- Implementujte silné kontroly kontroly prístupu.
- Pravidlá autentifikácie a autorizácie by mali byť založené na rolách.
- Obmedzte prístup na nechcené adresy URL.
Nedostatočná ochrana transportnej vrstvy
Popis
Zaoberá sa výmenou informácií medzi používateľom (klientom) a serverom (aplikáciou). Aplikácie často prenášajú citlivé informácie, ako sú podrobnosti autentifikácie, informácie o kreditných kartách a tokeny relácií cez sieť.
Použitím slabých algoritmov alebo použitím neplatných alebo neplatných certifikátov alebo nepoužívaním protokolu SSL môžete umožniť vystavenie komunikácie nedôveryhodným používateľom, čo môže ohroziť webovú aplikáciu alebo ukradnúť citlivé informácie.
Dôsledok
- Útočník, ktorý využije túto chybu zabezpečenia webu, môže pričuchnúť k oprávneným údajom používateľa a získať prístup k aplikácii.
- Môže ukradnúť informácie o kreditnej karte.
Zraniteľné predmety
- Dáta odoslané cez sieť.
Odporúčania
- Povoľte zabezpečený protokol HTTP a vynútite prenos poverení iba prostredníctvom protokolu HTTPS.
- Zaistite, aby bol váš certifikát platný a jeho platnosť nevypršala.
Príklady:
1. Aplikácia, ktorá nepoužíva SSL, bude útočník jednoducho monitorovať sieťový prenos a pozorovať overený súbor cookie relácie obete. Útočník môže tento súbor cookie ukradnúť a vykonať útok typu Man-in-the-Middle.
Neoverené presmerovania a preposielania
Popis
Webová aplikácia používa niekoľko metód na presmerovanie a preposlanie používateľov na iné stránky na určený účel.
Ak pri presmerovaní na iné stránky nedôjde k správnemu overeniu, môžu to útočníci využiť a môžu obete presmerovať na phishingové alebo malvérové stránky alebo použiť prístup ďalej na neautorizované stránky.
Dôsledok
- Útočník môže odoslať používateľovi adresu URL, ktorá obsahuje originálnu adresu URL s kódovanou škodlivou adresou URL. Používateľ iba tak, že uvidí skutočnú časť adresy URL odoslanej útočníkom, môže ju prehliadať a môže sa stať obeťou.
Príklady
1. http://www.vulnerablesite.com/login.aspx?redirectURL=ownsite.com
Upravené na
http://www.vulnerablesite.com/login.aspx?redirectURL=evilsite.com
Odporúčania
- Jednoducho sa vyhnite použitiu presmerovaní a postúpení v aplikácii. Ak sa použije, nezahŕňajte do výpočtu cieľa použitie používateľských parametrov.
- Ak sa cieľovým parametrom nedá vyhnúť, uistite sa, že zadaná hodnota je platná a autorizovaná pre používateľa.
Do tohto článku prispeli Prasanthi Eati