Красная кнопка не была последним словом
Критическая уязвимость в инфраструктуре звонков Signal, а именно в библиотеке RingRTC, могла помешать полному завершению вызова, из-за чего аудио- и потенциально видеопотоки продолжали передаваться другому участнику. Пользователи, нажавшие кнопку завершения, могли полагать, что звонок окончен, в то время как их микрофон и камера оставались активными. Эта уязвимость, зарегистрированная как CVE-2026-113380 с оценкой CVSS 4.0 9.3 (критическая), создавала риск скрытого наблюдения.
Для эксплуатации злоумышленник должен был уже находиться в звонке; это не был механизм, позволяющий посторонним начать скрытое прослушивание или массово скомпрометировать аккаунты Signal. Масштаб ошибки был строго ограничен процессом завершения вызова, что означает, что сообщения Signal, инфраструктура аккаунтов и надежное сквозное шифрование остались незатронутыми. Нет никаких доказательств того, что эта уязвимость использовалась в реальных условиях.
Основная проблема заключалась в очереди конечного автомата (FSM) RingRTC, в которой отсутствовало ограничение частоты входящих событий от собеседника и приоритетный канал для сигналов завершения. Злоумышленник мог переполнить эту очередь, блокируя локальное событие завершения вызова и поддерживая активность медиапотоков. Signal устранила проблему 4 сентября, внедрив исправление, гарантирующее полное завершение звонков, после чего последовало тихое развертывание обновлений для Android, iOS и десктопных клиентов до того, как CVE была публично присвоена 20 октября.
Как переполненная очередь могла помешать завершению вызова
Библиотека звонков с открытым исходным кодом RingRTC от Signal обеспечивала работу голосовых и видеозвонков на Android, iOS и десктопах. Сообщенная причина этой критической уязвимости, зарегистрированной как CVE-2026-113380, заключалась в ограниченной очереди событий конечного автомата RingRTC, которая имела емкость 256 записей.
Такая архитектура создала критическую «слепую зону». События, генерируемые собеседником, могли легко переполнить очередь, в то время как локальное завершение вызова — нажатие пользователем красной кнопки — не имело приоритета. Вместо этого событие завершения ожидало в очереди за обычными событиями вызова, будучи не в состоянии принудительно завершить соединение.
Если процесс завершения зависал, поток с микрофона и, возможно, с камеры оставался активным для другого участника. Удаленный собеседник мог фактически предотвратить полное завершение звонка, оставляя аудио и видео активными. Эта уязвимость получила оценку CVSS 4.0 9.3, что указывает на ее критическую степень опасности. Хотя это вызывает тревогу, нет никаких доказательств эксплуатации в реальных условиях, и для срабатывания уязвимости требовалось участие активного собеседника.
Тихое исправление, а затем публичное предупреждение
Signal внесла исправление в RingRTC 4 сентября с удивительно скромной записью в журнале изменений: «обеспечить полное завершение звонков в крайних случаях». Это исправление, которое добавило независимую обработку завершения и жесткий тайм-аут, было развернуто в сборках для Android, iOS и десктопов в последующие недели. Хотя это тихое обновление может вызвать вопросы о прозрачности, это не является доказательством недобросовестности; быстрое, неанонсированное исправление критических уязвимостей является стандартной практикой перед публичным раскрытием.
Полная картина прояснилась 20 октября, когда CVE-2026-113380 стала публичной. Эта критическая уязвимость (CVSS 9.3) подтвердила серьезность ошибки завершения вызова, оправдав тихое развертывание. RingRTC 2.72.0 и более поздние сборки Signal содержат исправление, предотвращающее блокировку событий завершения из-за переполненной очереди. Для получения более подробной технической информации о библиотеке обратитесь к репозиторию signalapp/ringrtc на GitHub.
Пользователям следует немедленно обновить Signal на всех платформах — Android, iPhone и настольных компьютерах, — чтобы гарантировать, что вызовы действительно завершаются при нажатии на красную кнопку. Хотя нет никаких доказательств эксплуатации этой уязвимости в реальных условиях, и проблема затрагивала только активных участников вызова, этот инцидент подчеркивает повторяющуюся проблему в коммуникациях в реальном времени: создание надежной функции завершения вызова сложнее, чем кажется. FaceTime и Google Duo сталкивались с похожими проблемами.
Нравится статья? Получайте такие каждое утро на почту.
одно письмо в день · отписка в два клика · без сторонних трекеров
Самая сложная часть вызова — это его завершение
Этот эпизод с RingRTC служит суровым напоминанием: завершение вызова — это удивительно сложный и критически важный с точки зрения безопасности переход состояния. Это перекликается с прошлыми инцидентами, когда приложения для общения спотыкались на финишной прямой или даже до начала гонки. В 2019 году в FaceTime от Apple была обнаружена критическая уязвимость, которая позволяла прослушивать аудио с устройства получателя до того, как он ответит, что вынудило Apple отключить Group FaceTime до устранения проблемы.
В том же году Project Zero от Google выявил уязвимости при установлении соединения в Signal для Android, Google Duo и Facebook Messenger. Те ранние ошибки позволяли вызывающим абонентам принудительно устанавливать соединение. Однако эта ошибка в RingRTC представляет собой отдельную проблему: сбой завершения соединения (teardown failure), при котором кнопка «повесить трубку», задуманная как окончательный выключатель, блокировалась перегруженной очередью событий.
Инженерный урок ясен: настройка и завершение работы — это крайне уязвимые фазы в протоколах связи реального времени. Удаленные узлы могут генерировать события, часто непредсказуемо, и эти события не должны препятствовать критическим функциям безопасности. Разработчики должны относиться к функции завершения вызова (hang-up function) как к защищенному высокоприоритетному выключателю. Пользователям, в свою очередь, следует выработать привычку проверять индикаторы микрофона и камеры на своем мобильном устройстве после каждого вызова, чтобы убедиться, что разговор действительно завершен.
Часто задаваемые вопросы
В чем заключалась уязвимость вызовов в Signal?
Ошибка в RingRTC могла позволить кому-то, кто уже находится в вызове, переполнить очередь событий и помешать пользователю полностью завершить вызов нажатием кнопки.
Мог ли посторонний использовать ошибку вызова Signal для прослушивания?
Нет. Для использования уязвимости злоумышленник должен был уже быть участником активного вызова; она не позволяла случайным посторонним лицам подслушивать разговоры.
Были ли затронуты сообщения или шифрование Signal?
Нет. Сообщенная проблема касалась завершения вызова и потоков мультимедиа, а не шифрования сообщений, учетных записей или баз данных Signal.
Как пользователи Signal могут защитить себя?
Обновите Signal на всех устройствах до последней доступной версии. На мобильных устройствах проверяйте индикаторы конфиденциальности микрофона и камеры после завершения вызова.

