Статья Уязвимость уведомлений iOS: как ФБР читало удалённые сообщения Signal через push-базу

Разбитый экран iPhone светится в темноте, трещины расходятся по дисплею. На сколотом стекле видны фрагменты уведомления мессенджера и код уязвимости.


На одном из мобильных пентестов в прошлом году я извлекал iTunes-бекап с iPhone в состоянии AFU через idevicebackup2. Стандартный набор артефактов - контакты, история Safari, база SMS - ничего необычного. А потом в выгрузке всплыла таблица с preview-текстами Signal-уведомлений. Сообщения, которые владелец настроил на самоуничтожение через 30 секунд, спокойно лежали в системной базе iOS четыре месяца. Тогда это выглядело как забавный forensic-курьёз, edge case для отчёта. В апреле 2026 года федеральный суд Техаса показал, что ФБР использует тот же механизм для чтения «удалённой» переписки подозреваемых - а Apple экстренно выпустила патч CVE-2026-28950, закрывая баг в подсистеме push-уведомлений. О баге знали forensic-специалисты. Правоохранители - молчали.
В статье используется информация из зарубежных источников.

CVE-2026-28950: анатомия бага в подсистеме уведомлений iOS​

CVE-2026-28950 - ошибка логирования в iOS и iPadOS. Описание от Apple предельно лаконичное: уведомления, помеченные для удаления, непредвиденно сохранялись на устройстве. Исправление - «improved data redaction». Патч вышел 22 апреля 2026 года в составе iOS 26.4.2, iPadOS 26.4.2, iOS 18.7.8 и iPadOS 18.7.8. По данным Xakep.ru, затронут широкий спектр устройств - от iPhone XR до iPhone 16 и iPad различных поколений.

Apple не раскрыла деталей эксплуатации и не уточнила, как долго данные сохранялись. Зато обновление вышло аккурат после публикации 404 Media, которая описала использование этого бага агентами ФБР в реальном судебном деле. Совпадение? Не думаю.

CVSS-вектор и что он значит для пентестера​

CVSS-оценка: 6.2 (MEDIUM), вектор [URL='https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N']CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N[/URL]. Разберём по частям:
  • AV:L (Local) - нужен физический доступ к устройству или его бекапу. Удалённого вектора нет.
  • AC:L (Low) - сложность низкая, хватит стандартных forensic-инструментов.
  • PR:N (None) - специальные привилегии не нужны. Устройство в AFU - данные доступны через логический бекап.
  • UI:N (None) - взаимодействие пользователя не требуется.
  • C:H (High) - конфиденциальность страдает максимально: раскрывается содержимое приватных сообщений.
  • I:N, A:N - целостность и доступность не затронуты.
CWE-359 (Exposure of Private Personal Information to an Unauthorized Actor) - iOS раскрывала содержимое сообщений через системные артефакты, которые пользователь не контролировал и о существовании которых даже не подозревал.

Федеральный суд Техаса: как уязвимость уведомлений iOS стала доказательством​

Баг всплыл не через bug bounty и не через исследовательский advisory - через судебные показания. По данным 404 Media (на которую ссылаются SecurityAffairs, Bleeping Computer и другие EN-источники), группа лиц в июле 2025 года запустила фейерверки на территории центра содержания иммигрантов Prairieland ICE в Альварадо (Техас), повредив имущество. Один из обвиняемых ранил полицейского.

ФБР извлекло входящие сообщения Signal с iPhone подсудимой Линетт Шарп (Lynette Sharp). Мессенджер к тому моменту был удалён с устройства, сообщения настроены на самоуничтожение. По данным SecurityAffairs, шифрование Signal-протокола не пострадало - содержимое вытащили из совершенно другого слоя: системной базы push-уведомлений iOS.

Критический момент: end-to-end шифрование не было скомпрометировано. Проблема в том, как iOS обращается с уже расшифрованными данными на стороне получателя. Signal сделал свою работу - iOS подвела.

Apple Push Notification Service: где утекает контент и метадата​

Чтобы понять, почему мессенджер с disappearing messages оставляет читаемые следы, нужно разобрать путь push-уведомления через APNs на уровне, который разработчиков обычно не волнует, но при forensic-анализе и мобильном пентесте iOS - решает всё.

Путь push-уведомления от сервера до Lock Screen​

Когда кто-то отправляет вам сообщение через Signal, запускается такая цепочка:
  1. Сервер Signal формирует payload и передаёт его через APNs (Apple Push Notification Service).
  2. Apple доставляет уведомление на устройство получателя через защищённый канал, привязанный к push-токену - уникальному идентификатору, связывающему конкретную установку приложения с конкретным устройством. По данным Wired, push-токены не закреплены за пользователем навсегда: новый токен генерируется при переустановке приложения или смене устройства.
  3. iOS расшифровывает payload и рендерит уведомление: выводит на Lock Screen, в Notification Center, обновляет badge count.
  4. Если в настройках включён показ содержимого (Show Previews → Always или When Unlocked), iOS сохраняет текст сообщения в системной notification database для Notification History и восстановления уведомлений после перезагрузки.
Шаг 4 - корень проблемы. iOS кеширует содержимое в структурированных SQLite-базах, которые управляются на уровне ОС, вне контроля приложения. Signal может удалить сообщение из своего интерфейса по таймеру disappearing messages - но дотянуться до записи в системной базе уведомлений он не способен. Приложение живёт в песочнице, а notification database - за её пределами.

По данным исследователя Andrea Fortuna (цитируется SecurityAffairs): «Когда кто-то отправляет вам сообщение в Signal, сервер приложения пушит уведомление через инфраструктуру Apple, которая доставляет его на ваше устройство. Если содержимое уведомления не было скрыто до доставки, текст попадает в базу уведомлений операционной системы. Исходящие сообщения, которые отправляются напрямую с устройства на сервер, никогда не проходят через этот путь и не оставляют аналогичного следа».

Почему ФБР восстановило только входящие сообщения​

В судебных показаниях уточняется: извлечены только входящие сообщения, не исходящие. Это полностью бьётся с архитектурой APNs:
  • Входящие → проходят через APNs → iOS рендерит notification → текст оседает в notification database.
  • Исходящие → уходят напрямую с устройства на сервер Signal, минуя APNs. Notification trail отсутствует.
Для оценки scope это существенно: атакующий (или следователь) получает только одну сторону переписки. Но даже односторонняя выгрузка - массив, достаточный для построения хронологии, идентификации контактов и установления содержания коммуникации. Линетт Шарп может подтвердить. В терминах MITRE ATT&CK техника ближе всего к Data from Local System (T1005, Collection): сбор данных из локальных системных артефактов.

Forensic extraction: методы извлечения артефактов push-уведомлений

Требования к окружению​

Для воспроизведения техники на мобильном пентесте:
  • Целевое устройство: iPhone или iPad с iOS ниже 26.4.2 / 18.7.8 (непатченная версия)
  • Состояние устройства: AFU (After First Unlock) - устройство было разблокировано хотя бы раз после перезагрузки. В BFU (Before First Unlock) файловая система зашифрована, большинство артефактов недоступно
  • Рабочая станция: macOS или Linux с установленным libimobiledevice (проект активно поддерживается, github.com/libimobiledevice)
  • USB-кабель и trust-пара: устройство должно быть спарено с компьютером (lockdown-сертификат)
  • Альтернатива: коммерческая forensic-платформа (Cellebrite UFED или Magnet AXIOM)

Логическое извлечение и анализ notification database​

Чистый метод - логическое извлечение через idevicebackup2 из пакета libimobiledevice. Устройство не модифицируется, юридически прозрачнее exploit-based подходов. По данным Andrea Fortuna (цитируется SecurityAffairs), именно этот путь - логическая копия в состоянии AFU с последующим анализом зашифрованного iTunes-бекапа - наиболее вероятный сценарий получения данных в деле Шарп.
Bash:
# Создание полного бекапа устройства
idevicebackup2 backup --full /path/to/backup/

