Card skimming na WooCommerce prodavnici: kako prepoznati da neko krade podatke kupaca
Ovaj vodič obrađuje temu woocommerce od potvrde problema do čišćenja i prevencije.
Prodavnica radi normalno. Porudžbine stižu, plaćanja prolaze, nema grešaka ni čudnih stranica. Onda vam se javi kupac: nekoliko dana posle kupovine kod vas, sa njegove kartice su skinute sume koje nije potrošio. Za nedelju dana javi se još jedan. Onda vas kontaktira banka ili procesor plaćanja i pita da li ste primetili nešto neobično na sajtu.
Ovo je scenario koji se naziva card skimming, e-skimming ili, po grupi napadača koja ga je proslavila, Magecart. Napadač na stranicu za plaćanje ubaci mali skriveni kod koji beleži sve što kupac unese, uključujući broj kartice, datum isteka i CVV, i šalje to na svoj server. Prodavnica i dalje savršeno radi, jer je upravo to cilj: što duže niko ništa ne primeti, to više kartica napadač prikupi.
Za vlasnika web prodavnice ovo je najozbiljniji oblik hakovanja, i jedini kod koga šteta ne pogađa samo vas i vaš sajt, nego direktno novčanike vaših kupaca. Direktno pogađa kupce, može da dovede do gubitka mogućnosti plaćanja karticama, i nosi pravne obaveze. U ovom tekstu objašnjavamo kako ovaj napad radi na WooCommerce prodavnicama, kako da ga prepoznate, šta da uradite odmah ako sumnjate, i kako da se zaštitite.
Kako radi card skimming

Kod teme woocommerce redosled koraka je važniji od žurbe.
Skriveni kod na stranici za plaćanje
Najčešći oblik je JavaScript kod koji se ubacuje na stranicu za plaćanje (checkout). Kada kupac popuni polja, kod pročita vrednosti iz tih polja i pošalje ih na server koji kontroliše napadač. Slanje se najčešće maskira da liči na legitiman zahtev, na primer na učitavanje slike ili analitički poziv, a adresa napadačevog servera se bira tako da liči na poznat servis.
Kod se obično aktivira samo na stranici za plaćanje, samo kada se u polju pojavi nešto što liči na broj kartice, i često se krije od ulogovanih administratora. Na ostalim stranicama sajta ne radi ništa i ne ostavlja nikakav trag.
Lažna forma za plaćanje
Druga česta varijanta je lažna forma. Ako vaša prodavnica kupca preusmerava na stranicu banke ili procesora plaćanja, napadač ne može da pročita podatke sa te stranice. Zato na vaš sajt, pre preusmeravanja, ubaci sopstvenu formu koja izgleda kao prava. Kupac unese podatke o kartici, forma ih pošalje napadaču, a zatim prikaže grešku („Plaćanje nije uspelo, pokušajte ponovo“) i pusti kupca na pravu stranicu banke, gde on ponovo unese iste podatke i plaćanje prođe.
Kupac ne posumnja ništa, a vi dobijate uredno plaćenu porudžbinu. U vašem sistemu nema ni jedne neuspele transakcije, pa ni vi nemate razlog da posumnjate. Jedini trag je to što su neki kupci karticu uneli dva puta.
Kod ne mora biti u fajlovima
Skimmer se može kriti na više mesta:
- u fajlovima dodatka za plaćanje ili samog WooCommerce-a,
- u šablonima WooCommerce-a unutar teme (folder
woocommerceu temi), - u bazi, u opcijama ili podešavanjima dodataka za ubacivanje koda,
- u fajlovima koji izgledaju kao slike ili fontovi,
- u spoljnom servisu koji se učitava na sajtu, na primer u Google Tag Manager kontejneru ako je nalog kompromitovan, ili u skripti trećeg servisa koja je sama hakovana.
Zašto su male prodavnice česta meta
Velike prodavnice imaju bezbednosne timove i nadzor koji ovakav kod otkriva brzo. Male WooCommerce prodavnice najčešće nemaju nikoga ko redovno gleda šta se učitava na stranici za plaćanje. Napadači to znaju i koriste automatizovane alate koji traže prodavnice sa zastarelim dodacima. Za napadača je svejedno da li prodavnica ima deset ili deset hiljada porudžbina mesečno: kod se ubaci jednom i radi sam, a skimmer koji ostane neprimećen nekoliko meseci i na maloj prodavnici prikupi stotine kartica.
„Kod mene plaćanje ide preko banke, ovo me se ne tiče“

Mnoge prodavnice u Srbiji koriste plaćanje gde se kupac prebacuje na stranicu banke ili procesora plaćanja, ili gde se forma za karticu učitava u zaštićenom okviru (iframe) sa njihovog servera. To je dobra praksa i značajno smanjuje rizik, ali ga ne uklanja:
- Lažna forma opisana iznad radi upravo kod prodavnica sa preusmeravanjem.
- Ostali podaci kupaca (ime, adresa, telefon, e-mail, sadržaj porudžbine) unose se na vašem sajtu i mogu biti ukradeni bez obzira na način plaćanja.
- Napadač može da izmeni podešavanja dodatka za plaćanje, na primer adresu na koju se kupac preusmerava ili ključeve za pristup, ako ima administratorski pristup.
Dakle, pitanje nije „da li imam karticu na sajtu“, nego „da li neko može da menja ono što kupac vidi na mom sajtu“.
Znaci da vaša prodavnica možda krade podatke

Signali od kupaca i banke
- Kupci prijavljuju zloupotrebu kartica nekoliko dana ili nedelja posle kupovine kod vas. Jedna prijava može biti slučajnost. Dve ili više u kratkom periodu su ozbiljan signal.
- Banka ili procesor plaćanja vas kontaktira. Banke analiziraju gde su zloupotrebljene kartice ranije korišćene. Ako je vaša prodavnica zajednička tačka, dobićete upit. Ovo nikada ne ignorišite.
- Kupci pominju da su karticu uneli dva puta ili da je prvo plaćanje „palo“, pa je drugo uspelo. To je tipičan znak lažne forme.
Tehnički signali
- Stranica za plaćanje izgleda drugačije nego ranije: dodatno polje, drugačiji raspored, forma za karticu tamo gde je ranije bilo samo dugme.
- Nepoznate skripte na stranici za plaćanje, vidljive u izvornom kodu ili u alatima za programere.
- Zahtevi ka nepoznatim domenima dok kupac kuca u polja za plaćanje.
- Izmenjeni fajlovi dodatka za plaćanje ili WooCommerce šablona u temi.
- Nepoznat administrator ili promenjena podešavanja dodatka za plaćanje.
- Upozorenje bezbednosnog dodatka ili hostinga o zlonamernom kodu. Šta znače takve poruke, objasnili smo u tekstu Wordfence ili hosting prijavio malver.
Posledice za prodavnicu
Posledice skimminga su ozbiljnije nego kod većine drugih infekcija, jer pogađaju tuđe novce i podatke:
- Gubitak mogućnosti primanja kartica. Banka ili procesor plaćanja može privremeno ili trajno da ukine mogućnost plaćanja karticama dok se ne dokaže da je prodavnica bezbedna.
- Troškovi i naknade. U zavisnosti od ugovora sa procesorom plaćanja, trgovac može snositi deo troškova zloupotrebe i dodatne provere.
- Obaveze prema zakonu o zaštiti podataka o ličnosti, o kojima pišemo u nastavku.
- Izgubljeno poverenje kupaca. Kupac kome je kartica zloupotrebljena posle kupovine kod vas retko se vraća, a lako priča drugima.
- Pad prodaje dok traje čišćenje, jer je plaćanje karticom isključeno ili prodavnica zatvorena.
Zbog svega ovoga, kod skimminga se ne čeka i ne pokušava da se problem „tiho“ reši.
Kako da proverite svoju prodavnicu

