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