Компрометиран магазин: казус с бързо решение
В 9:12 ч. собственик на онлайн магазин вижда десетки нови поръчки, но нито една не изглежда нормална. Част от клиентите се оплакват, че са били пренасочени към непозната страница, а в административния панел има потребител с права, които никой от екипа не разпознава. Това е типичен компрометиран магазин казус: проблемът не е само в сайта, а в спрелите продажби, рисковите данни и доверието, което може да се загуби за часове.
При подобен инцидент най-лошият ход е хаотичното действие – изтриване на файлове на случаен принцип, смяна на една парола и надежда, че всичко е приключило. Целта е друга: първо да се ограничи щетата, после магазинът да се изчисти и възстанови, а накрая да се премахне причината за пробива.
Как започва един компрометиран магазин казус
Представете си малък WooCommerce магазин, който продава продукти ежедневно. Сайтът е работил нормално, но обновяванията са отлагани, защото „всичко си върви“. Един плъгин остава на стара версия с известна уязвимост. Нападателят използва слабостта, добавя скрит администраторски профил и поставя код, който пренасочва част от посетителите към външен адрес.
Не всеки клиент вижда пренасочването. То може да се активира само при посещение от мобилен телефон, при трафик от търсачка или само веднъж за конкретен посетител. Затова собственикът често не успява да повтори проблема, когато отвори сайта от своя компютър. Междувременно рекламният бюджет се харчи, клиентите попадат на съмнителни страници, а Google може да покаже предупреждение за опасен сайт.
В друг вариант магазинът не пренасочва никого, но започва да изпраща спам имейли или да създава фалшиви поръчки. Понякога нападателят променя банкова сметка, имейл за известия или настройки на разплащане. Симптомите са различни, но подходът трябва да е подреден.
Първите решения определят размера на щетата
Когато има съмнение за пробив, магазинът не бива да продължава да приема поръчки, докато не е ясно какво се случва. Това не винаги означава пълно спиране на сайта. Ако рискът е ограничен, може временно да се изключат онлайн плащанията или поръчките и да се покаже кратко съобщение за техническа профилактика. Ако има опасност посетители да бъдат пренасочвани или да въвеждат данни в чужда страница, временното ограничаване на достъпа е по-правилното решение.
Следва запазване на наличното състояние. Прави се архив на файловете, базата данни и логовете, преди да започне чистене. Това е важно, защото архивът помага да се проследи кога е настъпила промяната и какво е засегнато. Не всеки стар архив е безопасен за директно връщане, но той е ценен ориентир.
Паралелно се сменят паролите за хостинг, WordPress администратори, база данни, SFTP достъп, служебна поща и разплащателни услуги. Смяната трябва да е координирана. Ако първо се промени само паролата за WordPress, но нападателят още има достъп до хостинга, той може просто да създаде нов потребител или да върне злонамерения файл.
Как се проверява какво реално е засегнато
Премахването на видимия проблем не е достатъчно. Ако се изтрие само кодът за пренасочване, но остава скрит достъп, сайтът може да бъде заразен отново същия ден. Затова проверката обхваща както файловете, така и настройките и потребителските акаунти.
Преглеждат се активните теми и плъгини, особено файлове с наскоро променени дати и непознати скриптове. Проверява се за код в папките за качени изображения, където нормално не би трябвало да има изпълними файлове. Анализира се и базата данни – злонамерени скриптове понякога се поставят в настройки на сайта, описания на продукти, банери или съдържание на страници.
Администраторските потребители също заслужават внимание. Непознат профил с име, което прилича на системен акаунт, не бива да се приема за безобиден. Проверяват се имейл адресът, датата на създаване и ролята му. Виждат се и потребителите в хостинг панела, настройките за пренасочване, планираните задачи и ключовете за външни услуги.
Тук има важен практически нюанс. Връщането на стар архив понякога е най-бързият вариант, но не винаги е най-добрият. Ако архивът е от преди няколко дни, може да липсват нови поръчки, регистрации и промени по наличности. Тогава по-подходящо е ръчно почистване и проверка на засегнатите компоненти. Ако архивът е чист, скорошен и поръчките могат да се възстановят от друга система, връщането му може да намали престоя значително.
Възстановяване без ново прекъсване
След като злонамереният код и неоторизираните достъпи са премахнати, магазинът се връща към работещо състояние контролирано. Обновяват се WordPress, WooCommerce, темата и всички необходими разширения. Неактивните и неизползвани плъгини се премахват, вместо да се оставят „за всеки случай“. Същото важи за темите, които не се използват.
После се проверява основният път на клиента: начална страница, категории, продукт, количка, поръчка, имейл потвърждение и плащане. Тестът не е формалност. Възможно е след почистване сайтът да изглежда нормално, но калкулаторът за доставка, формата за поръчка или интеграцията с куриер да не работят както трябва.
Проверяват се и настройките за имейли. При компрометиран сайт често има опити за изпращане на спам, което може да влоши репутацията на домейна. Ако клиентите не получават потвърждение за поръчка, те започват да звънят, да правят повторни поръчки или да губят доверие. Затова възстановяването на нормалната комуникация е част от решението, не допълнителна задача.
При нужда може да се постави временно наблюдение на достъпността, необичайните промени по файловете и критичните функции на магазина. Така първите дни след инцидента не минават в притеснение дали проблемът ще се повтори незабелязано.
Как се затваря входът, а не само следата
Най-честата причина за повторен пробив е проста: сайтът е почистен, но уязвимият компонент остава. Затова финалната част от работата е конкретна проверка на причината. Това може да е стар плъгин, слаба парола, администраторски достъп на бивш служител, изтекли данни за хостинг или тема от непроверен източник.
Полезните мерки не е нужно да правят управлението на магазина трудно. Достатъчни са редовни архиви, които могат да се възстановят, актуализации по график, отделни силни пароли и ограничен брой администратори. Добра практика е всеки човек да има собствен профил, а не целият екип да ползва един общ достъп. Така при напускане или съмнение за проблем достъпът се прекратява веднага, без да се променя работният процес на всички останали.
Нужна е и ясна отговорност. Малкият бизнес рядко има човек, който всеки ден следи версиите, архивите и известията от хостинга. Това не е слабост, а реалност. В такъв случай абонаментната техническа поддръжка има смисъл, защото превръща поддръжката от реакция след инцидент в регулярна грижа. IT Doctor работи именно по този модел – първо се оценява ситуацията, после се предприемат действия дистанционно или на място според конкретния проблем.
Какво да кажете на клиентите си
Ако има данни, че клиентите са били пренасочвани или е възможно да са засегнати лични данни, комуникацията трябва да е ясна и навременна. Не е нужно да се пише технически доклад. Кажете какво е установено, какво сте направили, какво следва и какво е разумно клиентът да провери от своя страна.
Не обещавайте, че „няма никакъв риск“, преди проверката да е приключила. По-добре е да сте точни: магазинът е временно ограничен, извършва се проверка, плащанията се наблюдават или поръчките се приемат по телефон до възстановяване на сайта. Спокойният и честен тон пази повече доверие от мълчанието.
При данни за засегнати лични данни може да има и задължения по защита на данните. Тук техническото установяване на обхвата и правилната административна реакция са различни задачи, но трябва да вървят заедно. Ако не е ясно какви данни са достъпвани, не разчитайте на предположения.
Пробивът в онлайн магазина е неприятен, но не е присъда за бизнеса. Когато реакцията е бърза и подредена, продажбите могат да бъдат възстановени, причината да бъде отстранена и следващият подобен сигнал да не ви заварва неподготвени. Най-полезното, което може да направите още сега, е да проверите дали имате работещ архив, актуален списък с достъпи и човек, който знае какво да направи в първите 30 минути.