Ponovite ovu proveru ako se woocommerce vrati posle delimičnog čišćenja.
Pogledajte stranicu za plaćanje kao kupac
Otvorite prodavnicu u privatnom prozoru, bez prijave, dodajte proizvod u korpu i idite do stranice za plaćanje. Uporedite je sa onim kako bi trebalo da izgleda. Ne unosite pravu karticu.
Proverite skripte i zahteve
Na stranici za plaćanje otvorite alate za programere (F12), tab „Network“, i počnite da kucate izmišljene podatke u polja. Ako se pri kucanju ili pri izlasku iz polja šalju zahtevi ka domenima koje ne prepoznajete, to je ozbiljan znak. U tabu „Sources“ ili u izvornom kodu stranice pogledajte sve skripte i proverite da li svaku znate. Uobičajene su skripte WooCommerce-a, vaše teme, dodatka za plaćanje, analitike i eventualno četa.
Pregledajte fajlove i bazu
Uporedite fajlove WooCommerce-a i dodatka za plaćanje sa originalnim verzijama, proverite folder woocommerce u vašoj temi i pretražite bazu po oznaci <script i po nepoznatim domenima. Proverite i nalog za Google Tag Manager ako ga koristite: ko ima pristup i da li postoje oznake koje niste vi dodali.
Pogledajte i spolja
Naša besplatna provera sajta pregleda javni HTML i JavaScript prodavnice i traži poznate obrasce zlonamernog koda. Skimmeri se često aktiviraju samo na stranici za plaćanje i pod određenim uslovima, pa čist rezultat ovde nije garancija, ali nalaz jeste jasan signal da treba reagovati.
Pitajte procesora plaćanja
Ako sumnjate, obratite se banci ili procesoru plaćanja. Oni imaju podatke o prijavama zloupotrebe i mogu da potvrde da li se vaša prodavnica pojavljuje kao zajednička tačka.
Šta uraditi odmah ako sumnjate na skimming

Vlasnici često potcenjuju temu woocommerce dok Search Console ili klijenti ne podignu uzbunu.
Redosled je ovde posebno važan, jer se radi o tuđim podacima i mogućim pravnim obavezama.
1. Sačuvajte dokaze
Pre nego što bilo šta obrišete, napravite kompletnu kopiju fajlova i baze, i sačuvajte logove servera. Kasnije će biti potrebno da se utvrdi od kada je skimmer aktivan i koje porudžbine su pogođene. Ako obrišete kod pre nego što ga sačuvate, to postaje mnogo teže.
2. Zaustavite curenje
Privremeno isključite plaćanje karticama na sajtu. Ostavite druge načine plaćanja, kao što je plaćanje pouzećem ili uplatnica, dok se prodavnica ne očisti. Ako ne možete brzo da utvrdite gde je kod, razmislite o privremenom zatvaranju kase ili cele prodavnice. Svaki sat rada zaražene stranice za plaćanje znači nove ukradene kartice.
3. Obavestite banku ili procesora plaćanja
Javite se odmah. Oni imaju sopstvene procedure za ovakve slučajeve, mogu da prate zloupotrebe i da blokiraju pogođene kartice. Pokušaj da se problem prikrije gotovo uvek se završi lošije, uključujući i gubitak mogućnosti primanja kartica.
4. Očistite prodavnicu
Postupak je sličan kao kod drugih infekcija, uz posebnu pažnju na delove koji se tiču plaćanja:
- promenite sve lozinke i sigurnosne ključeve, uklonite nepoznate administratore,
- zamenite WooCommerce, dodatak za plaćanje, temu i ostale dodatke čistim kopijama iz zvaničnih izvora,
- proverite prilagođene WooCommerce šablone u temi i uporedite ih sa originalom,
- pregledajte bazu i podešavanja dodataka za ubacivanje koda,
- proverite spoljne servise (Tag Manager, skripte trećih strana),
- pronađite backdoor i utvrdite kako je napadač ušao.
Kako izgleda čišćenje zaražene prodavnice u praksi, opisali smo u tekstu Hakovana WooCommerce prodavnica: kako smo je očistili.
5. Promenite ključeve za plaćanje
Ako je napadač imao administratorski pristup, mogao je da vidi API ključeve i tajne ključeve dodatka za plaćanje. U kontrolnom panelu procesora plaćanja generišite nove ključeve i unesite ih u prodavnicu.
6. Proverite pravne obaveze
Ako su ukradeni lični podaci kupaca, Zakon o zaštiti podataka o ličnosti propisuje obavezu da se o povredi podataka obavesti Poverenik za informacije od javnog značaja i zaštitu podataka o ličnosti, bez nepotrebnog odlaganja i, ako je moguće, najkasnije u roku od 72 sata od saznanja, osim ako povreda verovatno ne predstavlja rizik za prava lica. Kada postoji visok rizik, obaveštavaju se i sami kupci. Mi nismo pravnici, pa vam preporučujemo da se odmah posavetujete sa advokatom, ali je važno da znate da ovaj rok postoji i da počinje da teče od trenutka kada ste saznali za problem.
7. Obavestite kupce
Čak i kada zakon to ne zahteva, korektno je da obavestite kupce čiji su podaci možda ukradeni i savetujete ih da kontaktiraju svoju banku. Kratka, iskrena poruka čuva poverenje mnogo bolje nego ćutanje, posebno ako kupci kasnije saznaju odakle je problem došao. U poruci navedite period u kome je problem postojao, šta ste preduzeli i šta kupcima savetujete.
Kako da zaštitite prodavnicu

