Skip to content

A Veritasium YouTube csatorna a legújabb videójában egy olyan közbeékelődéses támadást (man-in-the-middle attack) mutat be, ami valójában már 2021 óta ismert dolog, és amellyel egy zárolt állapotú iPhone és az adott terminál rávehető arra, hogy akár több ezer dollárral is megrövidítsen valakit, az illető külön engedélyezése nélkül.

Ehhez több dolog is szükséges, amelyek közül a legfontosabb, hogy az Expressz mód esetén is be kell legyen állítva az adott bankkártya, amelynek ráadásul Visa típusúnak kell lennie. Mivel azonban az Expressz mód itthon nem támogatott, ezért annak a valószínűsége gyakorlatilag elhanyagolható, hogy ezzel a módszerrel bárkit is megkárosítsanak Magyarországon. De nézzük, pontosan miről is van szó, illetve hogyan küszöbölhetjük ki.

Miről szól a Veritasium videója?

Röviden összefoglalva MKBHD zárolt telefonját egy Proxmark NFC olvasóra helyezik, ami egy számítógéphez csatlakozik, azon pedig egy script fut, majd egy tényleges bankkártya terminálon megadnak egy 5 dolláros összeget, egy másik készülék hozzáérintenek a fizetéshez, erre MKBHD telefonján felugrik az Expressz mód visszajelzése, és az 5 dollár kifizetésre kerül a terminálon. Ezt követően egy nagyon magas összeget, 10 000 dollárt írnak be, ami esetén a készüléknek mindenképpen kérnie kellene a jóváhagyást, de az a tranzakció is ugyanígy sikeres lesz.

Mi az az Expressz mód?

Ahhoz, hogy megértsük, hogyan működhet ez egyáltalán, elsőként ismernünk kell, mi is az az Expressz mód. Az Apple egészen pontosan ezt írja erről a funkcióról:

Az Expressz módban egyetlen koppintással használhatja a Tárca alkalmazásban mentett kompatibilis kártyákat, jegyeket és kulcsokat.

Az Expressz mód segítségével bizonyos kártyákat, kulcsokat és jegyeket úgy is használhat az Apple Tárca alkalmazásban, hogy nem ébreszti fel vagy oldja fel a készülékét, és nem végez hitelesítést Face ID, Touch ID vagy jelkód segítségével. Bizonyos esetekben még akkor is használhatja a kártyáját, jegyét vagy kulcsát, ha a készülék lemerült.

Ez a speciális mód tehát az egyes tömegközlekedési szolgáltatóknál teszi lehetővé azt, hogy az iPhone-t egy beléptető kapu termináljához érintve az Expressz módhoz beállított bankkártya vagy jegy külön azonosítás (jelkód, Touch ID, Face ID) használata nélkül egyszerűen “lecsippantható” legyen, aminek eredményeként az áthaladás gördülékeny, ezzel felgyorsítva a tranzakciós folyamatot, tehát nem torlódnak fel az utasok a beléptető kapuknál.

Természetesen ez nem működik bármi terminál esetén, hiszen az problémás lenne, kifejezetten az ilyen módot támogató, tömegközlekedési szolgáltatóknál használt terminál szükséges hozzá.

Hogyan működik pontosan egy ilyen támadás?

Ehhez három biztonsági lépést kell átugrani.

Az első lépéshez a készüléket egy olyan NFC olvasóra helyezik, amelyik egy tömegközlekedési terminál azonosítóját sugározva elhiteti az iPhone-nal, hogy egy ilyen terminál közelében van, ez pedig azt eredményezi, hogy készülék külön azonosítás nélkül, lezárt, alvó, illetve egyes esetekben még lemerült állapotában is “lecsippantható”.

Persze ez önmagában még nem elegendő, mert el kell hitetni a készülékkel azt is, hogy az adott terminál offline típusú. Mivel egy normál bankkártya terminál online van, ezért a terminál válaszában meg kell változtatni az ezzel kapcsolatos bitet úgy, hogy az offline terminálként azonosítsa magát (offline data authentication for online transactions, ODA). Ezzel a lépéssel tehát elértük azt, hogy a készülék zárolásának feloldása és külön azonosítás nélkül lecsippanthatunk róla alacsonyabb összegeket, elvégre a tömegközlekedésen nem fogunk jelentősen magas, 10 000 dolláros összeget fizetni.

