Описание: |
Procfs - процесс файловой системы, который представляет интерфейс файловой
системы системной таблице процесса, вместе со связанными данными. Procfs
обеспечивает доступ к пространству памяти процессов через синтетический /proc /
<pid>/mem файл, подчиненным проверкам управления доступом.
До перемещения системы, контролирующей утилиты (типа ps (8)) чтобы использовать
sysctl (8) интерфейс управления, эти утилиты прежде использовали procfs и прямой
доступ к памяти ядра, чтобы извлечь информацию процесса, и они выполнялись с
setgid kmem привилегиями. Procfs проверяет код для gid kmem привилегии при
предоставлении доступа к файлу /proc/<pid>/mem - однако, код, который
используется, чтобы позволить доступ только для чтения через kmem группу,
неправильный, так как предоставляет доступ для чтения вызывающей программе, в
течении открытого дескриптора для файла procfs mem.
Результат этой проблемы - то, что, если процесс первоначально имеет права
отладки на второй процесс, то он может сохранить доступ к пространству памяти
целевого процесса, даже если целевой процесс модернизировал привилегию на
основании выполнения вызова execve() на setgid или setuid процесс. Эта
уязвимость может вести к утечке чувствительной информации от таких процессов,
которые могли использоваться как основание для дополнительных нападений, приводя
к подъему привилегии нападающего.
Файловая система Linprocfs также уязвима к этой проблеме, если поддержка procfs
доступна в ядре (статически откомпилированная или динамически загруженная как
модуль). Если поддержка procfs - не доступна тогда linprocfs - не уязвим к этой
проблеме. Все выпущенные версии FreeBSD 4.x, включая FreeBSD 4.3-release уязвимы
к этой проблеме, если файловая система procfs находится в использовании.
|