Linux Kernel 3.10.28/3.12.9/3.13.1 net/compat.c compat_sys_recvmmsg эскалация привилегий

| CVSS Meta Temp Score | Текущая цена эксплойта (≈) | Балл интереса CTI |
|---|---|---|
| 7.0 | $0-$5k | 0.00 |
Сводка
Была найдена уязвимость, отнесённая к категории критический, в Linux Kernel 3.10.28/3.12.9/3.13.1. Неизвестная функция файла net/compat.c поражена. Манипуляция приводит к эскалация привилегий. Уязвимость зарегистрирована как CVE-2014-0038. Атака должна осуществляться локально. Кроме того, имеется доступный эксплойт. Рекомендуется установить обновление для решения этой проблемы.
Подробности
Была найдена уязвимость, отнесённая к категории критический, в Linux Kernel 3.10.28/3.12.9/3.13.1. Неизвестная функция файла net/compat.c поражена. Манипуляция приводит к эскалация привилегий. Использование CWE для описания проблемы приводит к CWE-20. Данный баг был выявлен 31.01.2014. Слабость была опубликована 28.01.2014 специалистом pageexec под идентификатором Bug 338594 как Mailinglist Post (oss-sec). Консультация доступна по адресу seclists.org.
Уязвимость зарегистрирована как CVE-2014-0038. CVE был назначен 03.12.2013. Атака должна осуществляться локально. Доступна техническая информация. Популярность этой уязвимости выше среднего. Кроме того, имеется доступный эксплойт. Эксплойт опубликован и может быть использован. Сейчас цена на эксплойт приблизительно равна USD $0-$5k. Данная уязвимость вызвана этим участком кода:
asmlinkage long compat_sys_recvmmsg(int fd,
struct compat_mmsghdr __user *mmsg,
unsigned int vlen, unsigned int flags,
struct compat_timespec __user *timeout)
{
int datagrams;
struct timespec ktspec;
if (flags & MSG_CMSG_COMPAT)
return -EINVAL;
if (COMPAT_USE_64BIT_TIME)
return __sys_recvmmsg(fd, (struct mmsghdr __user *)mmsg, vlen,
flags | MSG_CMSG_COMPAT,
(struct timespec *) timeout);
В предупреждении говорится:The timeout pointer parameter is provided by userland (hence the __user annotation) but for x32 syscalls it's simply cast to a kernel pointer and is passed to __sys_recvmmsg which will eventually directly dereference it for both reading and writing. Other callers to __sys_recvmmsg properly copy from userland to the kernel first. The impact is a sort of arbitrary kernel write-where-what primitive by unprivileged users where the to-be-written area must contain valid timespec data initially (the first 64 bit long field must be positive and the second one must be < 1G).
Указано значение Высокофункциональный. Эксплойт доступен для загрузки на сайте exploit-db.com. В 0-дневный период предполагаемая подземная цена составляла около $5k-$25k. Сканер уязвимостей Nessus предоставляет плагин с идентификатором 72591. Он принадлежит семейству Slackware Local Security Checks. Плагин работает в контексте типа l. Он использует порт 0. Коммерческий сканер уязвимостей Qualys способен проверить эту проблему с помощью плагина 166761 (OpenSuSE Security Update for Kernel (openSUSE-SU-2014:0204-1)).
Обновление уже доступно для загрузки по адресу seclists.org. Рекомендуется установить обновление для решения этой проблемы. Возможное средство устранения было опубликовано через 4 недели после раскрытия уязвимости. Данная уязвимость будет решена с помощью следующих строк кода:
--- a/net/compat.c 2014-01-20 12:36:54.372997752 +0100 +++ b/net/compat.c 2014-01-28 02:06:59.265506171 +0100В уведомлении содержится следующий комментарий:@ -780,22 +780,25@ if (flags & MSG_CMSG_COMPAT) return -EINVAL;- if (COMPAT_USE_64BIT_TIME) - return __sys_recvmmsg(fd, (struct mmsghdr __user *)mmsg, vlen, - flags | MSG_CMSG_COMPAT, - (struct timespec *) timeout); - if (timeout == NULL) return __sys_recvmmsg(fd, (struct mmsghdr __user *)mmsg, vlen, flags | MSG_CMSG_COMPAT, NULL);
- if (get_compat_timespec(&ktspec, timeout)) + if (COMPAT_USE_64BIT_TIME) { + if (copy_from_user(&ktspec, timeout, sizeof(ktspec))) + return -EFAULT; + } else if (get_compat_timespec(&ktspec, timeout)) return -EFAULT;
datagrams = __sys_recvmmsg(fd, (struct mmsghdr __user *)mmsg, vlen, flags | MSG_CMSG_COMPAT, &ktspec); - if (datagrams > 0 && put_compat_timespec(&ktspec, timeout)) - datagrams = -EFAULT; + if (datagrams > 0) { + if (COMPAT_USE_64BIT_TIME) { + if (copy_to_user(timeout, &ktspec, sizeof(ktspec))) + datagrams = -EFAULT; + } else if (put_compat_timespec(&ktspec, timeout)) + datagrams = -EFAULT; + }
return datagrams; }
The bug was introduced by commit http://git.kernel.org/linus/ee4fa23c4b (other uses of COMPAT_USE_64BIT_TIME seem fine) and should affect all kernels since 3.4 (and perhaps vendor kernels if they backported x32 support along with this code). Note that CONFIG_X86_X32_ABI gets enabled at build time and only if CONFIG_X86_X32 is enabled and ld can build x32 executables.
Уязвимость также задокументирована в других базах данных уязвимостей: SecurityFocus (BID 64781), Secunia (SA56549) и Tenable (72591).
Продукт
Тип
Поставщик
Имя
Версия
Лицензия
Веб-сайт
- Поставщик: https://www.kernel.org/
CPE 2.3
CPE 2.2
Видео

