Статья CVE-2026-34621 Adobe Acrobat Reader: kill chain zero-day, IOC и detection playbook

Разорванный конверт из фрагментов PDF с кодом на поверхности лежит на чёрном мате. Внутри светится красная иконка RSS — символ перехваченного канала управления.


В апреле 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 присвоила решение SSVC "Act" (патчить немедленно): exploitation - active, automatable - no, technical impact - total. EPSS score - 0.0709 (7% абсолютная вероятность эксплуатации в ближайшие 30 дней), перцентиль 0.9347 (выше, чем у 93% всех CVE в базе). Классификация уязвимости - CWE-1321 (Improperly Controlled Modification of Object Prototype Attributes, Prototype Pollution).

Для субъектов КИИ (энергетический сектор - прямая цель этой кампании) эксплуатация уязвимости из каталога CISA KEV при наличии доступного патча создаёт правовые риски по 187-ФЗ и требованиям ФСТЭК к безопасности значимых объектов. Проще говоря - если не пропатчили и прилетело, объясняться придётся не только с руководством.

Kill chain ITW-сэмпла: zero-day эксплуатация PDF по шагам​

1783849790186.webp

📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом 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Индикатор в контексте кампании
ExecutionMalicious FileT1204.002Пользователь открывает PDF-приманку
ExecutionExploitation for Client ExecutionT1203JS-движок Acrobat исполняет эксплойт
Defense EvasionObfuscated Files or InformationT1027JSFuck + Base64 + AES-CTR
Privilege EscalationExploitation for Privilege EscalationT1068Prototype pollution -> sandbox escape
Command and ControlIngress Tool TransferT1105RSS-фид для доставки зашифрованного 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 атака​

1783849814600.webp

Файловые IOC

ПараметрЗначение
SHA-256 (сэмпл 1)54077a5b15638e354fa02318623775b7a1cc0e8c21e59bcbab333035369e377f
SHA-256 (сэмпл 2, частично)65dca34b...
PDF CreatorPyMuPDF
PDF TitleBlank Page
PDF /Langen-US (при русскоязычном визуале)

Сетевые IOC

ТипЗначениеКонтекст
IP:Port188.214.34.20:34123C2, plaintext HTTP
IP169.40.2.68RSS-фид C2
User-AgentMozilla/3.0 (compatible; Adobe Synchronizer 23.8.20533)Имитация легитимной синхронизации
URI-паттерн/rs1?rnd=<random>&od=422974Initial beacon
URI-паттерн/s11?language=...&viewerType=...&osVersion=...Fingerprint exfiltration

Endpoint IOC

ПараметрЗначение
Registry Run KeyHKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\Adobe Reader Synchronizer
Process treeAcrobat.exe -> 12+ дочерних AdobeCollabSync.exe -c
File accessPDF-процесс читает 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
DNS / HTTP-прокси (ретроспектива). Ищите обращения к 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 количества дочерних процессов алерт не сработает
Именно поэтому кампания отработала пять месяцев без единого обнаружения. Не потому что SOC плохо работал - потому что detection-стек не был заточен под поведенческий анализ "доверенных" приложений.

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).
  1. Обновить 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.
  2. Отключить JavaScript в Adobe Reader: Edit -> Preferences -> JavaScript -> снять "Enable Acrobat JavaScript". Да, сломает интерактивные формы. Зато полностью устраняет весь класс PDF exploit уязвимостей через JS-движок.
  3. Заблокировать User-Agent Adobe Synchronizer на прокси и NGFW для трафика к адресам за пределами [I].adobe.com и [/I].adobesc.com.
  4. Добавить C2 IP в blocklist: 188.214.34.20, 169.40.2.68 - на firewall и HTTP-прокси.
  5. Настроить мониторинг registry-ключа HKCU\...\Run\Adobe Reader Synchronizer - его создание = compromise.
  6. Активировать Protected View: Edit -> Preferences -> Security (Enhanced) -> Enable Protected Mode at startup + Protected View for all files.
  7. Ретроспективный 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.
 
Последнее редактирование модератором:
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🧭 Навигатор · ИБ 2026
Не знаешь, какой трек твой?
5 направлений ИБ, реальные зарплаты и точка входа для каждого — в одном треде.
JuniorSenior+
100K → 600K+ ₽ /мес
Открыть навигатор →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab