Хакеры перехватывали данные банковских карт и пароли сотрудников финансовой группы США в течение 18 часов.

Сотрудники одной из трех крупнейших банковских групп США почти сутки могли вводить свои логины, пароли и платежные данные прямо в руки злоумышленников. Компания Sansec сообщила, что обнаружила активный JavaScript-кейлоггер на внутреннем интернет-магазине мерча для персонала. Через этот сайт более 200 000 сотрудников заказывают фирменные товары, и именно там вредонос перехватывал все, что люди печатали в формах, включая учетные данные, номера банковских карт и персональную информацию.
По данным Sansec, атака оставалась незамеченной для других поставщиков защитных решений. На момент обнаружения, как утверждает компания, срабатываний у конкурирующих вендоров не было. Это особенно неприятно для банковского сектора, потому что сотрудники нередко повторно используют рабочие пароли в сторонних сервисах. В таком сценарии утечка может стать не просто проблемой с платежными данными, а удобной точкой входа в корпоративную инфраструктуру, если украденные учетные записи совпадут с теми, что применяются в рабочих системах.
Sansec отдельно подчеркивает, что подобные магазины для сотрудников часто остаются на периферии стандартных аудитов безопасности. Формально это не основной банковский сайт и не интернет-банк, но на практике там все равно вводят чувствительную информацию. По мнению исследователей, именно поэтому такие площадки становятся привлекательной целью для атак на цепочку поставок и внедрения клиентских скриптов.
Технически атака выглядела как внедрение вредоносного JavaScript-кода в исходники магазина. Использовалась двухэтапная схема. Сначала небольшой загрузчик проверял, открыта ли страница оформления заказа, ориентируясь на слово checkout в адресе. Если условие выполнялось, он подгружал внешний скрипт с домена js-csp.com по пути getInjector. Для маскировки строк применялась простая обфускация через наборы кодов символов, рассчитанная на то, чтобы усложнить статический анализ.
Вторая стадия собирала содержимое всех полей ввода на странице, включая input, select и textarea. Затем данные отправлялись наружу через так называемый image beacon. В этом подходе утечка оформляется как загрузка картинки по специально сформированному URL, что помогает обходить часть сетевых ограничений и правил мониторинга. В запрос добавлялись base64-данные и источник страницы.
Sansec связывает инфраструктуру и паттерны кода с предыдущими атаками того же класса. В качестве примера приводится инцидент прошлого года, где использовался похожий путь getInjector, но на другом домене. Всего за последние 12 месяцев компания отмечает пять доменов, которые фигурировали в кампаниях с таким методом внедрения.
Отдельная деталь, которая осложнила реакцию, — это коммуникации. Sansec сообщает, что пыталась срочно уведомить банк по электронной почте и через LinkedIn. При этом организация не публикует контакт для исследователей в файле security.txt, который считается отраслевым стандартом для ответственного раскрытия уязвимостей. В результате найти правильный адрес для экстренного сообщения оказалось сложнее, чем должно быть в подобных ситуациях. По данным Sansec, вредоносный код находился на сайте около 18 часов, и на данный момент, вероятно, уже удален.