Главная
  • 19 марта 2014
  • 0
  • 524
  • Автор:

к вредоносному устройству BLE. После подключения устройство отправит некорректный GATT-пакет, что приведет к переполнению буфера в стеке.

Казалось бы, вынудить пользователя подключиться к вредоносному устройству – задача не из легких. Тем не менее, стоит учитывать тот факт, что многие BLE-приложения для Android подключаются к любому доступному устройству для того, чтобы определить, связано ли оно с тем или иным приложением. Таким образом, для успешного осуществления атаки необходимо просто запустить приложение.

Стоит отметить, что эта брешь была исправлена в Android 4.4.

Уязвимым является код в файле stack/gatt/gatt_cl.c в gatt_process_notification (строка 614). Это код для обработки пакетов-уведомлений, которые BLE-устройства периодически отправляют BLE-мастеру. В строке 626 присутствует следующий код:

STREAM_TO_UINT16 (value.handle, p);
value.len = len — 2;
memcpy (value.value, p, value.len)

value.len является uint16_t. Поскольку и p, и len подконтрольны атакующему, в данном случае нас интересует только значение len. p — это содержимое пакета, отправляемого атакующим, а len — это количество байт в пакете. Код ожидает пакет с длиной в минимум два байта. Если атакующий отправит однобайтный пакет, value.len = len — 2, что приведет к потере значимости целочисленных и значение value.len будет равно 65534. memcpy попытается скопировать около 64k из p.

Райан отметил, что Google не выпустила исправлений для Android 4.3, поэтому пользователям следует обновить платформу до версии 4.4.

Ниже все желающие могут ознакомиться с демонстрационным видео:

Показать

comments powered by HyperComments

Поделитесь страницей в социальных сетях, что бы рассказать вашим друзьям:
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Похожие статьи
Коментарии