QuickLens: атака на цепочку поставок через C2 и 1×1 GIF
Недавно внедренное расширение Google Lens под названием QuickLens оказалось в центре инцидента безопасности: через два дня после запуска оно было продано неизвестной организации и превратилось из легитимного инструмента во вредоносный продукт. Новые владельцы внедрили механизм управления, позволяющий через автоматические обновления использовать существующую базу пользователей — почти 7000 установок — для реализации удалённого контроля и эксфильтрации данных.
Что произошло
Ключевые моменты инцидента таковы:
- QuickLens был легитимным расширением при запуске, но через два дня продан третьей стороне.
- После смены владельца в расширение была внедрена вредоносная функциональность, активировавшаяся у уже установленных пользователей посредством обычных обновлений.
- Центральной частью атаки стал механизм командования и контроля (C2), через который оператор мог динамически обновлять поведение вредоносной нагрузки.
Техника атаки: как это работает
Атака использует несколько технически изощрённых приёмов, затрудняющих обнаружение:
- Расширение непрерывно опрашивает сервер C2 каждые пять минут и загружает JavaScript-код, хранящийся в виде массива в локальном хранилище под обозначением «кэшированных данных агентов». Это даёт оператору возможность удалённо менять инструкции и отслеживать удаление устройств.
- Вредоносный JavaScript никогда не присутствует в статическом исходном коде расширения — в репозитории и в CRX-файле содержится лишь функция, создающая элемент изображения.
- Для выполнения кода используется трюк с GIF размером 1×1: расширение генерирует скрытый элемент img с data URI в формате base64, что позволяет избежать явных сетевых запросов и обеспечивает немедленное выполнение.
- Атрибут onload у изображения настроен на выполнение извлечённой строки JavaScript — тактика уклонения, типичная для атак, связанных с XSS. За счёт этого вставленный код выполняется в контексте загруженной страницы.
Используя безобидные обозначения, например «extensionanalyticspro» для обозначения службы телеметрии, злоумышленники эффективно маскируют вредоносное поведение.
Последствия для пользователей и организаций
Выполнение кода в контексте страницы открывает широкий спектр рисков:
- кража токенов сеанса и авторизационных данных;
- очистка локальных данных и удаление следов компрометации;
- несанкционированная эксфильтрация конфиденциальной информации;
- построение дальнейших векторов атаки с использованием скомпрометированных аккаунтов и устройств.
Почему это важно
Инцидент демонстрирует типичную модель угрозы в экосистеме расширений: доверенное и проверенное расширение может быстро превратиться во враждебный компонент supply chains после передачи прав собственности. Поскольку вредоносная нагрузка не отражается в статическом коде, традиционные проверки целостности и статический анализ могут не сработать.
Рекомендации
Эксперты по кибербезопасности и администраторы должны учитывать следующие меры для снижения рисков:
- усилить проверку при смене владельца расширения на маркетплейсах и предусмотреть повторный аудит после продажи;
- ввести мониторинг поведения расширений в реальном времени (анализ сетевых запросов, необычной активности localStorage, частых опросов внешних C2-серверов);
- ограничить минимально необходимые разрешения для расширений и использовать политики allowlist/denylist в корпоративных средах;
- внедрять фильтрацию и инспекцию трафика, чтобы выявлять подозрительные data URI и непрямые механизмы загрузки кода;
- использовать EDR/endpoint-инструменты и решения для защиты браузера, отслеживающие исполнение скриптов в контексте страниц.
Вывод
Случай QuickLens — наглядное предупреждение: supply chains расширений являются привлекательной целью для злоумышленников, и даже краткая задержка между запуском и сменой владельца может привести к массовой компрометации. Необходим системный подход к безопасности — от процедур проверки владельцев и аудита обновлений до проактивного мониторинга поведения расширений на клиентских устройствах.
Отчет получен из сервиса CTT Report Hub. Права на отчет принадлежат его владельцу.
Ознакомиться подробнее с отчетом можно по ссылке.
