Biztonság

Bankkártyaadat-lopó vírusok PrestaShop webáruházakban – dióhéjban, érthetően

Hamis kártyás fizetési űrlap alatt rejtőző horog – bankkártyaadat-lopó vírus egy webáruházban

Az elmúlt hónapokban egyre több PrestaShop webáruházat törtek fel azzal a céllal, hogy a vásárlók bankkártyaadatait ellopják. Több ügyfelem boltjában is találkoztam ilyennel – és bár mindegyik eset kicsit másképp nézett ki, a lényeg ugyanaz volt: a pénztárnál a vásárló egy hamis kártyás fizetési űrlapot kapott, és amit oda beírt, az egyenesen a csalókhoz került. Összeszedtem, hogyan működnek ezek a támadások, hogyan ismerheted fel őket, és mit tehetsz, hogy a te boltod ne legyen a következő.

Mi történik ilyenkor?

A szakma ezt a fajta támadást „skimmernek” vagy „Magecart-támadásnak” hívja. A név a bankautomatákra szerelt kártyaleolvasókból ered: ott egy hamis előlap olvassa le a kártyát, itt egy hamis fizetési űrlap.

A forgatókönyv nagyjából mindig ugyanaz:

  1. A támadó valamilyen résen bejut a webáruházba – legtöbbször egy elavult, ismert hibát tartalmazó modulon vagy témán keresztül.
  2. Elrejt egy kis kódot a bolt fájljai között, amely csak a pénztár oldalon lép működésbe.
  3. Amikor a vásárló a fizetéshez ér, ez a kód eltünteti a valódi fizetési módokat (utánvét, átutalás, a bank saját fizetőoldala), és helyettük egy hamis kártyás űrlapot mutat.
  4. A vásárló gyanútlanul beírja a kártyaszámot, a lejárati dátumot és a CVC-kódot – és ezek az adatok percek alatt a csalóknál vannak.

A bolt tulajdonosa sokszor napokig, hetekig nem vesz észre semmit: a webáruház működik, a rendelések jönnek. Az első jel gyakran csak az, hogy a vásárlók jelzik: ismeretlen terhelés jelent meg a kártyájukon.

Így néz ki a gyakorlatban

Az alábbi képernyőképek valódi, általam megtisztított webáruházakból származnak. A boltok nevét és a vásárlók adatait kitakartam.

1. Teljes képernyős „Card payment” ablak

Az egyik esetben a rendelés oldalán egy teljes képernyős, angol nyelvű ablak ugrott fel, amely a kártyaadatokat kérte – miközben a háttérben a bolt magyar nyelvű pénztár oldala látszott. A fejlesztői konzolban az is látszik, hogy a kód egy blokklánc-szolgáltatáshoz próbált kapcsolódni. A csalók újabban előszeretettel rejtik a kártékony kód egy részét blokkláncra, mert onnan nem lehet eltávolíttatni – nagy valószínűséggel itt is erről volt szó.

Hamis, teljes képernyős kártyás fizetési ablak egy feltört PrestaShop webáruház pénztár oldalán
Egy feltört webáruház pénztár oldala: a hamis „Card payment” ablak a valódi oldal fölé ugrik

2. Csak egyetlen, „Stripe”-nak álcázott fizetési mód maradt

Egy másik boltban a vírus az összes valódi fizetési módot elrejtette, és csak egy „Hitelkártya / bankkártya (Stripe)” lehetőséget hagyott meg. A Stripe egy valódi, ismert fizetési szolgáltató – a csalók épp azért használják a nevét, mert bizalmat kelt. A vásárló vírusirtója szerencsére felismerte, hogy a háttérben egy ismert adathalász oldalhoz (prestawatch.com) kapcsolódik az oldal, és letiltotta.

Feltört PrestaShop pénztár: csak egy Stripe-nak álcázott hamis kártyás fizetési mód maradt, a vírusirtó adathalászatot jelez
A valódi fizetési módok eltűntek, csak a „Stripe”-nak álcázott hamis mód maradt. A vírusirtó jelezte az adathalász kapcsolatot.