Mivel az érintéses fizetéseknél adott összeg felett már mindenképpen szükséges az azonosítás is, ezért a második lépésben azt kell elhitetnünk az iPhone-nal, hogy termináltól érkező tranzakció értéke alacsonynak számít. Ennek a megoldása pedig a fentiekhez hasonlóan meglepően egyszerű: a tranzakció adataiban szerepel erre egy újabb bit, ami jelzi, hogy az adott összeg az alacsony vagy pedig a magas kategóriába tartozik-e. Ezt a bitet átbillentve az egyébként magas értékű tranzakciót alacsonyként fogja értelmezni az iPhone, és engedélyezi a terhelést. Hogy miért mindössze egy bit fejezi ezt ki egy tranzakció adataiban, annak az egyszerűség az oka, illetve a bankok így bármikor módosíthatják is ezt a limitet anélkül, hogy újabb kártyát kellene kibocsátaniuk a magasabb érintésmentes limitértékkel. Az iPhone tehát nem az adott összeg számértékét veszi alapul, hanem ezt az alacsony illetve magas “címkét”, hiszen például 10 000 dollár jelentősen többet ér, mint 10 000 forint, így a számérték önmagában nem lenne elegendő ahhoz, hogy eldönthető legyen, az magas összegű-e vagy sem.

Az első két lépéssel tehát kikerültük a készülék zárolásának feloldását, és elhitettük vele, hogy az adott tranzakció alacsony értékű, így nem kér tőlünk az érintéses fizetési határ feletti összeg esetén sem külön azonosítást sem. De még ez sem elegendő, hiszen a terminált is meg kell győznünk arról, hogy a tranzakció valóban hiteles.

Harmadik lépésként egy újabb bitet kell átbillenteni, ami megmondja a terminál számára, hogy a vásárló külön azonosítása is megtörtént. Ezzel a terminál elfogadja a tranzakciót, és azt továbbítja a banki rendszer felé, és a fizetés elfogadásra kerül.

Felmerülhet a kérdés, hogy ez a kommunikáció miért nincs titkosítva, ha az megakadályozhatná az ilyen egyszerű módosítást a folyamat során? Ennek az oka abban keresendő, hogy az eszközök és a terminál kommunikációjának több ezer különböző típus között is kompatibilisnek kell lennie. Ha pedig titkosítottá válna, akkor az összes terminált és készüléket frissíteni kellene hozzá, ez pedig a gyakorlatban nem kivitelezhető, főleg nem egyszerre és kivétel nélkül. Ettől függetlenül az adott készülékek, terminálok és bankok esetén is léteznek további ellenőrzési mechanizmusok arra vonatkozóan, hogy az ilyesmit megakadályozzák, és ezeknek köszönhetően az ilyesmi normál esetben nem is történhet meg.

Miért csak a Visa esetén kivitelezhető ez így?

A Visa esetén a fizetések ellenőrzésekor a legtöbbször csak szimmetrikus kriptográfiai hitelesítés van használatban. Ez azt jelenti, hogy amikor egy fizetésnél odaérintjük a kártyánkat vagy a készülékünket, a terminál küld egy hosszú tranzakciós adatot, a kártya vagy a készülékünk a saját titkos kulcsával létrehoz ebből egy egyedi azonosítót, amit a terminál elküld a saját tranzakció adataival együtt a bank felé, a bank pedig a saját titkos kulcsát használva szintén létrehozza az egyedi azonosítót, és ha az megegyezik azzal, amit a terminál megkapott a bankkártyától vagy készüléktől és továbbküldött a bank felé, a bank hitelesíti azt, és feldolgozza a terminál tranzakciós adataiban szereplő fizetést, majd visszajelzi számára, hogy ez sikeres volt. Ez a lépés minden egyes tranzakció esetén követelmény, függetlenül attól, hogy az egyébként Visa, MasterCard, Amex, vagy bármi más típusú kártyával történik.

A MasterCard esetén ugyanakkor van még egy újabb réteg, ami a bankkártya illetve készülék, és a terminál között fut le ezután, és minden esetben kötelező. Ez a második lépés asszimetrikus kriptográfián alapul, ami a nevéből adódóan két különböző kulcsot használ: egy privát kulcsot a kártya illetve készülék, és egy nyilvános kulcsot a terminál esetén. A folyamat ebben az esetben is a terminál által küldött tranzakciós adatokból indul ki. A kártya illetve készülék a saját privát kulcsával generál ebből egy egyedi azonosítót, ami gyakorlatilag a kártya digitális aláírása erre az adott tranzakcióra. Ezt a kártya illetve készülék visszaküldi a terminálnak a saját nyilvános kulcsával együtt. A nyilvános kulcsnak köszönhetően a terminál ellenőrizni tudja, hogy ez a digitális aláírás valóban az adott kártyától illetve készüléktől érkezett ehhez az adott tranzakcióhoz.