Plaćanje van vašeg sajta ili u zaštićenom okviru
Ako je moguće, koristite način plaćanja gde se podaci o kartici unose na stranici banke ili procesora plaćanja, ili u okviru (iframe) koji se učitava sa njihovog servera. Tako podaci o kartici nikada ne prolaze kroz kod vašeg sajta. Lažnu formu i dalje treba sprečiti, ali je obim rizika mnogo manji.
Content Security Policy
HTTP zaglavlje Content Security Policy ograničava sa kojih domena stranica sme da učitava skripte i kojim domenima sme da šalje podatke. Dobro podešen CSP može da spreči da ukradeni podaci uopšte napuste stranicu, čak i ako je skimmer ubačen.
Nadzor skripti na stranici za plaćanje
Stranica za plaćanje treba da ima poznat, kratak spisak skripti. Automatska provera koja javlja kada se na toj stranici pojavi nova ili izmenjena skripta otkriva skimmer za nekoliko sati. Standard za bezbednost plaćanja karticama, PCI DSS, u najnovijoj verziji eksplicitno traži da trgovci vode spisak skripti na stranicama za plaćanje i prate njihove izmene, upravo zbog ovog tipa napada.
Manje dodataka, manje pristupa
Svaki dodatak i svaki administratorski nalog su potencijalni ulaz. Prodavnica treba da ima samo neophodne dodatke, ažurirane redovno, i samo nekoliko administratora sa dvostepenom autentifikacijom. Zaposlenima koji obrađuju porudžbine ne treba administratorska uloga, dovoljna im je uloga „Menadžer prodavnice“.
Osnovna zaštita
Redovna ažuriranja, originalni dodaci, jake lozinke, bekapi i nadzor. Kompletan vodič je u tekstu Zaštita WordPress sajta od hakovanja.
Mesečna kontrolna lista za stranicu za plaćanje
Ovu listu može da prođe i neko ko nije programer, za petnaestak minuta mesečno:
- ☐ Stranica za plaćanje, otvorena u privatnom prozoru, izgleda isto kao prošlog meseca.
- ☐ Spisak skripti na stranici za plaćanje je isti kao prošlog meseca, bez novih domena.
- ☐ Lista administratora sadrži samo ljude koje poznajete.
- ☐ WooCommerce, dodatak za plaćanje i tema su ažurirani.
- ☐ Nema novih upozorenja od bezbednosnog dodatka ili hostinga.
- ☐ Nije bilo prijava kupaca o zloupotrebi kartica.
- ☐ Pristupi za Google Tag Manager i druge spoljne servise imaju samo ljudi kojima su potrebni.
Sledeći korak

Ako su vam kupci prijavili zloupotrebu kartica, ili vas je kontaktirala banka, ne čekajte. Pokrenite besplatnu proveru sajta i odmah nas kontaktirajte ili pozovite 065 402 5000. Ovakve slučajeve tretiramo kao hitne, kroz Emergency Response paket sa prioritetom u toku radnog dana, od 150 €. Za prodavnice koje žele stalni nadzor, paket održavanja kreće od 30 € mesečno.