3. Beépített kártyamező a pénztárban

Egy harmadik esetben a „Fizetés” lépésnél a megszokott fizetési módok helyett egyetlen, ártalmatlannak tűnő „Credit/Debit Card Secure Payment” mező jelent meg. Ez a fajta trükk azért különösen alattomos, mert ránézésre beleillik az oldalba: ugyanaz a betűtípus, ugyanazok a színek.

Hamis Credit/Debit Card Secure Payment mező egy feltört webáruház fizetési lépésénél
A „Fizetés” lépésnél csak a hamis kártyamező látszik – a valódi fizetési módok el vannak rejtve.

4. Facebook Pixelnek álcázott kód

A legfrissebb esetnél a támadók a pénztár sablonjába egy olyan kódot írtak, amely első ránézésre a Facebook hirdetéskövető kódjának (Facebook Pixel) látszott – amilyen szinte minden webáruházban van. Valójában a vásárló böngészőjében letöltötte és elindította a kártyaadat-lopó programot egy idegen szerverről.

Miért olyan nehéz ezeket észrevenni?

Mert a csalók kifejezetten úgy építik fel őket, hogy rejtve maradjanak:

  • Csak a pénztár oldalon jelennek meg, és sokszor egy vásárlónak csak egyszer – a főoldalon, a termékoldalakon minden rendben van.
  • A kód olvashatatlanra van kódolva. Az alábbi képen egy ilyen részlet látható: több ezer sornyi értelmetlen karaktersor, amelyet a program futás közben alakít vissza működő kóddá.
  • Ártatlan fájlnak álcázzák magukat: képfájlnak, modulfrissítő fájlnak, hivatalos megjelenésű „biztonsági javításnak”, sőt egy biztonsági cég nevére regisztrált, rejtett adminisztrátori fióknak.
  • Hónapokig lapulhatnak. Az egyik esetben a hátsó ajtót négy és fél hónappal korábban helyezték el, és csak akkor vették elő, amikor a kártyalopást elindították.
  • Egy részük nem is a szerveren van: a tényleges kártékony kód csak a vásárló böngészőjébe töltődik le, így a webáruház fájljaiban keresve nem találni.
Olvashatatlanra kódolt kártékony PHP-kód egy feltört PrestaShop webáruházból
Így néz ki egy elrejtett kártékony kód: több ezer sornyi kódolt szöveg, a végén egyetlen sorral, amely futtatja.

Hogyan jutnak be?

Az általam vizsgált esetekben a bejutás szinte mindig elavult, ismert hibát tartalmazó modulokon keresztül történt. Ezekről a hibákról nyilvános leírások vannak, a támadók pedig automatizált programokkal pásztázzák a webáruházakat, és ahol megtalálják a régi verziót, ott bejutnak. Jellemző belépési pontok voltak:

  • népszerű oldalépítő és blog modulok régi verziói (sok prémium témához ezek automatikusan járnak),
  • a PrestaShop saját termékszűrő és kapcsolati űrlap moduljának régi verziói,
  • és egyszer bejutva a támadók rejtett adminisztrátori fiókot és tartalék hátsó ajtót is létrehoztak, hogy a „javítás” után is vissza tudjanak térni.

Fontos: ezek közül a hibák közül mindegyikre létezett már javítás. A támadás azért sikerült, mert a boltban a régi, javítatlan verzió futott.

Honnan veheted észre, ha a te boltod is érintett?

  • Végigmész a vásárláson, és a fizetésnél eltűntek a megszokott fizetési módok, vagy új, ismeretlen kártyás mód jelent meg.
  • A kártyás fizetésnél nem a bank vagy a fizetési szolgáltató saját oldalára kerülsz (pl. SimplePay, Barion, OTP), hanem a boltodon belül kér kártyaszámot egy űrlap. A hazai fizetési megoldások túlnyomó többsége a bank saját oldalára irányít át. (Léteznek valódi, a boltba beépülő kártyás űrlapok is – de ha te nem kapcsoltál be ilyet, gyanús.)
  • A pénztárban angol nyelvű mezők jelennek meg egy egyébként magyar oldalon.
  • A vírusirtód adathalász kapcsolatot jelez a pénztár oldalon.
  • Az adminban ismeretlen adminisztrátort vagy ismeretlen modult látsz.
  • Vásárlók jelzik, hogy a rendelés után furcsa terhelés jelent meg a kártyájukon.

