Thursday, April 21, 2016

Liittymänumeron väärentäminen Mobiilimaksu-tapahtumassa


Edellisessä kirjoituksessani (Käyttäjän tunnistaminen Mobiilimaksun avulla) havainnollistin, että Mobiilimaksun toimintatapaa voidaan käyttää helposti käyttäjän tunnistukseen. Mobiilimaksun toimintatapa voi myös antaa mahdollisuuden palvelua käyttävän henkilön liittymänumeron väärentämiseen. Tämän vuoksi esimerkiksi palveluun kirjautumista ei tulisi koskaan tehdä pelkän liittymänumeron perusteella, jos palvelun sisältö voi paljastaa arkaluonteista materiaalia liittymän käyttäjästä tai omistajasta.

Tässä kirjoituksessa tarkastellaan tapausta, jossa liittymänumeron väärentäminen olisi mahdollistanut palvelun käytön ilmaiseksi osoittamalla maksut muiden henkilöiden liittymänumeroille.

Fonectan rekisterinumerohaku (https://www.fonecta.fi/rekisterinumerohaku) on yksi Mobiilimaksua tällä hetkellä hyödyntävistä palveluista. Tehdessäsi haun rekisterinumerolla, tarkastaa Fonectan palvelu käyttäjän ip-osoitteen. Tämä on normaalisti hyödynnetty tapa, jolla tunnistetaan käyttäjän käyttämä operaattori ja onko ip-osoite kelvollinen maksamiseen. Operaattorit eivät käytä täysin samanlaisia tekniikoita Mobiilimaksu-toteutuksissaan, joten myös palveluntarjoajien toteutukset eroavat.

Tutkin Fonectan palvelun toimintaa Soneran ja Saunalahden liittymillä. Mielenkiinnon kohteeksi osui Soneran toteutus. Kuvassa 1 on nähtävissä käyttäjän selaimen ja palvelimen välistä liikennöintiä, kun käyttäjä on syöttänyt haluamansa rekisterinumeron palveluun ja palvelin tekee muun muassa ip-osoitteen tarkistuksen.

Kuva 1. Rekisterinumerohaun liikennöintiä.


Maksamisvaiheessa on tarjolla Mobiilimaksu-vaihtoehto. Tämä tarkoittaa, että operaattori on onnistuneesti saanut syötettyä käyttäjän liittymänumeron HTTP-pakettiin. Kuvan 1 liikennöinnistä nähdäänkin selkeästi, että missä kohti operaattorin tekemä liittymänumeron lisäys tapahtuu. Salattuun pakettiin numeroa ei yksinkertaisesti voisi lisätä.

Liittymänumero siis kulkee normaalisti HTTP-paketin otsakkeessa. Mikä estää sen, että käyttäjä ei väärentäisi liittymänumeroa lisäämällä toisen otsakkeen HTTP-pakettiin? - Ei mikään. Palvelimen ei kuitenkaan tulisi missään nimessä lukea kuin ensimmäinen otsake, jos niitä on useita. Konfiguraatioissa voi olla eroja ja tämä on yksi olennainen asia tarkastaa, jos Mobiilimaksua tarjotaan maksamiseen. Suosituksena on myös sallia otsakkeen luku vain operaattorien mobiiliosoiteavaruuksista.

Edellä mainitun tavan hyödyntäminen ei onnistunut Fonectan rekisterinumerohaussa. Mutta kuinka ihmeessä itse lisätty otsake saadaan ensimmäiseksi? Haluttu lopputulos olisi siis seuraavanlainen:


GET /mobile-resolve/sonera HTTP/1.1
Host:m.fonecta.fi
User-Agent: x
Referer:https://m.fonecta.fi/rekisterinumerohaku
Cookie:
Otsake: [operaattorin lisäämä numero]
Otsake: [itse lisätty numero]


RFC 7239:ssä on määriteltynä X-Forwarded-For-otsake, jonka avulla voidaan kertoa kohdepalvelimelle, että käyttäjä on tullut sivustolle välityspalvelimen tai kuormantasaajan takaa. Otsakkeen arvo ilmaisee käyttäjän alkuperäisen ip-osoitteen. Kohdepalvelin ei välttämättä ota mitään kantaa kyseiseen otsakkeeseen, tosin tässä tapauksessa Fonectan palvelin noteerasi sen.

Otsakkeen avulla oli siis mahdollista määrittää, kenen operaattorin osoiteavaruudesta Fonectan sivustolle saavuttiin. Tarvittavat uudelleenohjaukset tehtiin siten käytetyn operaattorin mukaisesti.

Kuvassa 2 palvelin luo istunnon käyttäjälle. Kyseessä on vastaus pyyntöön, johon operaattori tekee liittymänumeron lisäyksen. Koska on löytynyt keino manipuloida uudelleenohjauksia myös muista kuin tuetuista mobiiliosoiteavaruuksista, voimme hyödyntää kiinteää laajakaistaliittymääni. Tämä tarkoittaa sitä, että liikenne ei kulje tuetun mobiilioperaattorin yhdyskäytävää pitkin ja liittymänumeron lisäys jää tekemättä. Kun teen nyt lisäyksen itse, saadaan vain yksi otsake haluamallani liittymänumerolla HTTP-pakettiin - väärentäminen on onnistunut!


Kuva 2. Istunnon luonti.













Mobiilimaksu on edelleenkin kätevä maksutapa, mutta sen turvallisuus on pitkälti palveluntarjoajasta riippuvainen. Kun palveluntarjoajia tulee lisää, voi ongelmienkin määrä kasvaa. Sekä Sonera että Elisa kommentoivat aikaisemmin, että Mobiilimaksun kehitys on käynnissä ja liittymänumero aiotaan salata jatkossa (lähde). Odotan kyseistä toiminnallisuutta mielenkiinnolla.

Muut palvelut kuten TUPAS-tunnistuspalvelu on erittäin käytetty ja turvallinen tapa käyttäjän tunnistukseen, mutta senkään luotettavuus ei pidä, jos palveluntarjoaja on hutiloinut toteutuksen: “Tupaksen ohitus salasanaa palauttaessa”.

Raportoin ongelman Fonectalle maanantai-iltana 11.1.2016 ja väliaikainen korjaus oli tehty tiistaina 12.1 eväämällä Mobiilimaksun käyttö Soneran liittymillä. Lopullinen korjaus ajettiin tuotantoon 20.1.

Väärinkäyttö oli todennäköisesti mahdollista kaikkien operaattorien liittymänumeroilla, tosin ainoastaan Soneran liittymänumeroa testattiin. Ainoastaan Soneran numeron lisäystapa yhdistettynä palveluntarjoajan sivuston toimintaan mahdollisesti vilpillisen numeron lisäyksen. (Päivitys 7.5.2016 - Muutettu vaikutusaluetta selkeämmäksi)

Laskutus ei ollut mahdollista, jos liittymänumeron käyttäjällä oli riittävä palveluesto liittymällään.

Aiemmat Mobiilimaksu-aiheiset kirjoitukseni:

Identifying mobile network users:

 Helvet** palvelutekstiviestit:

Koko kansan mobiilimaksu:

Käyttäjän tunnistaminen mobiilimaksun avulla:

No comments:

Post a Comment