Webalkalmazás-biztonság Hitelesítés, jelszókezelés, hozzáféréskontroll
Azonosítás - áttekintés Azonosítás (Authentication): a felhasználó kilétének megállapítása egy vagy több tényező alapján Egyfaktoros azonosítás: egy tényezőt vizsgálunk csak az alany azonosságának megállapítására. Egyszerű, olcsó, viszont nem nyújt túl magas fokú biztonságot (statikus jelszó). Többfaktoros azonosítás (MFA/2FA): több tényező megléte szükséges az identitás ellenőrzéséhez. Megvalósítástól függően igen magas biztonsági szintet is nyújthat. Faktorok: valami, amit tudok (something I know) valami, ami van (something I own) valami, ami vagyok / rám jellemző (something I am)
Azonosítás - áttekintés Első szintű azonosítás: belépés kliens tanúsítány ellenőrzése (smart card, USB token) statikus jelszó statikus + dinamikus jelszó (OTP, SMS OTP, PIN/TAN, grid card, Challenge/Response) SMS OTP
Azonosítás - áttekintés Másodszintű azonosítás: kritikus műveletek elvégzése (pl. jelszóváltás, tranzakciók indítása) előtt statikus belépési jelszó ismételt bekérése OTP, SMS OTP Challenge/Response trazanckióaláírás
Jelszómenedzsment Jelszópolitika (password policy): erős statikus jelszavak kikényszerítése Hossz Komplexitás Lejárat kezelése Jelszó-újrafelhasználás megakadályozása Hozzáférés zárolása (account lockout)
Jelszómenedzsment Miért fontos a jelszópolitika? Tény #1: A statikus jelszó a legolcsóbb azonosítási eljárás Tény #2: A felhasználók (nagy általánosságban) lusták, nem eléggé tájékozottak, kényelmesek, szeretik az egyszerű megoldásokat Tény: #3: Az emberek sok rendszert használnak, sok jelszót kell megjegyezniük
Jelszómenedzsment Jelszópolitikák használatával kikényszeríthetjük, hogy a felhasználók kellően hosszú és komplex jelszavakat használjanak (password length + complexity checks) kellő gyakorisággal váltsanak jelszót (password aging) ne egy-két jelszót használjanak felváltva (password history) néhány sikertelen próbálkozás után legyen kitiltva az adott felhasználó
Jelszómenedzsment Mi számít biztonságos jelszópolitikának? A jelszavak legyenek hosszúak de mennyire? A jelszavak legyenek bonyolultak de mennyire? A jelszavakat gyakran cseréljük de mennyire?
Jelszómenedzsment Mi számít biztonságos jelszópolitikának? A rendszer sok jelszót jegyezzen meg, amik nem használhatók újra de mennyit? A rendszer hamar zárolja a sikertelen próbálkozók accountját de mennyire hamar?
Jelszómenedzsment Ha a jelszavak túl rövidek vagy nem eléggé komplexek, akkor könnyen kitalálhatók / brute force-olhatók Ha viszont túl hosszúak vagy túl komplexek, akkor a felhasználók elfelejtik őket és elégedetlenek lesznek Ha a jelszavakat ritkán cseréljük, akkor nő az illetéktelen hozzáférés veszélye Ha viszont túl gyakran, a felhasználók elégedetlenek lesznek
Jelszómenedzsment Ha túl rövid a password history, a felhasználók néhány jelszót fognak váltogatni Ha viszont túl hosszú, a felhasználók elégedetlenek lesznek Ha a rendszer sok sikertelen próbálkozást engedélyez, akkor a támadók esélyei nőnek Ha viszont túl keveset, akkor a felhasználók könnyen kizárják magukat és elégedetlenek lesznek
Jelszómenedzsment Jelszavak tárolása csak titkosítva! milyen titkosítással? kétirányú: ki és hogyan kezeli a kulcsot? egyirányú: hash milyen hash? MD5, SHA-1? elvileg megfelelhetnek, de jobb kerülni őket SHA-2 csak hash? salt is kell!
Jelszómenedzsment Jó, jó, de milyen jelszót válasszak?
Jelszómenedzsment Biztonság Kényelem
Jelszómenedzsment Biztonság Költségek
Fejlett autentikációs módszerek A statikus jelszón alapuló azonosítás egyértelműen idejétmúlt Milyen egyéb megoldások vannak? PIN/TAN Grid card One-Time Password: egyszerhasználatos jelszó event based time based Challenge/Response Kliens tanúsítvány (SSL/TLS) Biometrikus megoldások
Fejlett autentikációs módszerek PIN/TAN low-tech One-Time Password megvalósítás elavult!
Fejlett autentikációs módszerek Grid card low-tech One-Time Password megvalósítás elavult!
Fejlett autentikációs módszerek One-Time Password event based time based SMS OTP token által generált, CAP/DPA, soft tokenek (pl. IND Mobile Token)
Fejlett autentikációs módszerek Challenge/Response: az autentikáló fél feltesz egy kérdést (challenge), amire megfelelő választ (response) kell adnia az alanynak Kifinomultabb megoldások kripto algoritmusokat használnak. Legegyszerűbb megvalósítás: név / jelszó alapú autentikáció Kliens tanúsítvány szoftveres konténer smart card USB token Biometrikus megoldások ujjlenyomat hangazonosítás mozgás alapú azonosítás
Fejlett autentikációs módszerek Jellemzően használt MFA/2FA eljárások: korábbiak kombinációja statikus jelszó + (SMS) OTP statikus jelszó + grid card v. PIN/TAN statikus jelszó + challenge/response statikus jelszó + biometria PIN kóddal védett token + OTP kliens tanúsítvány + PIN kód
Fejlett autentikációs módszerek Hagyományos tokenek működése kulcs moving factor titkosító kódformázó 19447812 adatok Titkosító: többnyire valamilyen szimmetrikus algoritmus Vasco: 3DES, AES,... IND Mobile Token: HMAC-SHA-512 A szerver oldalon ua. algoritmus ua. bemenetekkel ua. kódot állítja elő
Azonosítás webalkalmazások esetén Web/appszerver által HTTP Basic HTTP Digest kliens tanúsítvány alapú (kölcsönös azonosítás) Webalkalmazás által űrlap alapú (form-based)
Azonosítás webalkalmazások esetén HTTP Basic egyszerű, olcsó minden browser támogatja nem titkosított (Base64!) nem szabható testre a legtöbb böngészőben nincs lehetőség kijelentkezésre
Azonosítás webalkalmazások esetén HTTP Digest egyszerű, olcsó a legtöbb browser támogatja titkosított (hash) anti-replay védelem (nonce, cnonce) nem szabható testre a legtöbb böngészőben nincs lehetőség kijelentkezésre
Azonosítás webalkalmazások esetén kliens tanúsítvány alapú (kölcsönös azonosítás) titkosított csatorna (HTTPS) nem minden esetben! biztonságos kulcstárolót igényel többé-kevésbé transzparens költséges
Azonosítás webalkalmazások esetén űrlap alapú (form-based) egyedi megvalósítást igényel (ad-hoc) nem szabványosított teljesen testreszabható titkosított csatornát igényel (esetleg kliens oldali titkosítást...)
Azonosítás ökölszabályok Alapvető ökölszabályok: Az alkalmazott autentikációs mechanizmust a védett rendszer (adatok) értékének függvényében kell megválasztani A hitelesítésnek mindig meg kell előznie a hozzáférés-ellenőrzést A hitelesítést szerver oldalon kell elvégezni
Azonosítás - bevált gyakorlatok Központosított azonosítási séma alkalmazása Positive Security Model! Az ellenőrzéseket mindig szerver oldalon kell elvégezni Titkosított jelszótárolás Megfelelő hibakezelés Beszédes hibaüzenetek mellőzése Browser autocompletion tiltása Biztonságos password reset funkció Többszintű hitelesítés alkalmazása kritikus műveletek esetén MFA/2FA alkalmazása kritikus rendszerek esetén Részletes naplózás (audit logging)
Azonosítás - sérülékenységek, gyengeségek Inkonzisztens autentikációs séma Központosítás hiánya PSM hiánya Konfigurációs problémák Kliens oldali adattárolás, automatikus bejelentkezés Információszivárgás Beszédes hibaüzenetek Autocompletion Hibás jelszóhelyreállítási funkció Hiányzó vagy nem megfelelő jelszópolitika Hibás jelszómenedzsment Titkosítatlan adatátvitel Lehallgatás
Azonosítás - támadások Authentication Bypass: védett erőforrások elérése a hitelesítés megkerülésével Forced Browsing, Forced Submit: védett erőforrások közvetlen hivatkozása Verb Tampering: konfigurációs problémák HEAD vs. GET random metódusok GET és POST helytelen használata Egyéb technológiai hibák kihasználásával History back-back SQL Injection stb.
Azonosítás - támadások Denial of Service accountok tömeges kizárása Jelszavak ellopása nem/helytelenül titkosított jelszavak Jelszavak megfejtése nyers erővel (próbálgatás) Gyenge jelszavak Salt nélkül hashelt jelszavak (hozzáférést feltétlez)
Hozzáférés-ellenőrzés - áttekintés Hozzáférés-ellenőrzés (Authorization, Access Control): egy védett erőforrás elérhetőségének szabályozása Szubjektum (subject): műveletvégzésre képes entitás Objektum (object): egy védett entitás, amelynek a hozzáférhetőségét szabályozni kell Többféle modell Képességek (capabilities) Hozzáférési listák (Access Control Lists) Discretionary Access Control (DAC) Mandatory Access Control (MAC) Role-based Access Control (RBAC)
Hozzáférés-ellenőrzés - áttekintés A különféle frameworkok általában többféle lehetőséget biztosítanak A hozzáférés-ellenőrzést mindig az üzleti logikával összhangban kell kialakítani!
Hozzáférés-ellenőrzés - ökölszabályok Hozzáférés-ellenőrzés csak autentikáció után Összhang a megjelenítési réteg és a hozzáférési szabályok között Mindig a szerver oldalon ellenőrzünk!
Hozzáférés-ellenőrzés bevált gyakorlatok Központosított access control logika Megfelelő, biztonságos hibakezelés Minden kérés esetén el kell végezni a jogosultságok ellenőrzését is Közvetlen objektumhivatkozások megfelelő kezelése csak azonosítás után még jobb, ha nincs közvetlen hivatkozás Nem szabad döntéseket hozni tisztán kliens oldali információkra hagyatkozva Audit logging!
Hozzáférés-ellenőrzés sérülékenységek, gyengeségek Ami nem látszik, az nem elérhető Összhang hiánya a megjelenítési logika és a hozzáférési logika között Hiányzó szabályok Közvetlen objektumhivatkozások + hiányos jogosultsági ellenőrzések Központi logika hiánya, bedrótozott szabályok Döntéshozatal kliens oldali információk alapján Referer header cookie-ban tárolt adatok Túlzottan tág jogosultságok, least privilege elv mellőzése
Hozzáférés-ellenőrzés támadások Horizontális privilégiumszint-emelés Vertikális privilégiumszint-emelés