
CVE-2021-27289: Обход защиты воспроизведения на устройствах Ksix Zigbee
Всем привет,
Думаю, профессиональным решением было бы назвать этот репозиторий именно так – ясно, описательно и по делу. Но когда я его собирал, в голову пришли и другие названия, например:
В любом случае, вот история.
Когда я готовился раскрыть новую уязвимость, я вспомнил о том, над чем работал несколько лет назад – об ошибке, которую нашел во время дипломного проекта, исследуя IoT-протоколы, такие как Thread и Zigbee. В то время я отправил отчет в MITRE, но так и не получил ответа, поэтому решил, что его просто проигнорировали.
Из любопытства я снова зашел в старый аккаунт Gmail, который использовал для отправки... и, к моему удивлению, в 2023 году – три года спустя – я увидел, что CVE всё же был присвоен.
CVE-2021-27289, связанный с уязвимостью, о которой я сообщил, будучи студентом.
Почему это заняло так много времени? Когда я впервые связался с вендором, они сказали, что у них недостаточно сотрудников, чтобы это исправить, и постоянно повторяли эту отговорку. Я сообщил MITRE, что никто, похоже, ничего не делает, так что, думаю, они ждали – вероятно, потому что проблема всё равно никогда не будет исправлена.
Ошибка затрагивала несколько IoT-устройств на базе Zigbee от компании Ksix. Основная проблема заключалась в том, что механизм защиты от воспроизведения, определенный в спецификации Zigbee и реализуемый через счетчик кадров, был реализован неправильно.
Поскольку устройства не проверяли счетчик кадров должным образом, злоумышленник мог взаимодействовать с сетью и подделывать пакеты, просто увеличив порядковый номер до значения, превышающего последнее увиденное устройством. Это позволяло повторно воспроизводить перехваченные сообщения, и они принимались как действительные – что фактически приводило к обходу аутентификации.
Этот репозиторий включает всё, над чем я работал во время дипломного проекта:
Устройства Ksix Zigbee IoT подвержены уязвимости атаки повторного воспроизведения, вызванной неправильной реализацией механизмов защиты от воспроизведения Zigbee.
Следующие версии были протестированы и признаны уязвимыми. Более поздние версии я не тестировал, поэтому они также могут быть уязвимы.
Эти продукты больше не доступны на сайте вендора или на платформах, таких как Amazon, и, по-видимому, сняты с производства.
Стек Zigbee в затронутых устройствах не обеспечивает должным образом механизм защиты от воспроизведения, который основан на поле счетчика кадров, определенном в спецификации Zigbee. Это поле предназначено для обеспечения свежести полученных сообщений и предотвращения их повторного воспроизведения.
Однако в этой реализации счетчик кадров игнорируется или проверяется некорректно. В результате злоумышленник может перехватить легитимный пакет Zigbee, увеличить его порядковый номер до более высокого значения (например, 250) и повторно воспроизвести его в сети.
Поскольку устройства проверяют только порядковый номер, они принимают сообщение как новое – что позволяет подделывать связь и выполнять несанкционированные действия без нарушения аутентификации или шифрования.
В зависимости от типа устройства и его интеграции в окружение это может вызвать ложные уведомления или поддельные состояния датчиков в приложении, которое пользователь изначально использовал для настройки сети (например, обнаружено движение, открыта дверь), хотя на самом деле ничего не произошло. В более сложных конфигурациях это может даже дестабилизировать автоматизированные сценарии или вызвать непреднамеренные действия на основе поддельных данных.
Эти устройства обычно настраиваются с помощью таких приложений, как Tuya Smart или аналогичных платформ, которые уведомляют пользователей в реальном времени при срабатывании датчика – например, когда открывается дверь или обнаруживается движение. Именно это делает следующие атаки особенно эффективными, даже если физические события никогда не происходят.