Parooli lähtestamine on sisselogimine, mis jätab parooli vahele. Seetõttu tuleb iga sisselogimisvormi kontroll lähtestamisel kas samaväärselt üle võtta või teadlikult asendada. Kui lähtestusrada on nõrgem kui sisselogimisrada, kasutab ründaja just seda. OWASP Forgot Password Cheat Sheet nimetab seda funktsiooni „haavatavuste tavaliseks allikaks“, kusjuures kõige tuntum näide on kasutajate enumeratsioon.
Miks lähtestusvoog on nõrk lüli
Edukas sisselogimine loob sessiooni. OWASP-i sessioonihalduse juhendi kohaselt on autenditud sessiooni ID ajutiselt samaväärne tugevaima autentimismeetodiga, mida rakendus kasutas. Lähtestus, mis lõpeb sessiooniga või ründaja valitud parooliga, annab ründajale sama.
NIST SP 800-63B-4 nõuab AAL2 tasemel kahe eraldiseisva autentimisfaktori omamise ja kontrolli tõendamist. Kui sisselogimisel küsitakse kahte faktorit, on lähtestus, mis vajab vaid ühte e-postiga saadetud tokenit, ühefaktoriline möödapääs. Meie kasutatud väljavõte taastamist ei käsitle, kuid täisdokumendis on autentimisvahendite sündmuste haldamise (authenticator event management) peatükk.
Meie enda reegel: kui kontol on seadistatud teine faktor, küsige enne uue parooli vastuvõtmist seda faktorit või salvestatud taastekoodi ning ärge kunagi lubage lähtestusel faktorit eemaldada ega asendada.
Päringu samm
Vastake ühtmoodi sõltumata sellest, kas konto on olemas. Piisab sõnumist „Kui see aadress on registreeritud, oleme saatnud e-kirja“.
Ka ajastus võib infot lekitada. Töötleja, mis tundmatute aadresside puhul lõpetab varakult ja tuntud aadresside puhul saadab kirja, paljastab erinevuse sõltumata sõnumi sisust. Käivitage iga päringu puhul sama loogika või andke kirja saatmine asünkroonsele tööle.
Lisage konto-põhine rate limiting, CAPTCHA või sarnane kontroll. Ilma selleta võib ründaja saata ühele kontole tuhandeid lähtestuspäringuid tunnis ning uputada ohvri postkasti või SMS-id üle. Ärge lukustage ega muutke kontot lähtestuspäringu peale.
Token
OWASP esitab tokenile või koodile neli nõuet:
- see on genereeritud krüptograafiliselt turvalise juhuslikkuse algoritmiga;
- see on piisavalt pikk, et pealetung toorjõuga ei õnnestuks;
- see on turvaliselt salvestatud;
- see on ühekordne ja aegub sobiva aja pärast.
Juhend ei anna pikkuse ega eluea kohta numbreid. Lähim number allikates on sessioonijuhendis: CSPRNG vähemalt 128 bitise entroopiaga, eelistatult 160 bitti või rohkem. See on kirjutatud sessioonitokenite kohta, meie rakendame seda ka lähtestustokenitele. Eluea puhul valige lühike väärtus, kirjutage see üles ja testige selle vastu.
Fraasi „turvaliselt salvestatud“ saab tõlgendada rangelt. Kui teie ohumudelis on tokenite hoidla ainult lugemisõigusega avaldumine, kirjeldab sessioonijuhend identifikaatori ja saladuse verifikaatori eraldamist. Server hoiab avalikku otsinguidentifikaatorit ja verifikaatori täielikku SHA-256 räsi ning võrdleb räsisid konstantse ajaga. Ainult identifikaator ei tohi kunagi lugeda tõendiks. Selle rakendamine lähtestustokenitele on meie soovitus.
Edastage token kõrvalkanali kaudu, e-posti või SMS-iga, mitte kunagi brauseri vastuses. Token URL-is on lihtsaim lahendus, kuid sessioonijuhend hoiatab, et URL-is olevad ID-d võivad lekkida linkide ja logide, brauseri ajaloo ja järjehoidjate, Referer-päise ning otsingumootorite kaudu. Kolmanda osapoole sisu ja väljaminevate linkide hoidmine lähtestuslehelt sulgeb ainult Referer-lekke. Ülejäänu puhul vahetage token esimesel päringul välja lühiealise serveripoolse oleku vastu, suunake puhta URL-i peale ja hoidke see esimene päringustring väljas juurdepääsulogidest.
Lähtestuse samm
- Laske kasutajal uus parool kaks korda sisestada ja kontrollige seda sama poliitika vastu mis registreerimisel.
- Räsige see sama koodiraja kaudu nagu kõik teised paroolid.
- Tühistage kõik konto kehtivad lähtestustokenid, kui parool või e-posti aadress muutub. Muidu võib postkasti jäänud vanem kiri konto uuesti lähtestada.
- Saatke kasutajale e-kiri parooli muutmise kohta. Ärge kunagi pange parooli sõnumisse.
- Suunake kasutaja tavalisele sisselogimisele, selle asemel et ta automaatselt sisse logida. Automaatne sisselogimine lisab sessioonihalduse koodi ja sellega uute haavatavuste võimaluse.
- Lõpetage olemasolevad sessioonid või pakkuge vähemalt seda võimalust.
Kahtlustatava kompromiteerimise järel jääb ründaja aktiivne sessioon parooli muutmisest hoolimata alles, kui te seda ei lõpeta. Meie teeksime sessioonide tühistamise vaikimisi toiminguks.
MFA ja kompromiteeritud kontod
Ainuüksi parooli lähtestamine ei pruugi kontrolli tagasi anda. Ründajal võib endiselt olla aktiivne sessioon või ta võis muuta taasteandmeid või MFA meetodeid.
OWASP soovitab mitte tugineda ainult hiljuti lisatud või muudetud taasteandmetele. Kasutage varem kehtestatud sõltumatut tõendusmaterjali, näiteks salvestatud taastekoode, kombinatsioonis, mis vastab konto usaldusväärsuse nõuetele. MFA lähtestamisel on OWASP-i Multifactor Authentication Cheat Sheet'is oma jaotis, seega hoidke see protsess parooli vooust lahus.
OWASP Authentication Cheat Sheet käsitleb ka registreeritud e-posti aadressi muutmist. See on oluline, sest muudetud aadress suunab ümber kõik tulevased lähtestused.
Voo testimine
| Test | Edukas tulemus |
|---|---|
| Olemasolev ja olematu aadress | Sama sõnum ja olekukood |
| Skriptitud päringute komplekt aadressi kohta | Mediaanvastusajad ühtivad |
| Korduvad päringud ühe konto kohta | Rate limit või CAPTCHA rakendub |
| Lähtestuse küsimine, seejärel sisselogimine | Kontot ei lukustata ega muudeta |
| Token kasutatud kaks korda või pärast aegumist | Katse ebaõnnestub |
| Vana token pärast parooli või e-posti muutmist | Katse ebaõnnestub |
| Lähtestusleht tokeniga URL-is | Ei mingeid kolmanda osapoole päringuid ega väljaminevaid linke |
| Lähtestus avatud vana sessiooniga | Vana sessioon lõpetatakse |
| Seadistatud teine faktor, ainult e-postiga saadetud token (meie reegel) | Lähtestus keeldutakse |
| Lõplik vastus ja kiri | Automaatset sisselogimist ei ole, kirjas ei ole parooli |
Ajastuse rea puhul võrrelge mediaane ja hajuvust paljude käivituste lõikes. See kuulub igasse autentimisvoo penetratsioonitesti.
Kust alustada
- Küsige lähtestust olemasoleva ja olematu konto jaoks mõlema puhul mitu korda. Võrrelge sõnumit, olekukoodi ja vastuse aega.
- Lugege tokeni generaatorit. Veenduge, et see kasutab CSPRNG-i, muutke tokenid ühekordseks ja määrake eluiga, mille saate nimetada minutites.
- Lisage päringu lõpp-punktile konto-põhine rate limiting või CAPTCHA ning veenduge, et päring ei lukusta ega muuda kontot.
- Laske lähtestusel lõpetada muud sessioonid, tühistada kehtivad tokenid ja saata teavituskiri ilma paroolita. Kontrollige, et lähtestusleht ei lae midagi kolmandatelt osapooltelt.
- Võtke testkonto, millel on MFA seadistatud, ja proovige seda lähtestada ainult e-postiga saadetud tokeniga. Veenduge, et lähtestusest keeldutakse.
- Kontrollige, kes saab teist faktorit lähtestada või eemaldada, millist tõendusmaterjali selleks vaja on ja kas taastamine käsitleb hiljuti muudetud andmeid ebausaldusväärsena.
