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:
- 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.
- 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.
- 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.
- 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ó.

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.

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.

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.

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?
- Kapcsold karbantartási módba a boltot, hogy több vásárló ne adja meg a kártyaadatait.
- 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.
- 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.
- 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.
- É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.