CVSSv4
VulDB Вектор: 🔍VulDB Надёжность: 🔍
CVSSv3
VulDB Meta Base Score: 7.8VulDB Meta Temp Score: 7.0
VulDB Базовый балл: 7.8
VulDB Временная оценка: 7.0
VulDB Вектор: 🔍
VulDB Надёжность: 🔍
CVSSv2
| AV | AC | Au | C | I | A |
|---|---|---|---|---|---|
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| Вектор | Сложность | Аутентификация | Конфиденциальность | Целостность | Доступность |
|---|---|---|---|---|---|
| Разблокировать | Разблокировать | Разблокировать | Разблокировать | Разблокировать | Разблокировать |
| Разблокировать | Разблокировать | Разблокировать | Разблокировать | Разблокировать | Разблокировать |
| Разблокировать | Разблокировать | Разблокировать | Разблокировать | Разблокировать | Разблокировать |
VulDB Базовый балл: 🔍
VulDB Временная оценка: 🔍
VulDB Надёжность: 🔍
NVD Базовый балл: 🔍
Эксплуатация
Класс: эскалация привилегийCWE: CWE-20
CAPEC: 🔍
ATT&CK: 🔍
Физический: Частично
Локальный: Да
Удалённый: Нет
Доступность: 🔍
Доступ: публичный
Статус: Высокофункциональный
Автор: pageexec
Язык программирования: 🔍
Скачать: 🔍
EPSS Score: 🔍
EPSS Percentile: 🔍
Прогноз цен: 🔍
Оценка текущей цены: 🔍
| 0-Day | Разблокировать | Разблокировать | Разблокировать | Разблокировать |
|---|---|---|---|---|
| Сегодня | Разблокировать | Разблокировать | Разблокировать | Разблокировать |
Nessus ID: 72591
Nessus Имя: Slackware 14.1 : kernel (SSA:2014-050-03)
Nessus Файл: 🔍
Nessus Риск: 🔍
Nessus Семейство: 🔍
Nessus Context: 🔍
Nessus Port: 🔍
OpenVAS ID: 850566
OpenVAS Имя: SuSE Update for kernel openSUSE-SU-2014:0204-1 (kernel)
OpenVAS Файл: 🔍
OpenVAS Семейство: 🔍
Qualys ID: 🔍
Qualys Имя: 🔍
MetaSploit ID: recvmmsg_priv_esc.rb
MetaSploit Имя: Linux Kernel recvmmsg Privilege Escalation
MetaSploit Файл: 🔍
Exploit-DB: 🔍
Разведка угроз
Интерес: 🔍Активные акторы: 🔍
Активные группы APT: 🔍
Контрмеры
Рекомендация: ПатчСтатус: 🔍
Время реакции: 🔍
0-дневное время: 🔍
Время экспозиции: 🔍
Задержка эксплуатации: 🔍
Патч: seclists.org
Хронология
03.12.2013 🔍28.12.2013 🔍
28.01.2014 🔍
28.01.2014 🔍
31.01.2014 🔍
03.02.2014 🔍
06.02.2014 🔍
20.02.2014 🔍
20.02.2014 🔍
22.11.2024 🔍
Источники
Поставщик: kernel.orgКонсультация: Bug 338594
Исследователь: pageexec
Статус: Подтверждённый
Подтверждение: 🔍
CVE: CVE-2014-0038 (🔍)
GCVE (CVE): GCVE-0-2014-0038
GCVE (VulDB): GCVE-100-12137
OVAL: 🔍
SecurityFocus: 64781 - Linux Kernel 'fpu-internal.h' Local Denial of Service Vulnerability
Secunia: 56549
OSVDB: 102749 - CVE-2014-0038 - Linux - Privilege Escalation Issue
scip Labs: https://www.scip.ch/en/?labs.20161013
Смотрите также: 🔍
Вход
Создано: 03.02.2014 08:57Обновлено: 22.11.2024 16:32
Изменения: 03.02.2014 08:57 (92), 29.07.2019 20:37 (6), 22.11.2024 16:32 (19)
Завершенный: 🔍
Cache ID: 216:70A:103
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.
Комментариев пока нет. Языки: ru + be + en.
Пожалуйста, войдите в систему, чтобы прокомментировать.