# Поиск баз уведомлений в извлечённом бекапе
find /path/to/backup/ -name "*.db" \
  | xargs grep -l "notification" 2>/dev/null

# Анализ найденной базы
sqlite3 /path/to/found_notification.db ".tables"
Внутри таблиц - поля с текстом уведомления, временной меткой доставки, идентификатором приложения-отправителя и статусом прочтения. Именно здесь сообщения, помеченные Signal как «удалённые», продолжали спокойно лежать из-за CVE-2026-28950.

По данным SecurityAffairs, правоохранительные органы применяют несколько методов:

МетодИнструментЧто извлекаетОграничения
Логический бекапidevicebackup2iTunes-бекап без модификации устройстваНужна trust-пара, состояние AFU
Коммерческий forensicCellebrite UFED, Magnet AXIOMГлубокий доступ: backup + AFC + exploit-based методыСтоимость лицензии, юридические рамки
iCloud-бекапСудебный запрос к AppleОблачная копия с системными даннымиТолько по судебному ордеру

Все три метода опираются на одно: iOS сохраняет notification-артефакты за пределами контроля приложения. Forensic-инструменты работают не с шифрованием Signal, а с тем, что iOS уже расшифровала и закешировала «для удобства пользователя».

Push notification слежка: масштаб проблемы за пределами одного CVE​

CVE-2026-28950 - конкретный баг с конкретным патчем. Но Apple push notification слежка как вектор этим не ограничивается.

В декабре 2023 года сенатор Рон Уайден (Ron Wyden) направил письмо в Министерство юстиции США, раскрыв механизм surveillance через push-уведомления, который использовался правительственными структурами разных стран. По данным Wired, Уайден получил информацию об этой практике весной 2022 года и расследовал её больше года.

Механизм работает на уровне инфраструктуры, а не конкретной уязвимости:
  1. Каждому пользователю приложения присваивается push-токен, связывающий установку приложения с устройством через APNs или Firebase Cloud Messaging.
  2. Правоохранительные органы запрашивают у разработчика приложения push-токен конкретного пользователя.
  3. С токеном обращаются к Apple или Google, которые сопоставляют его с аккаунтом и устройством.
По данным Wired, доступная через этот механизм метадата включает: какие приложения использует человек, когда он получал уведомления и какой телефон связан с конкретным аккаунтом Apple или Google. ФБР использовало push-токены как минимум в одном деле, связанном с событиями 6 января 2021 года - запрашивая данные push-уведомлений у Meta через окружной суд Вашингтона.

После публикации письма Уайдена Apple обновила политику: теперь для получения записей о push-уведомлениях в США нужен судебный ордер с одобрением судьи. Раньше хватало повестки (subpoena). Google заявил, что уже требовал судебного одобрения.

Это не уязвимость iOS в техническом смысле - это архитектурная особенность push-инфраструктуры. Apple и Google оказываются посредниками с обзором того, кто какие приложения использует. По дизайну.

OPSEC для оператора: минимизация артефактов уведомлений​

Понимание APNs-уязвимости и push-surveillance даёт пентестеру два вектора: обнаружение артефактов при forensic-анализе клиентских устройств и контроль собственных следов при работе с iOS-инфраструктурой.

Контроль notification previews на уровне приложения и ОС​

Главный рубильник - настройка содержимого уведомлений. Для Signal: Signal Settings → Notifications → Notification Content → Name Only (только имя отправителя) или No Name or Content (ни имени, ни содержимого). В этом режиме iOS не получает текст сообщения в payload, и notification database не содержит контента - только факт доставки.

На уровне iOS: Settings → Notifications → Show Previews → Never - глобальная настройка для всех приложений. На рабочем устройстве, через которое идёт коммуникация с командой, это первое, что стоит проверить.

