Odhlásil vás v pátek ráno Facebook a museli jste se znovu přihlásit? Možná jste byli jednou z obětí nejnovějšího bezpečnostního průšvihu, který sociální síť řeší. Webová aplikace Facebooku obsahovala chybu ve funkci "View As", která umožňuje zobrazit obsah tak, jak ho vidí jiný uživatel (např. pro otestování viditelnosti postu). Vinou této chyby mohl útočník získat autentizační token, který se používá pro přístup k aplikaci a různým API. S tímto tokenem pak mohl učinit cokoliv, co může učinit standardní uživatel.

Podle vydané zprávy bylo chybou postiženo zhruba 50 milionů uživatelů. K nim společnost Facebook přidala dalších 40 milionů, kteří podle všeho postiženi nebyli, ale v uplynulém roce postiženou funkcionalitu použili. Těchto devadesát milionů uživatelů pak v průběhu pátku Facebook odhlásil a museli se znovu přihlásit. Tím byly zneplatněny autentizační tokeny a útočníci odříznuti od systému.

V současné době není znám způsob, jak zjistit, že jste se stali obětí tohoto útoku. Samotné odhlášení ještě neznamená, že byl váš účet postižen. Může to jen znamenat, že jste v uplynulém roce využili funkcionalitu, která obsahovala chybu. Není ohroženo ani vaše heslo, a tedy není nutné jej měnit. Zatím není známo, zda útočníci reálně zneužili účty, jejichž autentizační tokeny získali. Z pohledu koncového uživatele tedy není nic, co byste mohli v této chvíli udělat, kromě dodržování standardních bezpečnostních pravidel.

Co je autentizační token?

Pro laika může být poněkud matoucí pojem "autentizační token" (authentication token, případně access token – přístupový token). Jedná se o metodu, která je běžně používána pro přihlašování v internetových aplikacích. Funguje zhruba následovně:

Tento článek patří do placené sekce.

Pro vás jej odemknul někdo, kdo má předplatné.


Pokud budete předplatitelem, budete moci stejným způsobem odemykat placené články i pro své přátele.
A získáte i řadu dalších výhod.

Předplaťte si HN na webu za 99 Kč měsíčně a první měsíc můžete vyzkoušet zdarma!

Pokud se k nějaké aplikaci přihlásíte (zadání uživatelského jména a hesla, případně pomocí dvoufaktorové autentizace atd.), potřebuje si tato aplikace zapamatovat, s kým má tu čest, že jste se přihlásili právě vy. Proto vygeneruje speciální kód, podle kterého vás "pozná". Pro generování tohoto kódu lze použít řadu postupů. Někdy se jedná o náhodné číslo (náhodná data), které slouží jenom jako klíč, podle kterého se příslušná identita vyhledá v databázi. Někdy tento kód přímo obsahuje informace o vaší identitě (uživatelské jméno nebo ID, dobu platnosti) a to celé je zašifrováno a digitálně podepsáno.

Všechny další požadavky pak neobsahují vaše jméno a heslo, ale právě tento kód – kterému se říká autentizační nebo přístupový token. Je zpravidla předáván pomocí cookie, ale může cestovat i jinými způsoby, třeba jako parametr ve webové adrese nebo jako data odeslaného formuláře.

Tento přístupový token je to, podle čeho vás webová služba jako uživatele rozpozná a ověří, že jste to skutečně vy. Kdokoliv, kdo získá tento token, se za vás může vydávat. Proto je přístupový token nutné chránit – což je v zásadě práce té služby, která jej vydala. Facebook v tomto případě obsahoval chybu, která umožnila vydat přístupový token jinému uživateli – útočníkovi. Ten se tedy mohl vydávat za oběť, aniž by musel znát její heslo, neboť znalostí tokenu obešel nutnost přihlášení.

Chyby tohoto typu jsou obecně poměrně časté. Organizace OWASP (Open Web Application Security Project) pravidelně vydává "OWASP Top 10", tedy seznam deseti nejčastěji se vyskytujících chyb ve webových aplikacích. "Broken Authentication", což zahrnuje i chybu, která postihla Facebook, je podle jeho poslední verze z loňského roku druhý nejrozšířenější bezpečnostní problém. Setkávám se s ním velmi často i v praxi bezpečnostního konzultanta, tento problém trápí mnoho webů. Není ale časté, že by tím či oním způsobem zasáhl desítky milionů uživatelů. Nicméně, běžné bezpečnostní problémy se nevyhýbají ani těm velkým.

Související