Кратко
- Если сообщение 4 четырёхэтапного рукопожатия WPA2 не дошло, точка доступа вправе снова отправить сообщение 3. Уязвимые клиенты принимали подлинную копию за новое разрешение установить уже действующий сеансовый ключ.
- Атака не узнавала пароль Wi-Fi и не извлекала согласованный ключ. Она сбрасывала номер передаваемого пакета и счётчик повторов, которые должны были двигаться только вперёд.
- Исправление сохранило надёжность: клиент может ответить на повтор, но каждый свежий ключ устанавливается единожды, а его монотонное состояние не обнуляется.
Четырёхэтапное рукопожатие WPA2 должно завершаться в среде, где кадры теряются. Получив сообщение 3, клиент устанавливает парный временный ключ и отвечает сообщением 4. Если ответ исчез, точка доступа не знает, что операция закончилась. Поэтому она повторяет предыдущее сообщение. Это штатный механизм устойчивости к потерям.
KRACK превратил его в рычаг. В схеме, представленной Mathy Vanhoef и Frank Piessens на CCS 2017, находящийся в радиусе действия атакующий занимает канальную позицию посредника, не пропускает сообщение 4 и доставляет жертве повторно переданное настоящее сообщение 3. Проверка подлинности проходит. Ошибкой было не принятие сообщения, а повторение необратимого локального эффекта.
Установка ключа не ограничивалась сохранением секрета. В некоторых реализациях она заново инициализировала nonce — номер передаваемого пакета — и счётчик повторов на приёме. Тот же секретный ключ мог снова работать с уже использованными значениями. Аутентичность сеанса сохранялась, но временной порядок, необходимый шифру, нарушался.
Отсюда следует важное ограничение формулировок. KRACK не взламывал пароль WPA2, поэтому смена пароля не устраняла уязвимость. Последствия также различались. Для CCMP исследование описывало повтор и расшифровку, но не прямую подделку произвольных кадров Wi-Fi. TKIP и GCMP могли допускать и подделку. Вмешательство в TCP или HTTP требовало подходящего трафика и дополнительных действий.
У некоторых вариантов wpa_supplicant в Linux и Android повторная установка могла привести к полностью нулевому временному ключу. Это тяжёлый, но специфический случай, а не свойство каждого устройства WPA2. Результат зависел от шифра, направления, вида рукопожатия и исполняемой реализации.
Работа выявила и границу формальных доказательств. Рассмотренные авторами модели устанавливали секретность ключа и аутентификацию сеанса, но не описывали момент установки согласованного ключа и последствия повтора этого события. Доказанный протокол и работающий автомат состояний охватывали разные поверхности.
Основное исправление разделяет ответ и фиксацию. Клиент вправе вновь послать сообщение 4 в ответ на корректный повтор сообщения 3. Он не вправе снова устанавливать сеансовый ключ. Реализация либо не сбрасывает счётчики при настройке уже использованного ключа, либо разрешает каждому свежему ключу одну установку за выполнение рукопожатия.
Формат кадров при этом не меняется. Исправленный клиент продолжает работать со старой точкой доступа: повтор виден в эфире, ответ также остаётся, а необратимым становится только локальный переход. Независимые участники могут внедрять правило без общего дня переключения.
Но перечень исправлений оказался шире одного участка кода. CERT/CC в VU#228519 собрал семейство CVE начиная с CVE-2017-13077 для разных обменов. Уведомление hostapd и wpa_supplicant разделило станции, точки доступа, быстрый переход 802.11r, групповые ключи, драйверы и прошивки. Android отнёс исправления к уровню 2017-11-06, отдельно предупредив о возможной зависимости от обновлений производителей чипсетов.
Продолжение исследования в 2018 году добавило необходимую проверку. Большинство испытанных поставщиков уже выпустило исправления, однако обнаружились остаточные ошибки и менее значимый обход для группового ключа. Бюллетень и номер версии открывают проверку, но не заменяют испытание перехода на работающем устройстве.
Общий вывод применим далеко за пределами Wi-Fi: подлинность сообщения говорит, кто его создал, но не доказывает безопасность двукратного выполнения обозначенной им операции.
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров
