Тот случай, когда Android оказался круче. В BitChat нашли дыру, которая работала только на айфонах

leer en español

Тот случай, когда Android оказался круче. В BitChat нашли дыру, которая работала только на айфонах

Популярный Bluetooth-мессенджер преподнёс крайне неприятный сюрприз своей аудитории.

image

Специалисты компании BARGHEST обнаружили уязвимость в децентрализованном мессенджере BitChat, которая позволяла внедрять поддельные сообщения в Bluetooth-mesh сеть приложения. Ошибка затрагивала версию BitChat для iOS и могла использоваться для рассылки спама, подмены сообщений и нарушения работы сети без подключения к интернету.

Анализ показал цепочку ошибок, приводящую к так называемому отравлению кэша. При таком сценарии злоумышленник отправляет специально сформированный пакет данных, который клиент принимает как легитимный и сохраняет в локальном кэше. После синхронизации с другими устройствами этот пакет автоматически распространяется по всей сети.

BitChat предназначен для обмена сообщениями без центральной инфраструктуры. Устройства находят друг друга через Bluetooth Low Energy и пересылают сообщения по принципу gossip-сети, постепенно распространяя данные между участниками. Каждый узел хранит локальный кэш сообщений и делится им с новыми соседями при подключении. Именно кэш выступает ключевой точкой доверия системы: только проверенные сообщения должны попадать в него и затем передаваться другим пользователям.

В версии 1.15.0 для iOS механизм проверки работал некорректно. Клиент мог принять пакет без криптографической подписи и сохранить его в кэше. После сохранения такой пакет считался обычным сообщением и распространялся при последующей синхронизации с другими устройствами.

Атака опиралась на несколько слабых мест в обработке пакетов. Клиент доверял идентификатору отправителя, указанному внутри самого пакета, хотя такой идентификатор контролировал атакующий. В течение короткого окна синхронизации приложение ослабляло проверку временных меток, что упрощало прохождение валидации. Дополнительно существовал обход аутентификации: если параметр TTL равнялся нулю, приложение принимало пакет даже без подписи. При этом код сохранял широковещательные сообщения в кэше ещё до окончательной проверки.

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

По словам авторов исследования, после попадания вредоносного пакета в кэш дальнейшее распространение происходило автоматически. Достаточно было «отравить» один узел сети — остальные устройства получали поддельные сообщения при обмене кэшем, даже если злоумышленник уже отключился.

Ошибка не позволяла выполнять произвольный код, однако могла серьёзно подорвать надёжность офлайн-коммуникаций. В условиях отключения интернета подобные приложения используют для координации действий, поэтому поддельные сообщения и сетевой шум способны нарушить обмен информацией.

Разработчики BitChat устранили проблему в тот же день, когда получили уведомление. Исправление выпустили 28 января 2026 года. Дополнительный анализ показал, что версия приложения для Android не подвержена этой атаке: клиент строго проверяет цифровые подписи и сохраняет данные в кэш только после полной валидации.