Před dvěma dny jsem popisoval, jak hloupě je zabezpečeno přihlašování do SERVIS 24, internetového bankovnictví České spořitelny. Nyní následuje praktická ukázka, jak může kdokoliv komukoliv na tři kliknutí zablokovat účet.

Právní dodatek: tohle není návod. Tohle je analýza bezpečnostní vady webové aplikace, na kterou byla banka upozorněna již 3. ledna 2005. Blokováním cizích účtů můžete poškodit její klienty.

Vysvětlující dodatek: problematické není samotné zablokování účtu, ale skutečnost, že postižený musí za jeho odblokování zaplatit.

Před chvílí jsme s bratrem matematicky ověřili, že klientská čísla jsou dělitelná 11. A jak že jsme to spočítali? Ne, nebojte se, nebudu zabíhat do detailů, ani vás obtěžovat složitými vzorci. Místo teoretizování pojďme rovnou k praktické ukázce.

Co útočník k zablokování cizího účtu potřebuje? Stačí znát libovolné klientské číslo (ty mají tvar 7xxxxxxxxx a jsou dělitelné jedenácti – nejspíš ale existuje více řad klientských čísel).

Podle částečně oveřené hypotézy se zdá, že klientská čísla tvoří řadu, takže přičtením nebo odečtením násobku jedenácti od známého klientského čísla vypočteme další platné klientské číslo, patřící neznámé oběti.

Útočník tedy:

  1. Otevře stránky SERVIS 24.
  2. Zadá tyto údaje:
    • Klientské číslo: ÚTOČNÍKOVO ČÍSLO + n * 11
    • Heslo: fuckservis24 (nebo jakékoliv jiné)

      kde n je libovolné celé číslo.

  3. Formulář odešle útočník třikrát po sobě (pochopitelně vždy se stejným klientským číslem).
  4. Pokud se zobrazí hláška „Autentizační proces nebyl úspěšný. Přístup k aplikaci SERVIS 24 Internetbanking byl zablokován“, bylo vypočtené klientské číslo skutečně platné a účet byl nešťastníkovi zablokován. V opačném případě útočník zvolí jinou hodnotu n a pokračuje bodem 2.

Celý postup může zautomatizovat tímto jednoduchým skriptem:

set_time_limit(0); // neverending story
$ch = curl_init();
...
...

…ne, to už si napíše útočník jistě sám. Každou hodinu může zablokovat tisíce cizích účtů. Nebo třeba jen ten váš.

Tož tak, no.


Související: