Szerző: Gálffy Csaba

2015. december 30. 11:30

Súlyos hibák a bankkártya-elfogadó rendszerekben

Két, a bankkártya-olvasók által használt adatátviteli protokollban is súlyos hibákat találtak a biztonsági szakértők - a hibák lehetővé teszik a kereskedő és a vásárló számlájának megcsapolását is.

Új támadási lehetőséget mutatott be a bankkártya-elfogadó rendszerek ellen Karsten Nohl és Fabian Braulein a most folyó Chaos Computer Club 32C3 konferenciáján - számol be az Ars Technica. Az IT-biztonsági kutatók a terminálok által használt adatátviteli protokollok működésében mélyedtek el, a felfedezések pedig igen aggasztóak - felkészült támadók mind a kereskedőket, mind a bankkártyával fizető vevőket megkopaszthatják és kiolvashatják a PIN-kódot is.

A kártyaolvasó és a pénztárgép között

A kutatók két protokollt vettek nagyító alá és mindkettő esetében jelentős problémát találtak. A ZVT nevű, a hordozható kártyaolvasó és a POS-terminál (kassza) közötti adatátvitelért felel, és iparági szabványnak számít. A ZVT fizikai kapcsolatra eredetileg a soros portot használt, ennek kikopásával a legtöbb esetben ma már vezetékes és vezeték nélküli Etherneten folyik a forgalom. A protokoll valódi múmia, semmiféle hitelesítést nem használ a küldő és fogadó fél ellenőrzésére, így ha a támadó a két fél közé tud ékelődni, akkor egyszerűen indíthat man-in-the-middle támadást, és begyűjtheti az utazó adatokat - a mágnescsíkon tárolt információkat vagy épp a PIN-kódot magát.

A fenti adatok birtokában nagyon egyszerűen klónozható a vásárló kártyája, amellyel így a támadó ATM-ből vehet fel pénzt, vagy vásárolhat boltban is. A támadás szépsége, hogy a közbeékelődött támadó teljesen észrevétlen maradhat, vagyis az eredeti tranzakció zökkenőmentesen le tud zajlani, anélkül, hogy a vásárló vagy a kereskedő észrevenne bármilyen problémát.

A támadás részletei nagyon érdekesek: a kártyaolvasókat ugyanis úgy tervezik, hogy a PIN-kód sosem hagyja el azokat, sem a POS, sem más rendszerek felé. Így szükség van egy újabb csavarra ahhoz, hogy ennek küldését kikényszeríthesse a támadó. A ZVT protokoll segítségével tetszőleges szöveg kiírható az olvasó képernyőjére (például analitikához néha bekérik az irányítószámot), ezzel pedig a PIN-kérő dialógus is meghamisítható. Az erre adott választ pedig a kártyaolvasó megküldi a pénztárgép felé - ahol pedig a támadó elfoghatja ezt a csomagot. Mivel fura lenne a PIN-t kétszer bekérni, ilyenkor PIN-nélküli fizetést is indítványozhat a támadó (ez még mindig támogatott a rendszerekben), igaz, ilyenkor a pénztárgép rányomtatja a nyugtára a PIN-mentes fizetés tényét.

A ZVT elvben kínál védelmet pont az ilyen támadás ellen, a képernyőre íráshoz azért csak igényel valamilyen hitelesítést. Ez a MAC (message authentication code), amely gyakorlatilag egy azt igazoló aláírás, hogy a képernyőre megbízható fél akar írni. A kutatók itt is hibát találtak, a MAC ugyanis idő-alapú támadással legyőzhető - a helyes kód feldolgozása kicsivel rövidebb ideig tart, mint a hibásé, ennek nyomán megfejthető az aláírás.

Megfejni a kereskedőt

