Ключ шифрования оказался числом 4, и «Яндекс Станции» пришлось спасать
Из-за смехотворно слабых ключей чужого удостоверяющего центра энтузиасты получили root на своих колонках, а Яндекс экстренно обновил миллионы устройств.

Яндекс рассказал, почему в конце октября миллионы «Станций» молча получили внеплановое обновление. С 21 по 23 октября прошивку обновили на всех активных колонках и на абсолютном большинстве партнёрских телевизоров с YaOS. Пользователям ничего делать не пришлось, всё встало само.
Корень истории не в Яндексе, а в индийском удостоверяющем центре eMudhra. Закрытые ключи восьми его промежуточных центров оказались смешными числами меньше 256. Один из них был буквально четвёркой. Перебрать все варианты от 1 до 255 и найти совпадение можно меньше чем за секунду. 18 октября eMudhra отозвала эти сертификаты, Google убрал к ним доверие в Chrome и Android.
Колонки Яндекса этим сертификатам доверяли. С таким ключом можно выдать себя за сервер компании и подсунуть «Станции» свою конфигурацию. Энтузиасты так и сделали на собственных колонках: подменили настройки, включили служебный отладочный интерфейс ADB и получили полные права root.
Для чужой колонки этого мало, сначала надо захватить её сетевой трафик, например взломав домашний роутер. Но теоретически дыра позволяла перехватывать данные и атаковать другие устройства в локальной сети, поэтому ждать не стали.
Обновление убирает доверие к скомпрометированным сертификатам, перезаписывает уязвимые системные файлы и закрывает доступ через ADB. Есть нюанс: полный сброс к заводским настройкам возвращает старую прошивку с дырой до следующего обновления. Яндекс советует без острой нужды колонку не сбрасывать.
Миллионы умных колонок пришлось спасать из-за чужого ключа, который подбирается быстрее, чем вы дочитали это предложение.