По данным разработчиков Signal (цитируются CNews и Xakep.ru), после установки патча iOS 26.4.2 / 18.7.8 ошибочно сохранённые уведомления удаляются автоматически, новые не кешируются сверх нормы.

Decision tree: когда notification database релевантна​

УсловиеДействиеОжидаемый результат
Физический доступ к непатченному устройству (< iOS 26.4.2 / 18.7.8), AFUЛогическое извлечение через idevicebackup2, анализ notification DBТексты входящих сообщений из мессенджеров
Устройство в BFU (после перезагрузки, не разблокировано)Ограниченный доступ к зашифрованным даннымБольшинство артефактов недоступно
Previews отключены (Name Only / No Content)Анализ notification DBТолько метадата без текста сообщений
Пропатченное устройство (>= iOS 26.4.2 / 18.7.8)Артефакты прошлых уведомлений удалены при обновленииСвежие уведомления не кешируются сверх штатного

Ограничения техники​

Извлечение notification-артефактов работает при одновременном соблюдении условий: непатченная iOS, состояние AFU, наличие trust-пары, включённые notification previews у целевого приложения. Выпадает хотя бы одно звено - метод бесполезен. Против устройств с Lockdown Mode (режим блокировки Apple) эффективность в контексте CVE-2026-28950 в доступных источниках не описана - тут пока белое пятно. Коммерческие forensic-платформы типа Cellebrite UFED или Magnet AXIOM могут применять exploit-based методы для обхода некоторых ограничений, но это выходит за рамки стандартного пентеста и требует отдельного юридического обоснования.

И ещё один нюанс, о котором часто забывают: речь не только о Signal. Любое приложение, отправляющее push-уведомления с текстовым содержимым - Telegram, WhatsApp, корпоративные мессенджеры - потенциально оставляло следы в тех же системных таблицах. Signal просто оказался в центре внимания из-за судебного дела, но механизм универсален для всей notification-подсистемы iOS.

CVE-2026-28950 получила CVSS 6.2 - среднюю оценку. Локальный вектор, нет удалённой эксплуатации, нет повышения привилегий. По формальным метрикам - не критическая уязвимость уведомлений iOS. Но формальная оценка и реальный импакт - разные вещи. Федеральный суд использовал эту «среднюю» уязвимость для чтения переписки, которую пользователь считал уничтоженной. Для Линетт Шарп разница между CVSS 6.2 и 9.8 не имела никакого значения - её сообщения прочитали.

Эта история вскрывает разрыв между моделью доверия пользователя и реальной архитектурой. Пользователь доверяет приложению - Signal - но приложение работает внутри среды, которую не контролирует. Signal шифрует, удаляет, обнуляет - а iOS живёт своей жизнью, кеширует данные «для удобства», и ни один мессенджер не в состоянии вычистить все слои, которые ОС создаёт самостоятельно. До апреля 2026-го об этом знали forensic-специалисты и силовые структуры. Теперь знают все. Но вряд ли что-то изменилось в привычках большинства - notification previews по умолчанию включены, и Apple не собирается менять дефолт.

Push-токены - отдельная плоскость. Даже после патча CVE-2026-28950 инфраструктурный механизм surveillance через APNs и Firebase никуда не делся. Apple и Google по-прежнему видят, кто какие приложения использует и когда получает уведомления. Судебный ордер - единственное, что стоит между этими метаданными и теми, кто хочет их получить. В 2022 году хватало повестки. Я ожидаю, что в ближайшие пару лет мы увидим новые кейсы, где notification-артефакты станут ключевым доказательством - не потому что появятся новые баги, а потому что forensic-сообщество стало лучше понимать, что именно iOS хранит «для удобства». Если хочешь покопаться в notification database на живом iOS-стенде - на HackerLab есть лаба с forensic extraction без подсказок.
 
Мы в соцсетях:

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

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab