В апреле 2026-го CISA дала на патч CVE-2026-34621 ровно 14 дней. К этому моменту эксплойт работал ITW минимум пять месяцев - с ноября 2025-го, по данным исследователя Haifei Li, который выловил первый сэмпл через платформу EXPMON. Два PDF-документа с русскоязычными приманками про нарушение газоснабжения, ноль срабатываний по сетевым индикаторам на VirusTotal, C2-канал через штатный механизм RSS-фидов Adobe Reader. Forensic-аналитики сходятся: целевой шпионаж против энергетического сектора.
И вот что здесь по-настоящему интересно: ни одного байта memory corruption. Вся эксплуатация - чистый logic bug, prototype pollution из мира веб-безопасности, перенесённый в десктопный PDF-ридер. DEP, ASLR, CFG - мимо.
Ниже - kill chain из ITW-сэмпла, полный набор IOC, Sigma-правила и hardening-чеклист.
Бизнес-логика: Adobe Reader RCE уязвимость в контексте целевых атак
Эксплуатация PDF документов через CVE-2026-34621 даёт атакующему исполнение произвольного кода (удалённое выполнение кода RCE) в контексте текущего пользователя с выходом из песочницы Acrobat. Один открытый PDF - и у атакующего плацдарм: чтение файлов, fingerprinting ОС, загрузка дополнительных payload'ов с C2. CVSS 8.6 (HIGH), вектор CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H. Разберём компоненты:- AV:L - эксплуатация требует локального открытия файла в Acrobat (обработка контента, не сетевого запроса к уязвимому сервису). Доставка - любым способом: email, USB, web
- PR:N - привилегии не нужны, хватает штатных прав пользователя
- UI:R - пользователь должен открыть PDF
- S:C (Changed Scope) - sandbox escape Acrobat: эксплойт выходит за пределы JavaScript-песочницы на уровень ОС
Для субъектов КИИ (энергетический сектор - прямая цель этой кампании) эксплуатация уязвимости из каталога CISA KEV при наличии доступного патча создаёт правовые риски по 187-ФЗ и требованиям ФСТЭК к безопасности значимых объектов. Проще говоря - если не пропатчили и прилетело, объясняться придётся не только с руководством.
Kill chain ITW-сэмпла: zero-day эксплуатация PDF по шагам
📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме
Stage 3 - C2 через RSS-фиды. Собранные данные (язык системы, версия Reader, ОС, путь к PDF, наличие AV) уходят на C2 через встроенный механизм RSS-фидов Acrobat. User-Agent -
Mozilla/3.0 (compatible; Adobe Synchronizer 23.8.20533), идентичен легитимному. C2-сервер фильтрует sandbox-окружения на серверной стороне - аналитическим средам возвращает пустой ответ //, реальным жертвам отдаёт AES-CTR зашифрованный payload. Красивый ход - sandbox видит "пустышку" и закрывает кейс как false positive.Stage 4 - загрузка и исполнение payload. Ответ C2 расшифровывается AES-CTR с ключевым материалом из переменных
deer/reindeer, декомпрессируется zip_inflate(), результат сохраняется в global.final_js и исполняется через eval(). Heartbeat - каждые 500 мс, до 80 попыток. При неудаче - самоочистка: удаление RSS-фидов dog1, dog2.| Тактика | Техника | ATT&CK ID | Индикатор в контексте кампании |
|---|---|---|---|
| Execution | Malicious File | T1204.002 | Пользователь открывает PDF-приманку |
| Execution | Exploitation for Client Execution | T1203 | JS-движок Acrobat исполняет эксплойт |
| Defense Evasion | Obfuscated Files or Information | T1027 | JSFuck + Base64 + AES-CTR |
| Privilege Escalation | Exploitation for Privilege Escalation | T1068 | Prototype pollution -> sandbox escape |
| Command and Control | Ingress Tool Transfer | T1105 | RSS-фид для доставки зашифрованного payload |
Три Acrobat Reader уязвимости CVE - одна цепочка Prototype Pollution
По данным анализа StarLabs и Adobe Acrobat security advisory APSB26-43, CVE-2026-34621 затрагивает версии до 26.001.21367 включительно (по данным NVD) и была устранена в следующем обновлении. Но тут есть подвох: версия 26.001.21411, закрывшая CVE-2026-34621, сама затронута CVE-2026-34622 и CVE-2026-34626 (по данным NVD, уязвимы 26.001.21411 и ранее). Нужен ещё один апдейт. Все три - CWE-1321 (Prototype Pollution), но каждая эксплуатирует отдельный примитив.CVE-2026-34621 (CVSS 8.6, CISA KEV, EPSS score 0.0709 / перцентиль 93.47). Переменная
swConn в функции SilentDocCenterLogin не объявлена как локальная - JS-движок разрешает её через цепочку прототипов. Атакующий отравляет Object.prototype.swConn подконтрольным объектом, привилегированный код Acrobat взаимодействует с ним вместо реального соединения. Через цепочку SOAP.stringFromStream -> app.trustedFunction - выполнение произвольных функций с повышенными привилегиями. Патч - одна строка: swConn стал локальной переменной. Одна. Строка.CVE-2026-34622 (CVSS 8.6). Функция
ANFancyAlertImpl подставляла ключи объекта buttons в строку кода для eval(). Через prototype pollution атакующий контролировал ключи и инжектировал JavaScript. По NVD - arbitrary code execution (вектор CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H). Патч заменил eval() на замыкания.CVE-2026-34626 (CVSS 6.3, EPSS 0.0034). Привилегированные функции (
ANShareFile, ANStartApproval, ANSendForReview и ряд других) принимали doc.path без проверки типа. Объект вместо строки подменял методы .substring(), .lastIndexOf() - их вызов на привилегированном стеке приводил к произвольному чтению файловой системы (arbitrary file system read, по NVD). Патч добавляет приведение к примитивному типу string.Принципиальный момент для detection: вся цепочка - чистый logic bug. Heap overflow PDF здесь ни при чём, memory corruption отсутствует. DEP, ASLR, CFG - нерелевантны. Детектировать нужно поведение, а не payload в памяти. Это меняет подход к мониторингу.
IOC кампании: PDF zero-day атака
Файловые IOC
| Параметр | Значение |
|---|---|
| SHA-256 (сэмпл 1) | 54077a5b15638e354fa02318623775b7a1cc0e8c21e59bcbab333035369e377f |
| SHA-256 (сэмпл 2, частично) | 65dca34b... |
| PDF Creator | PyMuPDF |
| PDF Title | Blank Page |
| PDF /Lang | en-US (при русскоязычном визуале) |
Сетевые IOC
| Тип | Значение | Контекст |
|---|---|---|
| IP | 188.214.34.20:34123 | C2, plaintext HTTP |
| IP | 169.40.2.68 | RSS-фид C2 |
| User-Agent | Mozilla/3.0 (compatible; Adobe Synchronizer 23.8.20533) | Имитация легитимной синхронизации |
| URI-паттерн | /rs1?rnd=<random>&od=422974 | Initial beacon |
| URI-паттерн | /s11?language=...&viewerType=...&osVersion=... | Fingerprint exfiltration |
Endpoint IOC
| Параметр | Значение |
|---|---|
| Registry Run Key | HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\Adobe Reader Synchronizer |
| Process tree | Acrobat.exe -> 12+ дочерних AdobeCollabSync.exe -c |
| File access | PDF-процесс читает C:\Windows\System32\ntdll.dll вне контекста загрузки модуля |
Malicious PDF detection: playbook для SIEM и EDR
Требования к окружению
- SIEM с поддержкой Sigma (Elastic SIEM 8.x+, Splunk с TA-sigma, MaxPatrol SIEM) или возможностью ручной конвертации правил корреляции
- Sysmon v14+ с конфигурацией, включающей EventID 1 (Process Create), EventID 13 (Registry SetValue), EventID 3 (Network Connection) - либо EDR с аналогичной телеметрией
- Suricata / Snort на периметре или HTTP-прокси с инспекцией User-Agent
- Доступ к историческим логам DNS и HTTP-прокси (ноябрь 2025 - апрель 2026) для ретроспективного hunting
Sigma: аномальное порождение AdobeCollabSync
Штатная работа Acrobat порождает 1-2 процесса AdobeCollabSync.exe. ITW-эксплойт порождает 12+. Разница на порядок - ловим аномалию:
YAML:
title: CVE-2026-34621 Excessive AdobeCollabSync Spawning
status: experimental
logsource:
category: process_creation
product: windows
detection:
selection:
ParentImage|endswith: '\Acrobat.exe'
Image|endswith: '\AdobeCollabSync.exe'
timeframe: 5m
condition: selection | count(Image) by ComputerName > 4
level: high
> 4 за 5 минут - компромисс между false positive и detection coverage. Если в вашей среде активно используют Shared Review, поднимите до 6-8. Агрегация в Sigma поддерживается ограниченно - правило потребует конвертации в native SIEM query (Elastic KQL, Splunk SPL и т.д.).Suricata: User-Agent Adobe Synchronizer к нестандартным адресам
Легитимный Adobe Synchronizer обращается к[I].adobe.com и [/I].adobesc.com. HTTP-запрос с таким UA к произвольному IP - аномалия:
Код:
alert http $HOME_NET any -> !$ADOBE_NET any (
msg:"CVE-2026-34621 Adobe Synchronizer to non-Adobe";
flow:established,to_server;
http.user_agent; content:"Adobe Synchronizer";
threshold:type limit,track by_src,count 1,seconds 300;
classtype:trojan-activity;
sid:2026341; rev:1;)
$ADOBE_NET определите в suricata.yaml с легитимными Adobe IP-диапазонами - она используется в destination правила как !$ADOBE_NET.Корреляция и EDR-специфика
Registry persistence (Sysmon EventID 13). Алерт на создание значенияHKCU\...\Run\Adobe Reader Synchronizer любым процессом. Штатный инсталлятор Adobe этот ключ не создаёт - его наличие однозначно указывает на compromise. Без вариантов.PDF reads ntdll.dll. Процесс
Acrobat.exe или AcroRd32.exe обращается к ntdll.dll с операцией ReadFile вне контекста загрузки модуля. Как это выглядит в разных EDR:- CrowdStrike Falcon - events
FileWritten/FileReadот процесса Acrobat - SentinelOne - Deep Visibility query по
src.process.image.path contains "Acrobat"c file event наntdll.dll - Elastic Endpoint Security (8.x+) -
event.action: file_read+process.name: Acrobat.exe+file.pathсодержащимntdll.dll
188.214.34.20 и 169.40.2.68 за период с ноября 2025. Наличие исторических коннектов от Adobe-процессов указывает на скомпрометированные хосты, даже если C2 уже недоступен. Пять месяцев - серьёзный временной окно, и если вы в энергетическом секторе, проверить стоит в первую очередь.Ограничения стандартного стека
Здесь нужно быть честными - стандартный стек detection эту штуку пропускает, и вот почему:- C2 выполняет серверную фильтрацию - sandbox-решениям (Kaspersky Sandbox, PT Sandbox, Any.Run) возвращает пустые ответы. Stage 3 и Stage 4 в автоматическом анализе могут просто не проявиться
- JSFuck-обфускация не содержит стандартных строк
eval,exec,cmd- статические анализаторы PDF с сигнатурным подходом эксплойт пропустят - User-Agent идентичен легитимному - без привязки к IP назначения отличить трафик невозможно
- Persistence через
AdobeCollabSync.exeвыглядит как штатный процесс Adobe - без baseline количества дочерних процессов алерт не сработает
Hardening-чеклист: Adobe Acrobat patch и конфигурация
Предусловия и ограничения
Применимо к: Windows 10/11, macOS - рабочие станции с Adobe Acrobat DC, Reader DC, Acrobat 2024. Проверьте терминальные серверы и Citrix-окружения - там Adobe Reader тоже нередко стоит, и про него часто забывают. Не применимо к серверным ОС без Reader и к альтернативным PDF-ридерам (Foxit, SumatraPDF - не подвержены CVE-2026-34621).- Обновить Adobe Acrobat. Для Continuous track - до версии выше 26.001.21411 (по данным NVD, 26.001.21411 и ранее затронуты CVE-2026-34622 и CVE-2026-34626). Для Classic 2024 - до версии выше 24.001.30362. Версия 26.001.21411 закрывает CVE-2026-34621, но сама затронута CVE-2026-34622 и CVE-2026-34626. Проверяйте Adobe Acrobat security advisory APSB26-43.
- Отключить JavaScript в Adobe Reader: Edit -> Preferences -> JavaScript -> снять "Enable Acrobat JavaScript". Да, сломает интерактивные формы. Зато полностью устраняет весь класс PDF exploit уязвимостей через JS-движок.
- Заблокировать User-Agent
Adobe Synchronizerна прокси и NGFW для трафика к адресам за пределами[I].adobe.comи[/I].adobesc.com. - Добавить C2 IP в blocklist:
188.214.34.20,169.40.2.68- на firewall и HTTP-прокси. - Настроить мониторинг registry-ключа
HKCU\...\Run\Adobe Reader Synchronizer- его создание = compromise. - Активировать Protected View: Edit -> Preferences -> Security (Enhanced) -> Enable Protected Mode at startup + Protected View for all files.
- Ретроспективный hunting по логам за ноябрь 2025 - апрель 2026: сетевые соединения от Adobe-процессов к IOC-адресам, URI-паттерны
/rs1?и/s11?, нестандартные порты отAcrobat.exe.
Вот что настораживает по итогу разбора: вся эксплуатация - три чистых logic bug, ноль memory corruption. Prototype pollution, подмена свойств объектов, инъекция через
eval() - техники из мира веб-безопасности, перенесённые в десктопный PDF-ридер. DEP, ASLR, CFG, на которые мы полагаемся 15 лет - здесь бесполезны. Атакующий не трогает память, не распыляет heap, не перезаписывает указатели. Он просто отравляет прототип JavaScript-объекта - и получает исполнение кода на привилегированном стеке вызовов.ITW-кампания отработала пять месяцев без единого срабатывания на сетевых индикаторах. Причина банальна: SOC-команды привыкли считать Adobe Reader «безопасным» приложением, не требующим поведенческого мониторинга. Ни baseline на количество дочерних процессов, ни контроль User-Agent от доверенных приложений, ни мониторинг чтения системных DLL из контекста PDF-ридера. Если ваш detection-стек заточен исключительно под memory-based exploit chain, PDF с prototype pollution пройдёт насквозь.
Разбирать exploit primitives вроде prototype pollution и patch diffing - навык, который нужен не только offensive-специалистам, но и тем, кто строит detection. На codeby.school есть курс Reverse Engineering, где анализ подобных уязвимостей в клиентском ПО разбирается от patch diff до trigger PoC.
Последнее редактирование модератором: