Skip to content
industry insights

У кнопки завершения вызова в Signal была критическая «слепая зона»

Красная кнопка должна завершать приватный разговор, и самая показательная улика скрывалась в обычном примечании к обновлению. Этот инцидент показывает, почему последний момент звонка может быть самым уязвимым.

Cassidy Wolfe
У кнопки завершения вызова в Signal была критическая «слепая зона»

Красная кнопка не была последним словом

Критическая уязвимость в инфраструктуре звонков 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 на всех устройствах до последней доступной версии. На мобильных устройствах проверяйте индикаторы конфиденциальности микрофона и камеры после завершения вызова.

Found this useful? Share it.

For builders

Want Stork to write one of these about your product?

Send us a URL. We use the product, form a view, and publish what we actually think — in 8 languages, labeled Sponsored, with no copy approval on your side. That last part is what makes it worth quoting.

See how it works$199 · AI tools & software only

Для билдеров

Эта страница работает на чужой инструмент.

Её читают AI-агенты. На неё приходят покупатели. Она отвечает на восьми языках и через MCP. У вашего инструмента может быть такая же — в эфире за 24 часа.