LINUX.ORG.RU
ФорумTalks

PinTheft - новая уязвимость класса Copy Fail дающая права root

 


0

3

Локальный пользователю может получить права root, перезаписав данные в страничном кэше. Уязвимость вызвана ошибкой в реализации механизма zerocopy в функции rds_message_zcopy_from_user(), осуществляющей прямое изменение данных в страничном кэше для исключения лишней буферизации. В случае сбоя не производилась очистка поля rm->data.op_nents, из-за чего выполнялось двойное освобождение буфера (double-free). Появление некорректного значения в счётчике ссылок удалось эксплуатировать для перезаписи данных в страничном кэше, благодаря манипуляции с указателем на фиксированный буфер io_uring.

Механизм эксплуатации типичен для всех уязвимостей данного класса - атакующий добивается оседания файла программы с флагом suid root в страничном кэше, после чего подставляет в ELF-заголовок код для запуска /usr/bin/sh. После данной манипуляции запуск программы приводит к загрузке в память не оригинального исполняемого файла с накопителя, а изменённой копии из страничного кэша. В отличие от прошлых эксплоитов, новый вариант адаптирован не только для атаки на утилиту «su», но и может применяться при наличии в системе таких suid-программ, как mount, passwd, chsh, newgrp, umount и pkexec.

Итого 6 дыр дающих рута меньше чем за неделю. И где там @hibou с его мантрой «винда решето, ля, ля, ля …»?


Пишут что ему нужен rds (rds_tcp?) для работы, и что он дефолтно «on» в арче, но не в других дистрах (какое-то очередное ненужно которое никто не тестировал). У меня в дебиане он есть в модулях, но не загружен. Эксплойту нужен уже подгруженный или он (как прошлые разы) автоматически подгрузится?

firkax ★★★★★
()

Всё решето, не надо обманываться

tiinn ★★★★★
()

ИИшечка помогает искать и фиксить баги, это радует. Пусть хоть оно покажет нам, как надо было, перед тем как УВЧ.

thesis ★★★★★
()
Ответ на: комментарий от Sylvia

Вот попросит его уважаемая перспективная сотрудница по почте файлик подправить, а то у ей не открывается. Он его из письма в аутлуке кликнет тот пейнтом и откроется

cobold ★★★★★
()
Ответ на: комментарий от unclestephen

В вашем сознании. Этот сайт никто не читает, никто не слышит вас. На lenta.ru нет криков «Интернет опасносте», на CNN тоже.

lenin386 ★★★★★
()
Последнее исправление: lenin386 (всего исправлений: 3)

@Lusine у тебя снова ошибка в логике, на которую я тебе уже указывал.

Каким образом ошибки найденные в линуксе влияют на решетизм винды? Закон сохранения энергии тут не работает. Если ошибку наши в линуксе, в винде их меньше не стало.

hibou ★★★★★
()
Ответ на: комментарий от hibou

Каким образом ошибки найденные в линуксе влияют на решетизм винды?

Примиряющим. Умиротворяющим. Медитативным таким, терапевтичным образом.

Ну решето. Ну еще одно решето. Подумаешь.

thesis ★★★★★
()
Ответ на: комментарий от thesis

Заходить-то издалека необязательно, можно прислать письмо с файлом и инструкцией иишечному агенту как с этим файлом поступить.
Не запускать присланные скрипты их уже научили, а научить не открывать файлы не могут по причине «зачем тогда такой агент вообще нужен».

frob ★★★★★
()
Ответ на: комментарий от frob

Это все понятно, а непонятным остается лишь то, какие вообще уязвимости при таком подходе не являются «remote».

thesis ★★★★★
()
Последнее исправление: thesis (всего исправлений: 1)
Ответ на: комментарий от thesis

какие вообще уязвимости при таком подходе не являются «remote».

Разглядывание криптодонгла через спектрофотометр с целью экстракции ключа наверное немножко не remote…

А вот разброс интересных флэшек с вертолёта от рассылки интересных файлов отличается разве что затратами.

frob ★★★★★
()
Ответ на: комментарий от firkax

Так, ну вобщем я проверил. И всем кто не хочет запускать простыню PoC у себя, вот короткий пример проверки доступности RDS:

#include <sys/types.h>
#include <sys/socket.h>
#include <linux/rds.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>

int main() {
  int fd;
  if((fd = socket(AF_RDS, SOCK_SEQPACKET, 0))>=0) printf("rds socket: %d; ok\n",
 fd);
  else printf("rds socket: %d; error %d (%s)\n", fd, errno, strerror(errno));
  return 0;
}

У меня такой ответ:

rds socket: -1; error 97 (Address family not supported by protocol)

Если сделать modprobe rds от рута - включается. Автоматически модуль не подгружает. Вобщем, страдают только юзеры тех дистров которые включили подгрузку этого rds по дефолту. Дебиан 11 не такой.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)