Yra tokia tinklalapių saugumo spraga – CSRF, galinti pakankamai dažnai pasitaikyti (iš esmės – kiekviena forma ir dar daugiau), bet nepakankamai dažnai minima šalia, tarkime, SQL injekcijų ar XSS. Galbūt todėl jau senokai pastebėjau, kad net pakankamai populiarūs lietuviški tinklalapiai, kaip didžiausios el. parduotuvės, šią spragą turi. Bet tik vieną gražų šeštadienio rytą sugalvojau – reikia pagaliau normaliai pratestuoti populiariausias parduotuves ir pranešti apie jų CSRF.
Ką išnaudojus šią spragą galima nuveikti el. parduotuvių atveju? Iš esmės – beveik viską, ką gali pats vartotojas. Aš testavau prekės įdėjimą vartotojui į krepšelį, tačiau tam tikrais atvejais galima padaryti daug daugiau: išsiųsti užsakymus, redaguoti asmeninę informaciją, pakeisti prekių pristatymo adresą, ir t.t. Jei turėtume parduotuvių, kuriose būtų mokama kokiu nors automatiniu būdu (pvz. pririšta banko kortele ar su iš anksto papildytu balansu), nebeprašant duomenų per kiekvieną užsakymą, kenkėjiškas tinklalapis galėtų padaryti ir užsakymą vartotojo vardu.
Tad padaręs penkis puslapius, išnaudojančius spragas penkiose populiariose Lietuvos el. parduotuvėse (trys iš jų patenka į Alexa 100,000), išsiunčiau laiškus joms su nuorodomis ir problemos aprašymu.
Praėjo nei daug, nei mažai – penkios savaitės. Pats metas būtų apžvelgti, kaip sureagavo el. parduotuvės. Dalis prašė neminėti jų tikrųjų pavadinimų – kadangi rašau vien su gerais ketinimais, išpildysiu šį jų norą: kad ir kaip kvailai skambėtų, visos parduotuvės bus minimos kodiniais pavadinimais...
Parduotuvė A atrašė sparčiausiai, vos prasidėjus darbo dienai. Žadėjo informuoti, kai spraga bus ištaisyta – neinformavo, tačiau ištaisė.
Parduotuvė B sureagavo keliomis valandomis vėliau. Buvo be galo dėkinga už pranešimą, netgi pažadėjo nuolaidą kitam pirkiniui, bet... neištaisė iki šiol, CSRF vis dar egzistuoja.
Parduotuvė C atrašė antrą darbo dieną. Spragą pašalino (neužfiksavau, per kiek tiksliai laiko – tada žadėjo, jog per dvi savaites, nes „[spraga] nėra labai kritinė“).
Parduotuvė D vienintelė turėjo webmaster'io (ne info) el. paštą savo svetainėje. Nieko neatsakė – nemandagūs, bet spragą ištaisė – svetaine rūpinasi.
Parduotuvė E – apie šią rašyti net šiek tiek liūdna... Naudoja karkasą, kuris pats saugo nuo CSRF, bet... naudoja neteisingai. Negavau jokio atsakymo, spraga egzistuoja toliau.
Tad tam ir klaustukas įrašo pavadinime – man nebuvo sunku pranešti, tačiau panašu, kad reputacija ir klientų gerovė rūpi ne visiems. Nors turėti saugumo atžvilgiu tokią kultūrą, kaip užsienyje, labai norėtųsi...
O pabaigai – OWASP Top 10. Būkit saugūs.