Ha bármelyiket tapasztalod, érdemes inkognitó ablakban, egy másik eszközről is végigmenni a vásárláson – és ha gyanús, azonnal szólni.

Mit tegyél, ha fertőzött a webáruházad?

  1. Kapcsold karbantartási módba a boltot, hogy több vásárló ne adja meg a kártyaadatait.
  2. Ne törölj semmit kapkodva! A fertőzött fájlok bizonyítékok, és ezekből derül ki, hogyan jutott be a támadó és mi minden sérült.
  3. Hívj szakembert, aki megtalálja a teljes fertőzést – nemcsak a látható kártyalopó kódot, hanem a hátsó ajtókat és a rejtett fiókokat is. Ha csak a látható részt törlöd, a támadó napokon belül visszajön.
  4. A megtisztítás után cserélj le minden jelszót: adminisztrátori fiókok, adatbázis, FTP, tárhely-kezelő, és a PrestaShop titkosító kulcsai.
  5. Értesítsd a fizetési szolgáltatódat, és – mivel személyes adatokkal kapcsolatos incidensről van szó – a GDPR szerint 72 órán belül a Nemzeti Adatvédelmi és Információszabadság Hatóságot (NAIH), szükség esetén az érintett vásárlókat is.

Mit teszek az általam kezelt webshopokért?

  • Rendszeresen frissítem a PrestaShopot, a témát és a modulokat, és minden webáruházon külön ellenőrzöm az ismert, nyilvánosan leírt modulhibákat – nemcsak a verziószámot, hanem a tényleges kódot is.
  • Fájlfigyelő rendszert futtatok: ha a szerveren váratlanul megváltozik egy fájl, új modul vagy új adminisztrátor jelenik meg, néhány percen belül értesítést kapok. A legutóbbi esetnél a támadó kódját negyedórán belül észleltem, és azonnal eltávolítottam.
  • Kiszűröm a gyanús forgalmat, mielőtt az a webáruházhoz érne: a hibákat kereső automatizált programokat és a túlterhelő robotokat.
  • Fertőzésnél teljes felderítést végzek: megkeresem a belépési pontot, az összes hátsó ajtót és rejtett fiókot, és a többi kezelt webshopot is átvizsgálom ugyanarra a mintára.

A legfontosabb tanulság

A bankkártyaadat-lopó támadások nem a nagy cégeket célozzák, hanem bárkit, akinek elavult modul fut a webáruházában. Egy bolt biztonsága nem egyszeri beállítás, hanem folyamatos munka: rendszeres frissítés és folyamatos felügyelet. Ami egy frissítésnél pár órás munka, az egy feltörés után napokig tartó helyreállítás, elvesztett vásárlói bizalom és akár hatósági eljárás.

Szeretnéd, ha valaki folyamatosan vigyázna a webáruházadra?

A PrestaShop Biztosítás 0-24 szolgáltatás keretében rendszeresen átvizsgálom és frissítem a boltodat, fájlfigyelővel felügyelem, és ha baj van, munkaidőben 1 órán, munkaidőn kívül – éjjel, hétvégén – 8 órán belül nekiállok a javításnak. Ha pedig már most gyanús valami, a hibajavításban is segítek.

Kapcsolódó cikkek

Puizl Attila

PrestaShop fejlesztő · Hivatalos PrestaShop Nagykövet

17 éve készítek, fejlesztek és tartok karban PrestaShop webáruházakat. Több száz hazai és külföldi webshop viseli a kézjegyem, és 2010 óta segítek a magyar PrestaShop közösségben.

Bemutatkozás és ügyfélvélemények →

Szólj hozzá!

Az e-mail címed nem jelenik meg. A hozzászólások jóváhagyás után válnak láthatóvá. Részletek: Adatkezelési tájékoztató.