Приложения, использующие libkvm, могут раскрыть чувствительную информацию

Kvm библиотека предоставляет единый интерфейс для того, чтобы обратиться к виртуальной памяти ядра, включая существующую систему и дамп аварийного отказа. Доступ к системе осуществляется через /dev/mem и
/dev/kmem. Функция kvm_openfilesоткрывает специальные файлы устройства /dev/mem и /dev/kmem, и возвращает непрозрачный идентификатор (opaque handle), который нужно передать к другим библиотечным функциям.

Приложения, которые хотят получить системную информацию, типа использования swap, виртуальной памяти, центрального процессора и т.д, могут использовать библиотеку kvm, чтобы читать непосредственно память ядра и собирать эту информацию. Такими приложениями должен быть выполнен set-group-ID kmem так, чтобы запрос к kvm_openfiles мог обратиться к /dev/mem и /dev/kmem.

Если приложение использует exec для запуска
другого приложения, новое приложение унаследует доступ к открытым файловым дескрипторам
— к /dev/mem и/dev/kmem. Чтобы этого не произошло, обычно дескрипторы файлов отмечают как close-on-exec, но так как идентификатор, возвращенный kvm_openfiles непрозрачен, нет
никакой возможности определить, какие дескрипторы файла были открыты
библиотекой. В результате  вызываемые программы могут получить доступ к этим дескрипторам.

Уязвимость обнаружена в FreeBSD 4.2-4.6.



Оставить мнение