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

Enduro.js

Dnes si zkusíme otestovat nějaký menší projekt v Javasriptu. Konkrétně malou knihovnu pro CMS nad Node.js, Enduro. Abychom nemuseli mít dilema, zda zakládat tikety pro vývojáře dané aplikace a jednalo se pouze o ukázku, otestujeme nějakou starší verzi. Vybral jsem verzi 1.4.20. Každý si jako vždy můžete tento kód zkusit otestovat vaším nástroje, tato verze je k dispozici zde:

https://github.com/Gottwik/Enduro/archive/1.4.20.zip

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ů:

Reflected XSS

V souboru get_cms.js

Popis chyby:

Aplikace ziskává data z položky req.query.filename. Tato následně neošetřena pluje kódem a je následně použita k sestavení dat zpět uživateli. To může umožnit Cross-Site-Scripting útok.

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.

 

Security Misconfiguration

V souboru server.js

Popis chyby:

Aplikace získává sensitivní, personální data, keyboard cat, a ukládá je nebezpečným způsobem, bez šifrování, do session.

Doporučení:

https://owasp.org/www-project-top-ten/OWASP_Top_Ten_2017/Top_10-2017_A6-Security_Misconfiguration

 

Missing Encryption of Sensitive Data

V souboru trollhunter.js

Popis chyby:

Aplikace ukládá sensitivní personální data nebezpečným způsobem

Doporučení:

https://cwe.mitre.org/data/definitions/311.html

 

Missing HSTS Header

V souboru login_by_password.js

Popis chyby:

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

 

Doporučení:

Nastavte Strict-Transport-Security header

 

Unprotected cookie

V souboru ab_tester.js

Popis chyby:

Webová aplikace vytváří cookie ale nestavuje httpOnly atribut.

 

Doporučení:

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

 

Client Insecure Randomness

V souboru admin_security.js

Popis chyby:

Aplikace používá slabou metodu Math.random() ke generování náhodných čísel.

Doporučení:

Nepoužívejte statistický generátor pseudonáhodných čísel, místo toho použijte kryptorandom generátor.

 

Missing CSP Header

V souboru login_by_password.js

Popis chyby:

Chybějící nastavení CSP pro moderní prohlížeče.

Doporučení:

res.setHeader(

‘Content-Security-Policy’,

About fotodobias