Formjacking обяснен: как нападателите крадат данни от карти на checkout страниците
Formjacking не изисква пробив в сървъра ви — достатъчен е един компрометиран скрипт от трета страна. Ето пълната анатомия и какво всъщност спира атаката.
Formjacking е прихващане на изпращането на HTML форма от инжектиран JavaScript, който препраща стойностите към сървър на нападателя. За разлика от класическия пробив, тук оригиналният ви сървър често остава недокоснат — кодът се изпълнява изцяло в браузъра на посетителя, върху данните, които той въвежда.
Веригата на атаката е почти винаги една и съща. Нападателят компрометира зависимост от трета страна — tag manager, A/B testing widget, чат скрипт или npm пакет — и добавя listener към submit event на checkout или login формата. При изпращане скриптът чете полетата (номер на карта, CVV, имейл, парола) и прави фонов POST към новорегистриран домейн, преди или едновременно с легитимното изпращане. Потребителят не забелязва нищо.
Защо WAF-овете не го хващат: reverse proxy вижда само заявките към вашия origin. Ексфилтрационният POST отива към домейн на нападателя, не към вас — значи никога не минава през WAF-а. Сигнатурните скенери на файлове също пропускат, защото зловредният код не е във вашите файлове, а в скрипт, зареден от чужд хост по време на изпълнение.
Как ExploitShield го открива: всяко изпращане на форма, извършено от headless браузъра, се улавя на мрежово ниво чрез MITM proxy. Дестинационният хост се обогатява с WHOIS възраст, RDAP данни, IP репутация и над 500 блоклиста. Нова ексфилтрационна крайна точка — домейн на дни — се маркира в първите си часове живот, заедно с инициаторския скрипт, файл и ред.
Практическата поука за e-commerce екипи: инвентаризирайте всеки скрипт от трета страна на checkout и login страниците си, прилагайте Subresource Integrity където е възможно, и наблюдавайте изходящите дестинации при реално изпълнение в браузър. Това е единственото място, където formjacking е видим преди някой клиент да изгуби данните на картата си.