S dotazi nás neváhejte kontaktovat: (420) 777 849 161 - Email info@vyroba-webu.cz

InsecureWebApp

První aplikace, kterou si zkusíme oskenovat je InsecureWebApp, která, jak již název napovídá, schválně zavádí některé bezpečnostní chyby. Tudíž se na ní dá pěkně pocvičit práce se SAST nástroji. O aplikaci se dočtete zde:

http://insecurewebapp.sourceforge.net/main/index.html

Stáhnout zdrojové kódy si můžete zde:

https://sourceforge.net/projects/insecurewebapp/files/

Prohnal jsem aplikaci SAST nástrojem (jako vždy neuvádím kterým, nechávám na fantazii čtenářů). Níže je přehled nálezů z krátkým popisem jak by mělo/mohlo vypadat vyhodnocení takových nálezů:

Heuristic SQL injection

V souboru productListing

Popis chyby:

Proměnná productSearch není sanitizována a je zobrazena pomocí product.getImageFile()

Doporučení:

Escapovat např. pomocí WebUtils.esc()

 

V souboru sqltest.jsp

Popis chyby:

Proměnná sql je zobrazena bez validace a bez escapingu v sqltest.jsp:34. Ke zpracování lze podvrhnout libovolný SQL dotaz jako parametr.

Doporučení:

Escapovat např. pomocí WebUtils.esc(); pokud možno omezit změny v DB.

 

Cleartext submission of Sensitive Information

V souboru activateAccount

Popis chyby:

Identifikátor účtu accountId je přenášen v nezašifrované podobě. 

Doporučení:

Používat HTTPS, parametry odesílat v POST body, nikoliv jako GET parametr.

Heap Inspection

Popis chyby:

Heslo po použití zůstává v paměti.

Doporučení:

Heslo je nutné ihned po použití smazat.

 

Privacy Violation

V souboru accountDetail.jsp

Popis chyby:

Parametr accountId může být podvržen uživatelem ke zjištění údajů z cizího účtu.

Doporučení:

Parametru accountId dodanému uživatelem nelze důvěřovat, je nutné používat vlastní cookie-session nebo identifikátor dohledat v databázi na základě loginu.

 

Trust Boundary Violation

Popis chyby:

Aplikace importuje veškeré Cookies; cookies poté tečou programem bez validace/sanitace.

Doporučení:

Validovat a sanitizovat veškeré vstupy bez ohledu na zdroj. Validace by měla být založena na white-listingu, akceptovat pouze známé cookies s daným datovým typem. Je třeba kontrolovat: typ, velikost, rozsah, formát, očekávané hodnoty.

 

Frameable Login Page / Missing X-Frame Options

Login.jsp

 

Popis chyby:

Aplikace nepouživá X-FRAME-OPTIONS pro zamezení vložení stránky do cizího obsahu.

 

Doporučení:

X-Frame-Options: SAMEORIGIN nebo X-Frame-Options: ALLOW-FROM https://example.com/”

 

Information Exposure through Error Message

V souboru sqltest.java

Popis chyby:

Aplikace zobrazuje výjimky uživateli; dochází k úniku interních informací prostřednictvím chybových hlášení.

 

Doporučení:

Výjimky se nemají vypisovat do stránky uživateli, ale do provozního logu.

 

Missing Content Security Policy

htmlHeader.jsp

Popis chyby:

V rámci webové aplikace není explicitně definováno Content Security Policy.

Doporučení:

Viz https://www.owasp.org/index.php/Content_Security_Policy

 

Reflected XSS All Clients

Popis chyby:

Proměnná productSearch není sanitizována a je zobrazena jako součást stránky. Může obsahovat JavaScript nebo dříve uložený škodlivý obsah.

Doporučení:

  1. Validovat a sanitizovat veškeré vstupy bez ohledu na zdroj. Validace by měla být založena na white-listingu, akceptovat pouze známé cookies s daným datovým typem. Je třeba kontrolovat: typ, velikost, rozsah, formát, očekávané hodnoty.
    2. Veškerá dynamická data příslušně zaenkódovat, pokud jsou součástí výstupu. Encoding by měl být citlivý na kontext, např. HTML encoding pro HTML data, encoding HTML atributů pro výstup do hodnot atributů a nebo JavaScript pro serverem generovaný kód.
    3. Zvažte užití knihovny ESAPI nebo vestavěné funkce platformy.
    4. V HTTP hlavičce Content-Type explicitně definujte kódovaní znaků pro celou stránku.
    5. V session cookie nastavte příznak httpOnly, abyste zamezili zneužití ukradené cookie.

 

httpOnly cookie

v souboru Login.jsp

 

Popis chyby:

Aplikace vytváří cookies a vrací jej v odpovědi, ale chybí příznak httpOnly.

 

Doporučení:

V session cookie nastavte příznak httpOnly, abyste zamezili zneužití ukradené cookie.

 

Missing HSTS Header

V souboru htmlHeader.jsp

Popis chyby:

Webová aplikace nedefinuje záhlaví HSTS, takže je náchylná k útoku.

 

Doporučení:

Nastavte Strict-Transport-Security header

Unchecked Input for Loop Condition

V souboru sqltest.jsp

Popis chyby:

Metoda request.getParameter v  souboru sqltest.jsp získá vstup uživatele od prvku “” sql “”.
Hodnota tohoto prvku protéká kódem, aniž by byla ověřena, a nakonec se používá ve stavu smyčky. To představuje nekontrolovaný vstup pro podmínku smyčky.

Doporučení:

V ideálním případě nezakládejte smyčku na datech poskytovaných uživatelem. Je-li to nutné, musí být nejprve

ověřen vstup uživatele a jeho rozsah by měl být omezen.

 

About fotodobias