Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
WhisperPair — Официальная эталонная реализация и проверка уязвимости нашей атаки WhisperPair (CVE-2025-36911), которая затрагивает протокол Google Fast Pair. | Kitploit
Инструменты/GitHubGitHub/kuleuven-cosic/whisperpair
Безопасность BluetoothАнализ уязвимостейЭксплуатацияБезопасность беспроводных сетейТестирование на ПроникновениеБезопасность оборудования и IoTСтатьи и ИсследованияОбучение и Образование
GitHubkuleuven-cosic/whisperpair

WhisperPair

Официальная эталонная реализация и проверка уязвимости нашей атаки WhisperPair (CVE-2025-36911), которая затрагивает протокол Google Fast Pair.

Репозиторий
80102 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Сайт

WhisperPair: испытательный стенд для Google Fast Pair

Venue License: CC BY 4.0 OS Hardware Website

Практический инструмент для проверки того, уязвимы ли устройства Google Fast Pair к атакам на сопряжение, привязку учётной записи и атакам на уровне протокола.

В этом репозитории представлен испытательный стенд WhisperPair — инструмент для оценки безопасности устройств Google Fast Pair. Он предназначен как для исследователей, так и для практиков, позволяя воспроизвести наши результаты и протестировать собственные устройства.

Обзор проекта, затронутые устройства и дополнительные сведения см. на нашем веб-сайте.

Этот репозиторий также содержит артефакт к статье One Tap to Hijack Them All: A Security Analysis of the Google Fast Pair Protocol, представленной на IEEE S&P 2026.

Цитирование

Полную версию статьи можно найти здесь. Если эта работа окажется для вас полезной, пожалуйста, рассмотрите возможность цитирования статьи:

root@kitploit:~
@inproceedings{whisperpair2026,
  title     = {One Tap to Hijack Them All: A Security Analysis of the Google Fast Pair Protocol},
  author    = {Duttagupta, Sayon and Wyns, Seppe and Antonijević, Nikola and Singelée, Dave and Preneel, Bart},
  booktitle = {2026 IEEE Symposium on Security and Privacy (S\&P)},
  year      = {2026},
}

Отказ от ответственности и ответственное использование

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

Установка и требования

[!NOTE] Кратко: убедитесь, что у вас есть машина с Linux и Bluetooth-адаптером, а также установлены Node.js (LTS) и pnpm.
Вы можете запустить и интерфейс, и сервер на одной машине, выполнив bash build.sh, а затем bash start.sh.

Этот репозиторий содержит испытательный стенд для оценки того, корректно ли целевое устройство реализует определённые требования безопасности Google Fast Pair. Стенд позволяет проверить, корректно ли реализован предикат состояния сопряжения, отклоняются ли сообщения с повторно используемыми nonce, а также уязвимо ли устройство к атаке на недопустимую кривую. Стенд состоит из серверной части и веб-интерфейса.

[!NOTE] Если вас интересует именно реализация атак: ./toolkit-server/src/fast-pair-service.ts и ./toolkit-server/src/protocol.ts содержат реализацию атак и протокола Fast Pair.

Инструментарий состоит из двух компонентов: сервера и интерфейса.
Сервер необходимо запускать в системе Linux; он протестирован на Raspberry Pi 4.
Интерфейс — это фронтенд на Next.js, который используется для управления сервером; его можно запускать везде, где поддерживается Node.js. Интерфейс должен иметь возможность подключаться к серверу по сети.

Мы тестировали стенд на Raspberry Pi OS Lite (64-bit) (6.12.47+rpt-rpi-v8) с BlueZ версии 5.82.

Предварительные требования

Машина с Linux, на которой установлены BlueZ, Node.js и pnpm.

Node.js

Мы настоятельно рекомендуем использовать текущую версию Node.js с долгосрочной поддержкой (LTS) — v24.14.0.
Мы гарантировали, что инструментарий работает именно с этой версией. Более старые версии могут работать вплоть до v18, но, скорее всего, будут аварийно завершаться или давать непредвиденные результаты.

