Выполнение произвольного кода в Linux через уязвимость в USB-драйвере

8/03/2011 11:44

В USB-драйвере caiaq найдена уязвимость, позволяющая инициировать переполнение буфера и выполнение кода злоумышленника через подключение специально сконфигурированного USB-устройства к работающему под управлением Linux компьютеру. Используя данную уязвимость, злоумышленник может воспользоваться имеющимися в продаже недорогими программируемыми USB-платами для организации выполнения своего кода c правами ядра Linux в любой системе к USB-порту которой он может получить доступ. Драйвер caiaq, разработанный в рамках проекта ALSA для звуковых плат компании Native Instruments, входит в базовую поставку Linux-ядра и поставляется в составе большинства Linux-дистрибутивов, включая серверные системы. Приводящая к уязвимости ошибка представляет собой наиболее тривиальный вариант инициирования переполнения буфера, связанный с использованием для копирования содержимого строки небезопасной функции "strcpy()", вместо учитывающего длину строки варианта "strlcpy()". Эксплуатировать уязвимость можно через передачу превышающего 80 символов имени устройства в процессе обмена информацией на стадии инициализации. Уязвимость была исправлена в коде ядра в середине февраля. Исправления вошли в состав ядер 2.6.37.2 и 2.6.38-rc4-next-20110215. В выпущенном на днях обновлении ядра 2.6.32.32 присутствует исправление похожей ошибки в USB-драйвере iowarrior, поэтому не исключено, что в ближайшее время можно ожидать анонс уязвимости и в других драйверах. В качестве временной защиты рекомендуется удалить из системы драйверы "/lib/modules/2.6.*/kernel/sound/usb/caiaq/snd-usb-caiaq.ko" и "/lib/modules/2.6.*/kernel/drivers/usb/misc/iowarrior.ko".
Источник