CVE-2011-1823
Android Android OS
2022-09-08
The vold volume manager daemon in Android kernel trusts messages from a PF_NETLINK socket, which allows an attacker to execute code and gain root privileges. This vulnerability is associated with GingerBreak and Exploit.AndroidOS.Lotoor.
Технический анализ и план устранения
Суть уязвимости
Уязвимость CVE-2011-1823 (известная по эксплойту GingerBreak) заключается в некорректной обработке сообщений демоном управления томами vold в ОС Android версий 2.2 и 2.3. Демон vold использует PF_NETLINK сокет для получения уведомлений от ядра о событиях монтирования устройств.
Проблема состоит в том, что vold не проверял происхождение (PID отправителя) входящих сообщений. Это позволяло локальному вредоносному приложению отправить специально сформированное сообщение через NETLINK сокет напрямую в vold. Поскольку vold работает с привилегиями root, манипуляция индексами массива в обработчике сообщений приводила к повреждению памяти и выполнению произвольного кода с максимальными правами в системе.
Как исправить
Основным способом исправления является обновление исходного кода компонента vold и пересборка образа системы. Необходимо добавить проверку того, что сообщение пришло именно от ядра (PID 0).
- Внесите изменения в файл
system/vold/NetlinkManager.cpp. В методе обработки сообщений необходимо добавить проверкуcredentialsотправителя:
struct ucred *cred = (struct ucred *) CMSG_DATA(cmsg);
if (cred->pid != 0) {
SLOGE("Ignoring netlink message from non-kernel (pid %d)", cred->pid);
return;
}
- Убедитесь, что сокет открыт с параметром
NETLINK_KOBJECT_UEVENTи включена опцияSO_PASSCREDдля получения метаданных об отправителе:
setsockopt(mSock, SOL_SOCKET, SO_PASSCRED, &on, sizeof(on));
- После внесения правок выполните сборку образа системы:
make systemimage
- Прошейте обновленный образ на устройство через
fastboot:
fastboot flash system system.img
Временные меры
Если обновление прошивки невозможно, рекомендуется принять следующие меры для снижения риска:
- Ограничение установки приложений: Запретите установку приложений из неизвестных источников и используйте только доверенные репозитории.
- Использование средств контроля доступа: На устройствах с поддержкой SELinux (если они были портированы на старые версии) настройте политики, запрещающие непривилегированным процессам отправку сообщений в сокеты, принадлежащие
vold. - Мониторинг процессов: Отслеживайте появление подозрительных бинарных файлов в директориях с правами на исполнение (например,
/data/local/tmp), которые часто используются эксплойтами типа GingerBreak для первичного закрепления. - Изоляция устройства: В корпоративной среде рекомендуется вывести из эксплуатации устройства на базе Android 2.3 и ниже, так как они содержат критические неисправимые уязвимости ядра.