nvm.sh

Если вы используете nvm для управления установленными версиями Node.js, убедитесь, что root также имеет доступ к версии Node.js, управляемой через nvm.
Как объясняется в этом ответе на StackOverflow, возможно, потребуется создать новую символическую ссылку.

root@kitploit:~
# Source - https://stackoverflow.com/a/40078875
# Posted by SimpleJ, modified by community. See post 'Timeline' for change history
# Retrieved 2026-03-30, License - CC BY-SA 4.0

sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/node" "/usr/local/bin/node"
sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/npm" "/usr/local/bin/npm"
sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/npx" "/usr/local/bin/npx"

[!NOTE] Для запуска сервера достаточно связать только node.

Если Node.js также установлен с помощью внешнего менеджера пакетов, версия, доступная через sudo, может отличаться от версии, используемой nvm.
Проверить это можно, сравнив вывод команд node -v и sudo node -v.
Хотя мы рекомендуем Node.js LTS v24, сервер должен корректно работать вплоть до v18.

pnpm

Если установлен Node.js v24 LTS, вы сможете включить pnpm следующей командой:

root@kitploit:~
corepack enable

Дополнительные инструменты

Стенд также требует hcitool и l2ping.
В зависимости от вашего дистрибутива Linux hcitool может быть недоступен; возможно, вам придётся установить bluez-deprecated-tools.
На момент написания (1 октября 2025 г.) он остаётся предустановленным в последней версии Raspberry Pi OS Lite.

Если Bluetooth-адаптер не включён, сервер попытается включить его с помощью rfkill.
Для тестирования расширения Audio Switch требуется rfcomm.

[!NOTE] При запуске сервер проверит доступность этих инструментов. Дополнительная информация о функциях, которые могут быть недоступны, будет выведена в консоль.

Для воспроизведения результатов необходим физический доступ к уязвимому устройству.
Имейте в виду, что большинство производителей выпустили обновления программного обеспечения для WhisperPair, поэтому вам могут понадобиться устройства с устаревшей прошивкой.
См. Выбор устройства для получения дополнительной информации об устройствах, использованных в нашей оценке.

Быстрая установка

Если вы хотите запустить интерфейс и сервер на одной (Linux) машине, вы можете воспользоваться скриптами build.sh и start.sh.
Сначала установите необходимые зависимости и соберите компоненты с помощью:

root@kitploit:~
bash build.sh

Убедитесь, что Bluetooth включён:

root@kitploit:~
sudo rfkill unblock bluetooth

Затем запустите интерфейс и сервер с помощью:

root@kitploit:~
bash start.sh

Теперь интерфейс должен быть доступен по адресу http://localhost:3000.

Запуск интерфейса и сервера на разных хостах

Вы можете запускать интерфейс и сервер на разных хостах.
Это позволяет запускать сервер на машине с Linux, а интерфейс — локально.
Хотя это не рекомендуется, сделать это можно следующим образом:

  1. Убедитесь, что каталог toolkit-server доступен на машине с Linux
  2. Соберите toolkit-server, выполнив bash build.sh
  3. Обновите файл .env в каталоге toolkit-ui, чтобы переменная SERVER_URL указывала на URL сервера. Вы можете выполнить bash update_server_url.sh <YOUR_URL>, чтобы обновить файл .env автоматически.
  4. Соберите toolkit-ui, выполнив bash build.sh
  5. Запустите toolkit-server, выполнив bash start.sh
  6. Запустите toolkit-ui, выполнив bash start.sh

Теперь интерфейс должен быть доступен по адресу http://localhost:3000.

Установка сервера вручную

В качестве альтернативы использованию скриптов build.sh и start.sh вы можете также собрать и запустить сервер вручную. Подробные инструкции по выполнению этих шагов приведены в toolkit-server README

Установка интерфейса вручную

В качестве альтернативы использованию скриптов build.sh и start.sh вы можете также собрать и запустить интерфейс вручную. Подробные инструкции по выполнению этих шагов приведены в toolkit-ui README

Использование

Выбор устройства

Для выполнения атак и использования инструментария вам понадобится аксессуар, совместимый с Fast Pair.
Мы оценили 25 устройств от 16 производителей, перечисленных в таблице ниже. Если у вас есть одно из этих устройств и его прошивка не обновлялась с сентября 2025 года, вы сможете воспроизвести наши результаты.

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

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

Если вы ищете устройства, совместимые с Fast Pair, вы можете воспользоваться списком Model ID, чтобы просмотреть все сертифицированные Fast Pair устройства.

Предупреждение Model not included in test set

Интерфейс отобразит предупреждение, если вы выбрали устройство, которое не входило в наш тестовый набор.
Это сообщение показывается на основе Model ID, который для одного и того же устройства может различаться в зависимости от цвета и региона.
Например, синие наушники Sony WH-1000XM6 используют другой Model ID, чем чёрные Sony WH-1000XM6.

Поскольку эти устройства, скорее всего, имеют одинаковую прошивку (даже несмотря на разные Model ID), это предупреждение можно безопасно игнорировать.

Сообщение об ошибке No device with Model ID <number> was found

Из-за более строгих ограничений частоты запросов, введённых Fast Pair gRPC API, некоторые запросы данных о модели могут возвращать успешные ответы с пустым телом. В этом случае интерфейс отобразит No device with Model ID <number> was found.
Если вы уверены, что введённый вами Model ID существует, подождите несколько минут и повторите попытку.

[!NOTE] Данные о моделях устройств из нашего тестового набора включены в этот репозиторий и будут считываться из кэша. Для оценки этих устройств не требуется вызовов API к gRPC-сервису. Обратите внимание, что устройства одной серии могут иметь разные Model ID. См. предупреждение «Model not included in test set» для получения дополнительной информации.

Руководство по интерфейсу

Интерфейс инструментария

При запуске интерфейс попытается подключиться к серверу.
При успешном подключении в правом нижнем углу экрана появится сообщение «Connected to the server».

Оценка уязвимости устройства требует трёх шагов: обнаружение устройства, установка его Model ID и запуск атаки.

1. Обнаружение устройств

Стенд непрерывно сканирует устройства Bluetooth Low Energy, которые отображаются в левой части экрана. Устройства, передающие данные Fast Pair, показываются вверху. Сведения об устройстве отображаются в правой части экрана после нажатия кнопки «Select» на устройстве.

2. Установка Model ID

Для запуска тестов, описанных в статье, необходимо установить Model ID для устройства. Если устройство предоставляет характеристику Fast Pair GATT, в сведениях об устройстве появится кнопка «Read Model ID». Нажатие этой кнопки попытается считать Model ID.

Обратите внимание, что многие устройства реализуют эту характеристику некорректно и возвращают недействительные Model ID. В качестве альтернативы вы можете вручную задать Model ID устройства, нажав кнопку «Set Model ID» и введя значение вручную. Можно выбрать устройства, которые оценивались в ходе наших тестов, или ввести произвольное значение. Полный список устройств, совместимых с Fast Pair, находится в корне этого репозитория.

После установки Model ID в сведениях об устройстве будет показана метаинформация о нём.

3. Запуск атаки

Чтобы запустить атаку, нажмите кнопку «Attack» на панели сведений об устройстве. Реализованы три атаки: проверка соблюдения предиката состояния сопряжения, повторное использование nonce и атака на недопустимую кривую. Если вы уже подключены к устройству, установка флажка «Reconnect» приведёт к отключению и повторному подключению к устройству перед выполнением атаки.

Проверка соблюдения предиката состояния сопряжения предлагает несколько дополнительных параметров конфигурации:

  • Switch back («переключить обратно»): пытается переключиться обратно на исходный хост с помощью функции Audio Switch, если она поддерживается.
  • Bond («сопряжение»): выполняет сопряжение BR/EDR, если предикат состояния сопряжения не соблюдается.
  • Write account key («записать ключ учётной записи»): записывает (жёстко заданный) ключ учётной записи после процедуры сопряжения.

Пока выполняется атака, в интерфейсе в реальном времени отображаются логи. После завершения атаки будет показана её продолжительность.

Управление задачами

Иногда атака или сопряжение может занять больше времени, чем ожидалось.
Вы можете отменить атаку или сопряжение, нажав кнопку «Cancel» в соответствующем диалоговом окне. Если вы перезагрузили интерфейс во время атаки или сопряжения, вы можете воспользоваться диспетчером задач для отмены.

В правом верхнем углу экрана вторая кнопка справа отображает статус задач. Если активных задач нет, на ней будет написано «No active tasks». В противном случае на ней будет написано «Task in progress». Чтобы отменить задачу, нажмите кнопку «Task in progress», а затем кнопку «Cancel».

Если сервер завис из-за незавершённой задачи, которую невозможно отменить, попробуйте сбросить Bluetooth-адаптер.

[!NOTE] Отмена задач может занимать до 20 секунд.

Устранение неполадок

В некоторых случаях Bluetooth-адаптер может «застрять» в «некорректном состоянии». Самое простое решение этой проблемы — сброс Bluetooth-адаптера. Чтобы выполнить сброс, откройте меню устранения неполадок, нажав значок гаечного ключа в правом верхнем углу экрана. Затем выберите «Reset BLE adapter» и подтвердите сброс, нажав «Reset» в диалоговом окне.

Если произойдёт фатальная ошибка и серверу придётся завершить работу, скрипт start.sh автоматически перезапустит сервер.

В сценариях с большим количеством находящихся поблизости BLE-устройств сервер может неожиданно завершить работу из-за ошибки D-Bus. Это происходит очень редко, и в таких случаях скрипт ./start.sh должен автоматически перезапустить сервер.

Результаты и протестированные устройства

Если вы ищете устройства, совместимые с Fast Pair, вы можете воспользоваться списком Model ID, чтобы просмотреть все сертифицированные Fast Pair устройства.

Благодарности

Эта работа была поддержана правительством Фландрии в рамках Программы исследований в области кибербезопасности (грант № VOEWICS02).

Скачать инструмент
ПроизводительНазвание устройстваModel IDУязвимость к захватуВремя до захвата (с)Уязвимость к повторному использованию nonceУязвимость к атаке на недопустимую кривую
AppleBeats Solo Buds6980580НетДаНет
GooglePixel Buds Pro 212934265Да6.89НетНет
JabraElite 8 Active3778746Да32.01НетНет
JBLTune Beam3293323Да6.91Только в рамках той же сессииНет
MarshallMOTIF II A.N.C.15473012Да9.49ДаНет
NothingEar (a)8625818Да38.80Только в рамках той же сессииНет
OnePlusNord Buds Pro 313394952Да10.19Только в рамках той же сессииНет
HPPoly VFree 6015984097НетНетНет
RedmiBuds 5 Pro11155060Да8.32Только в рамках той же сессииНет
SoundcoreLiberty 4 NC5409858Да15.27ДаНет
SonyWF-1000XM512499626Да9.43ДаНет
Audio-TechnicaATH-M20xBT13285048НетТолько в рамках той же сессииНет
BoseQuietComfort Ultra5723549НетНетНет
JBLLive 775 NC14502233Да7.62Только в рамках той же сессииНет
MarshallMajor V12915160Да11.70Только в рамках той же сессииНет
SonosAce V7340495НетНетНет
SonyWH-1000XM413386638Да9.69ДаНет
SonyWH-1000XM513911719Да12.38ДаНет
SonyWH-1000XM66360443Да12.94Только в рамках той же сессииНет
SonyWH-CH720N16003068Да7.46ДаНет
Bang & OlufsenBeosound A12431472НетНетНет
JabraSpeak2 55 UC9888885НетНетНет
JBLClip 51917389Да36.19ДаНет
JBLFlip 67278954НетНетНет
LogitechWonderboom 411575855Да11.96Только в рамках той же сессииНет