Leegyszerűsítve képzeljük el azt, hogy a tranzakciós adat mindössze egy 2-es szám. A bankkártya illetve készülék ezt a saját privát kulcsával (D), az alábbi esetben egy 7-essel a 7. hatványra emeli, amiből 128 lesz. Ezt elosztja a nyilvános kulcs értékével (N), tehát 55-tel, ami ebben az esetben 2 és marad 18 (ez az r18 az ábrán, r = remainder, azaz maradék). Ezt a 18-at elküldi a terminálnak. A terminál a 18-at a saját privát kulcsával (E), az alábbi esetben egy 3-assal a 3. hatványra emeli, ami 5832 lesz. Ezt elosztja a nyilvános kulccsal (55), aminek az eredménye 106 és marad 2 (ez az r2). Mivel ez a 2-es egyezik azzal, amit eredetileg küldött a kártyának illetve készüléknek, így hitelesítésre került az adat úgy, hogy a kártya és a terminál privát kulcsa is titkos maradt.

Természetesen ennél sokkal hosszabb számsorokról van szó egy tényleges esetben, ami gyakorlatilag lehetetlenné teszi a hamisítást, mert mindössze egyetlen szám megváltoztatása az adatfolyamban teljesen más eredményt ad a végén, és elutasításra kerül a fizetés.

A Visa esetén ez az asszimetrikus hitelesítés viszont csak abban az esetben fut le, ha az adott terminál offline állapotú, hiszen akkor a terminál nem tudná a bankkal hitelesíttetni a fizetést. Mivel azonban a fenti támadásban offline állapotúnak hazudott terminál valójában online állapotú, így képes a bankkal hitelesíttetni a tranzakciót, ezért az asszimetrikus hitelesítés eleve nem is fut le – pedig ha ezt megtenné a terminál, azonnal kiderülne számára, hogy a tranzakciós adatok módosításra kerültek.

Mit mond erre a Visa?

A Veritasium ezt a kérdést természetesen nekik is feltette. Michael Jabbara, a Visa fizetési ökoszisztémájának kockázatokért is felelős alelnöke szerint egy ilyen visszaélés esélye meglehetősen alacsony, és semmi arra utaló nyomot nem vettek észre, hogy bárki is ilyen támadásoknak lenne kitéve. Ha ez mégis előfordulna, akkor az érintett természetesen jelezheti a bank felé az ilyen tranzakciót, és visszatérítést fog kapni.

Na persze közben ott van az aggodalom és a visszatérítés időtartama alatt az adott ügyfél nem tud hozzáférni a pénzéhez sem.

Ki lehet érintett – hol érhető el az Expressz mód?

Az Expressz mód az alábbi régiókban és városokban érhető el cikkünk közzétételekor – ez azt jelenti, hogy Magyarországon nem lehetünk érintettek, mert itthon nem támogatott ez a mód:

🇬🇧 Egyesült Királyság

  • Számos buszüzemeltető országszerte, a listájuk elérhető ide kattintva.

🇺🇸 Egyesült Államok

  • New York City (OMNY rendszer)
  • Portland (Hop Fastpass)

🇨🇦 Kanada

  • Torontó (TTC – teljes hálózatra kiterjedő bevezetés)

🇯🇵 Japán

  • Országszerte (ahol a Suica, PASMO, ICOCA, és TOICA használható)

🇨🇳 Kína

  • Peking
  • Sanghaj
  • További több száz város a China T-Union rendszeren keresztül

🇦🇺 Ausztrália

  • Az Opal, Translink és Transperth hálózatán

Hogyan küszöbölhető ez ki?

Hogy a gyakorlatban mit szólna egy iPhone Magyarországon ahhoz, ha egy ilyen “ál terminál” közelébe tennénk, azt értelemszerűen nem tudtuk ténylegesen kipróbálni, de egy egyszerű beállítással bárki kiküszöbölheti ennek még az esélyét is.

Ha tehát Visa kártya van a készülékünkön és az előbbi bekezdésben szereplő régiók valamelyikében élünk, akkor ellenőrizzük, hogy be van-e kapcsolva az Expressz mód az adott kártyára az iPhone-on, és adott esetben kapcsoljuk azt ki, mert automatikusan bekapcsolt állapotú lehet, ha olyan kártyát ad(t)unk hozzá, amelyik esetén ez támogatott. Magyarországon ez nem kapcsolódhat be automatikusan, mert a funkció jelenleg csak a fenti régiókban és városokban támogatott.

Ezt az opciót a Beállítások megnyitása után az Appok, Tárca és Apple Pay alatt találjuk az Expressz tömegközlekedési kártya résznél, és erre rányomva válasszuk ki, hogy “Nincs”:

Nyilván ha ezt kikapcsoltuk, akkor onnantól egy tömegközlekedési terminálnál is szükséges lesz a külön azonosítás, történjen az jelkóddal, Touch ID-val vagy Face ID-val.

Olvasd el a hozzászólásokat is

Szólj hozzá: Hozzászólok

Shopping cart

×

Hírek, Újdonságok

Webshop

Termékek
Árkategória

Hírek, Újdonságok

Webshop