Уязвимость динамического загрузчика ld.so библиотеки glibc связана с переполнением буфера в динамической памяти. Эксплуатация уязвимости может позволить нарушителю выполнить произвольный код c повышенными привилегиями, путём запуска двоичных файлов с разрешениями SUID и создания переменной среды GLIBC_TUNABLES
Установка обновлений из доверенных источников.
В связи со сложившейся обстановкой и введенными санкциями против Российской Федерации рекомендуется устанавливать обновления программного обеспечения только после оценки всех сопутствующих рисков.
Компенсирующие меры:
- отключение неиспользуемых учетных записей, а также учетных записей недоверенных пользователей;
- минимизация пользовательских привилегий;
- включение функции безопасной загрузки в уязвимой операционной системе;
- принудительная смена паролей пользователей;
- использование антивирусных средств защиты для отслеживания попыток эксплуатации уязвимости.
Использование рекомендаций производителя:
Для glibc:
https://sourceware.org/git/?p=glibc.git;a=commit;h=1056e5b4c3f2d90ed2b4a55f96add28da2f4c8fa
Для программных продуктов Red Hat Inc.:
https://access.redhat.com/security/cve/CVE-2023-4911
Для Debian GNU/Linux:
https://security-tracker.debian.org/tracker/CVE-2023-4911
Для Ubuntu:
https://ubuntu.com/security/notices/USN-6409-1
Для Fedora:
https://bodhi.fedoraproject.org/updates/FEDORA-2023-028062484e
Для ОС АЛЬТ СП 10: установка обновления из публичного репозитория программного средства
Для ОС Альт Рабочая станция К 10:
https://packages.altlinux.org/ru/vuln/CVE-2023-4911
Минимизация последствий эксплуатации возможна путём выполнения сценария SystemTap:
1) Установка необходимых пакетов systemtap и зависимостей согласно https://access.redhat.com/solutions/5441 .
2) Создание следующего сценария systemtap с названием «stap_block_suid_tunables.stp»:
function has_tunable_string:long()
{
name = "GLIBC_TUNABLES"
mm = @task(task_current())->mm;
if (mm)
{
env_start = @mm(mm)->env_start;
env_end = @mm(mm)->env_end;
if (env_start != 0 && env_end != 0)
while (env_end > env_start)
{
cur = user_string(env_start, "");
env_name = tokenize(cur, "=");
if (env_name == name && tokenize("", "") != "")
return 1;
env_start += strlen (cur) + 1
}
}
return 0;
}
probe process("/lib*/ld*.so*").function("__tunables_init")
{
atsecure = 0;
/* Skip processing if we can't read __libc_enable_secure, e.g. core dump
handler (systemd-cgroups-agent and systemd-coredump). */
try { atsecure = @var("__libc_enable_secure"); }
catch { printk (4, sprintf ("CVE-2023-4911: Skipped check: %s (%d)", execname(), pid())); }
if (atsecure && has_tunable_string ())
raise (9);
}
3) Загрузка модуля systemtap в работающее ядро:
stap -g -F -m stap_block_suid_tunables stap_block_suid_tunables.stp
4) Проверка загрузки модуля:
lsmod | grep -i stap_block_suid_tunables
stap_block_suid_tunables 249856 0
5) После обновления пакета glibc до версии, содержащей исправление, необходимо удалить сгенерированный systemtap модуль ядра, выполнив:
rmmod stap_block_suid_tunables
Указанные шаги по устранению проблемы необходимо повторять после каждой перезагрузки операционной системы.
Для ОС РОСА "КОБАЛЬТ": https://abf.rosalinux.ru/advisories/ROSA-SA-2024-2331
Для системы управления средой виртуализации «ROSA Virtualization» : https://abf.rosalinux.ru/advisories/ROSA-SA-2024-2332
Для ОС Аврора:
https://cve.omp.ru/bb25402
| Балл | 6.8 — высокая опасность |