16. ledna 2008

Bezpečnostní problémy webových aplikací

Již před pár lety naše firma vytvořila aplikaci pro administraci LDAP adresáře jedné nejmenované pojišťovny. Nyní si pojišťovna nechala udělat bezpečnostní audit - nejen na naší aplikaci, ale obecně na celé své řešení spojené s adresářovými službami.
Některé připomínky mě více či méně překvapily, posuďte sami (jen pro přesnost musím uvést, že s většinou uvedených problémů naše aplikace neměla problémy):

  • problém jménem Cross-site scripting (2) (XSS). Tento způsob podvržení není asi dobré podceňovat, protože možnosti útoků jsou skoro nekonečné. Jako vhodné řešení (poměr námaha vs. úspěšnost) se mi jeví převádět všechny podezřelé položky (takže vlastně všechny) na HTML entity. Zde nestačí pouze kontrolovat resp. převádět položky zadané uživatelem, ale ideálně i položky z LDAPu nebo databáze.

  • CRLF injection, SQL injection

  • správa sessions - po každém přihlášení by se měla zrušit stávající session (která byla vytvořena v moment přístupu k aplikaci) a vytvořit nová session. Po odhlášení vždy session zneplatnit.

  • ošetření chybových stavů - chybová hlášení by neměla být natolik detailní, aby z nich bylo možné vyčíst údaje vhodné pro další typy útoků. Např. neuvádět detailní popis služby, která spadla, neuvádět jména a verze komponent, kde nastal problém apod.

  • slabá hesla - auditor zkoušel namátkou odhadnout hesla uživatelů a zjistil, že 364 uživatelů má heslo "12345678", 12 uživatelů pak "87654321"!