A kártyaolvasót a kereskedő és a tranzakciót feldolgozó bank egy azonosító és egy port párosával konfigurálja fel, ezek jelölik ki, hogy a kártyáról lehúzott pénz milyen bankszámlára kerüljön. Természetesen ez a konfiguráció is a ZVT protokollon keresztül történik, amennyiben a helyi hálózathoz a támadó hozzáférést tud szerezni. A beállítást elvben jelszó védi, ez azonban az esetek túlnyomó többségében fix, és széles körben ismert, így érdemi védelmet nem nyújt.

Ebben a támadási vektorban is van persze csavar, a terminál azonosítójának megváltoztatása teljesen alaphelyzetbe állítja a kártyaolvasót, ami kiüti a többi tárolt információt is. Itt jön jól a Poseidon protokoll, amely a terminál és a bank közötti kommunikációért felel, és amelyen keresztül lekérdezhetőek a terminál beállításához szükséges adatok, így azok visszaírhatóak a gépre az új azonosítóval együtt.

A Poseidon protokoll problémáira épít egy harmadik, szintén hipotetikus támadás. A terminálokat a fent említett azonosítón és port számon túl egy harmadik, szervizjelszó egészíti ki, ezzel a hárommal párosítható egy terminál egy adott kereskedő bankszámlájához. A kutatók azt találták, hogy mindhárom paraméter meghatározható külső fél számára: az azonosító minden nyugtán megtalálható (és amúgy is szekvenciálisan növekedik), a jelszó némi webes kereséssel szintén megtalálható a nagyobb kereskedők esetében, a port pedig brute-force módszerrel megszerezhető. E hármas birtokában a terminál bejelentkeztethető a bankhoz, mint egy adott kereskedőnél található pénztári eszköz.

Mindent vivő munkahelyek

Mindig voltak olyan informatikai munkahelyek, melyek nagyon jól fekszenek az önéletrajzban.

Mindent vivő munkahelyek Mindig voltak olyan informatikai munkahelyek, melyek nagyon jól fekszenek az önéletrajzban.

Mit ér ezzel a támadó? A terminálok nem csak egyirányú pénzmozgás indítására alkalmasak - nem csak fizetni lehet ezekkel az eszközökkel, hanem a kereskedő számlájáról a bankkártyára is mozgatható pénz. A kereskedők ezt használják a pénzvisszatérítésre, téves fizetés vagy bármilyen visszafizetés egy negatív értékű átutalással történik. A kutatók szerint ilyen fordított irányú kifizetés a hamis terminálokról is indítható, ezzel pedig szépen megcsapolható a kereskedő számlája. A legszebb, hogy az idegen terminál létezése a kereskedő számára nem látható, így adott esetben elképzelhető, hogy csak hónap végi összegzésnél derülhet fény a hiányzó összegekre.

Bankok és bankkártyák - hitelesítést hírből sem

A biztonságos adatkapcsolatok és a hitelesített, titkosított kommunikáció korában meglehetősen paradox, hogy pont a fizetéshez kapcsolódó protokollok nem élnek ezekkel a megoldásokkal. Adott esetben a facebookozó felhasználó családi fotói is komolyabb védelmet élveznek, mint ugyanennek a felhasználónak a bolti vásárlása. A problémát súlyosbítja, hogy míg a ZVT inkább Európában használatos protokoll, a harmadik típusú támadáshoz használt Poseidon egy globális ISO-szabvány implementációja, és valószínű, hogy az alternatív implementációk is támadhatóak ugyanolyan eszközökkel. A hiba a szabványban rejlik, amely semmilyen hitelesítést nem igényel a kommunikáló eszközöktől, igaz, nem is zárja ki annak implementációját.

A teljes videó itt nézhető meg, roppant érdekes betekintés a kártyás fizetési rendszerek működésébe:

Kubernetes képzéseinket már közel 300 szakember végezte el. A nagy sikerre való tekintettel a tanfolyamot aktualizált tananyaggal június 18-án újra elindítjuk! A 8 alkalmas, élő képzés képzés órái utólag is visszanézhetők, és munkaidő végén kezdődnek.

a címlapról