The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Предложен метод эксплуатации разыменования NULL-указателей в ядре Linux

20.01.2023 09:42

Исследователи из команды Google Project Zero разработали метод эксплуатации уязвимостей в ядре Linux, вызванных разыменованием указателей NULL. До сих пор проблемам в ядре, связанным с разыменованием указателей NULL, не уделялось должного внимания, так как доведение таких проблем до атак, приводящих к повышению привилегий или выполнению своего кода, считалось нереалистичным (непривилегированным процессам запрещён маппинг в нижней области адресного пространства). Как правило подобные ошибки приводят к генерации ядром oops-предупреждений, после которых проблемные задачи завершаются и состояние восстанавливается без необходимости остановки работы системы.

Новый метод атаки основывается на особенности обработки состояний "oops", в результате которых можно добиться увеличения значения счётчика ссылок (refcount), что в свою очередь может привести к переполнению счётчика и освобождению памяти, связанной с refcount. В этом случае эксплуатация сводится к манипуляциям, типичным для атак use-after-free (возникает ситуация, когда у объекта счётчик ссылок становится равен нулю, память освобождается, но фактически остаются рабочие ссылки, указывающие на освобождённую память).

Разыменование указателя NULL в данном случае используется как способ управляемой генерации состояния "oops". Проблема состоит в том, что для достижения переполнения 32-разрядного refcount требуется примерно 232 вызовов состояния "oops". С практической стороны для проведения атаки при помощи предложенного эксплоита требуется около 8 дней непрерывной генерации состояний "oops". В случае успеха эксплоит позволяет добиться выполнения своего кода на уровне ядра.

Используемое в эксплоите разыменование указателя NULL устранено в октябре, но так как выявление похожих проблем не является редкостью и они ранее трактовались как ошибки, а не уязвимости, разработчики добавят в ядро Linux общую защиту для предотвращения атак, манипулирующих генерацией состояний "oops". В частности, в состав ядра 6.2 приняты изменения, ограничивающие максимальное число "oops". После достижения лимита, который по умолчанию выставлен в 10 тысяч oops (при желании можно изменить через параметр oops_limit), ядро будет инициировать переход в состояние "panic" с последующей перезагрузкой, что не позволит добиться необходимого для обнуления refcount числа итераций. Ограничение также планируют перенести в ранее выпущенные, но ещё поддерживаемые, ветки ядра, а также в пакеты с ядром популярных дистрибутивов.

  1. Главная ссылка к новости (https://googleprojectzero.blog...)
  2. OpenNews: Состояние гонки в сборщике мусора ядра Linux, способное привести к повышению привилегий
  3. OpenNews: Оценка оперативности устранения уязвимостей, обнаруженных Google Project Zero
  4. OpenNews: Уязвимость в Mozilla NSS, позволяющая выполнить код при обработке сертификатов
  5. OpenNews: Раскрыта техника эксплуатации уязвимости в tty-подсистеме ядра Linux
  6. OpenNews: Уязвимость в специфичном для CPU AMD коде KVM, позволяющая выполнить код вне гостевой системы
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/58518-null
Ключевые слова: null, kernel
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (136) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 10:11, 20/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +43 +/
    Что-то решение с лимитом oops'ов, после которых следует panic, выглядит каким-то жутким костылищем.
     
     
  • 2.3, Аноним (3), 10:18, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Стандартная проблема. Типа если вместо этого везде напихать проверок на NULL, то производительность понизится.
     
     
  • 3.35, InuYasha (??), 12:15, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Просто обнулить refcount, как я понял, нельзя? Не понимаю проблемы с событием, которое УЖЕ ловится и спокойно предотвращается. :-/
     
     
  • 4.61, Аноним (61), 13:31, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Более практичный способ: отслеживать долгие чужие процессы... Ой! А откуда взялся чужой процесс? Кто принёс файл эксплоита и сделал его исполняемым?
     
     
  • 5.147, Бил Гейтс (?), 11:37, 22/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Осталось понять какой процесс "чужой"
     
     
  • 6.161, Аноним (61), 14:55, 23/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ну смотри, есть сервер, как на него попадают программы? Либо ты сам поставил (в этом случае защищать что-то бесполезно от ССЗБ), либо кто-то как-то по сети... Отсюда и начинаем плясать: почему есть дыра для установки троянов?!
     
  • 3.160, Аноним (61), 14:51, 23/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > везде напихать проверок на NULL

    Для начала - замораживать счётчик на -1, чтобы не было переполнения.

     
  • 2.7, Аноним (7), 10:37, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Что-то подсказывает, что refcount должно сделать 64-битным...
     
     
  • 3.53, Аноним (61), 13:00, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > особенности обработки состояний "oops", в результате которых можно добиться увеличения значения счётчика

    Что-то подсказывает, что копать надо ^^^туда^^^. Что значит "можно добиться"?!

     
  • 3.56, warlock66613 (ok), 13:11, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вот это как раз вообще не решение. И 64-битный счётчик может переполнится, просто на это нужно чуть больше времени.
     
     
  • 4.70, Аноним (7), 14:00, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Да. примерно на 8 * 2^32 дней.
     
  • 4.73, Аноним (73), 14:03, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    ага, тока если с 32 разрядами они справились за 8 дней, то с 64 разрядами уйдёт всего лишь 2^35 дней, что займёт больше 90 миллионов лет
     
     
  • 5.77, Массоны Рептилоиды (?), 14:28, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +6 +/
    А мы никуда не торопимся
     
     
  • 6.102, Аноним (-), 19:11, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А типичный компьютер проработает 90 млн лет? Вам придется землянам технологии проапгрейдить малость на более надежные.

    // учитесь нубы как алиенов на технологии разводить надо!

     
     
  • 7.104, warlock66613 (ok), 19:58, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Хороший программист и хороший код не должен опираться на такие соображения. Дело не в том, проработает компьютер или нет. Дело в том, что если программа предполагает что не проработает, ей место в мусорке.
     
     
  • 8.112, Аноним (73), 21:41, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    90 миллионов лет без единого разрыва Антон Уральский ... текст свёрнут, показать
     
  • 8.113, Аноним (113), 22:00, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вот это ты щас быканул на всю криптографию, которая и опирается на то, что единс... текст свёрнут, показать
     
     
  • 9.115, warlock66613 (ok), 22:17, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вопрос в том, что значит опирается Что случится если кто-то забрутфорсит паро... текст свёрнут, показать
     
     
  • 10.121, Аноним (121), 23:11, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Он получит неавторизованый доступ в мои системы, например Ничуть не хуже чем от... текст свёрнут, показать
     
     
  • 11.125, warlock66613 (ok), 01:10, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вы смотрите с точки зрения пользователя, а я с точки зрения программиста, которо... текст свёрнут, показать
     
     
  • 12.132, Аноним (-), 18:16, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    В этих допущениях можно довольно далеко зайти Осталось определиться что мы счит... большой текст свёрнут, показать
     
     
  • 13.133, warlock66613 (ok), 19:27, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Бинго ... текст свёрнут, показать
     
     
  • 14.141, Аноним (-), 22:25, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Булшит бинго Возможно бесконечное количество абстракций, а идеал недостижим По... большой текст свёрнут, показать
     
     
  • 15.146, warlock66613 (ok), 23:11, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Именно так рождался Линукс и много другого замечательных вещей, без которых была... текст свёрнут, показать
     
     
  • 16.150, Аноним (-), 19:03, 22/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Линукс появился, когда некий студент устал ждать когда его осчастливят академики... большой текст свёрнут, показать
     
  • 8.118, Аноним (118), 23:02, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Поэтому теоретиков от программирования и не любят - вечно решают какие-то теорет... текст свёрнут, показать
     
  • 8.154, (?), 01:35, 23/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    блин, это теперь везде регексп 20 0-9 2 - 0-9 2 - 0-9 2 везде переписывать, ... текст свёрнут, показать
     
     
  • 9.155, warlock66613 (ok), 02:36, 23/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем Ограничение, разумное или даже нет, 8212 это нормально Программа не о... текст свёрнут, показать
     
     
  • 10.167, (?), 09:19, 25/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ну это вроде стеб был, у всего есть границы применимости... текст свёрнут, показать
     
  • 3.78, Аноним (78), 14:44, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    А если каждый упс добавить паузу в 0.1 секунду
     
     
  • 4.162, pavlinux (ok), 22:44, 23/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    а я кол-во тредов увеличу на 10
     
  • 4.165, _kp (ok), 01:44, 24/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ну может и не каждый чих, а то такие ли драйвера бывают, да ещё умудряются как то работать с мешком ошибок, но ход мысли нормальный.
     
  • 2.11, topin89 (ok), 11:00, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Это он и есть. И это замена шила на мыла теперь это DoS-атака.

    > После достижения лимита, который по умолчанию выставлен в 10 тысяч oops (при желании можно изменить через параметр oops_limit), ядро будет инициировать переход в состояние "panic" с последующей перезагрузкой

    10000 срабатываний это примерно 2**log2(10000) ~= 2^13 срабатываний. Простая арифметика говорит, что если 2^32 делает систему уязвимой за 8 дней, то с патчем система вешается за 8 * (2^13/2^32) * 24 * 60 * 60 == 1.3 секунды. Отличное исправление, что тут скажешь. С другой стороны, хотя бы о попытке станет известно мгновенно

     
     
  • 3.120, Аноним (118), 23:03, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Не вешается а паникует. Ну и собственно если у вас 10K OOPSов вылезло, у вас точно что-то идет сильно не так и вы врядли хотите чтобы это продолжало работать. OOPS для начала означает ошибку ядра после которой гарантии корректной работы системы уже нет.
     
  • 3.124, Аноним (124), 01:09, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    В новости же написано, что можно выставить кастомное количество упсов.
     
  • 2.14, Бывалый смузихлёб (?), 11:15, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    иначе слишком ресурсоёмко чужие серваки ронять
    а тут - по быстрому прогнал, в лимит упёрся и система ушла в перезагрузку
    причём, можно умудриться чтобы из цикла перезагрузки система практически не выходила - только загрузилась - загрузилась вирусяка - опять лимит - опять перезагрузка
     
  • 2.26, Аноним (26), 11:54, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Это костыльное решение проблемы oopsов в неподдерживаемых драйверах. Ибо нефиг деньгой поддерживать корпорации, которые проприетарные драйверы делают, но не делают их качественно. И ибо нефиг в ядре держать неподдерживаемые драйвера, делающие oopsы. С растом их станет меньше.
     
     
  • 3.43, Деанон (?), 12:28, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ключевое слово, что станет меньше. И хакать смогут лишь те, кто может это финансово и по мощностям это себе позволять.
     
  • 3.62, Аноним (61), 13:32, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > С растом их станет меньше.

    Естественно, меньше. Нет кода - нет проблем.

     
  • 3.79, Аноним (79), 14:47, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    С растом будут новые проблемы, скорее всего даже хуже
    Потом не говорите что я не предупреждал.
     
  • 2.83, Admino (ok), 15:54, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Десять тысяч упсов у ядра само по себе уже достаточный повод для паники.
     

     ....большая нить свёрнута, показать (40)

  • 1.4, Аноним (4), 10:26, 20/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Гугл молодец, хороших спецов нашёл. Прямо уважение им от анонима.
     
  • 1.5, аноним2 (?), 10:31, 20/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Работал, сервер, работал и вдруг перезагрузился.
    Oops it did it again, this limit system reboot this world.
     
     
  • 2.46, Zenitur (ok), 12:34, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +10 +/
    10000 kernel oops = 1 kernel ёпс
     
  • 2.48, Аноним (48), 12:37, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Значит нужно настроить лимит на 20000000000 упсов
     
  • 2.63, Аноним (61), 13:34, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Работал, сервер, работал

    Вопрос: как на сервере оказался исполняемый эксплоит и кто его запустил?

     
     
  • 3.64, Аноним (61), 13:36, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Вдогонку: а никого не будет смущать, что на сервере 8 дней вертится какой-то левый юзер?
     
     
  • 4.103, Аноним (-), 19:13, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Алсо с таким числом oops'ов на диске, вероятно, закончится место под логи. О том что это будет дико грузить систему даже упоминать неудобно. Перцы из гугли возвели хакеров и солонки на новый уровень.
     
  • 4.131, Аноним (131), 16:31, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Это смотря сколько серверов. Если один-два, то конечно. А если сотни тысяч, как у гугла, то никто и не заметит.
     
     
  • 5.138, Аноним (61), 22:13, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > никто и не заметит

    Ну да, там в гугле только вручную ходят по компам в ДЦ и проверяют, тыкая в клавиши...

     
  • 5.142, Аноним (-), 22:27, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Это смотря сколько серверов. Если один-два, то конечно. А если сотни тысяч,
    > как у гугла, то никто и не заметит.

    Кроме аналитики и логинга ловящих аномалии и сбои, ога.

     

  • 1.6, pashev.ru (?), 10:32, 20/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –53 +/
    Надопросто добавить ещё один счётчик, который увеличивается на единицу, когда счётчик oops переполняется. Назовём новый счетчик wtf.
     
     
  • 2.8, 1 (??), 10:45, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ну дык - в 2.7 это и предложено ...
    Я бы сделал счётчик oops 256 битным
     
  • 2.9, Аноним (9), 10:46, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    называй, разрешаю
     
  • 2.18, Аноним (18), 11:22, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Выше предложили более лочичное увеличение разрядности существующего.
     
     
  • 3.25, pashev.ru (?), 11:53, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Выше предложили более лочичное увеличение разрядности существующего.

    Лол. Я предложил то же самое. Вон из профессии! 🤗

     
     
  • 4.95, Конь (?), 18:22, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Создать второй счётчик и сменить тип у первого, это не одно и тоже, поэтому это тогда тебя нужно гнать
     
     
  • 5.123, pashev.ru (?), 23:29, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Создать второй счётчик и сменить тип у первого, это не одно и
    > тоже, поэтому это тогда тебя нужно гнать

    Ты и верно конь. Давай, ещё мой код покритикуй (которого я не писал) 😂

     
  • 4.151, Аноним (151), 20:45, 22/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Тебя забыл спросить насчёт вон.
     

  • 1.10, ИмяХ (?), 10:55, 20/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    Предложен новый способ ронять сервера конкурентам.
     
     
  • 2.17, oops_limit (?), 11:17, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    После достижения лимита, который по умолчанию выставлен в 10 тысяч oops (при желании можно изменить через параметр oops_limit), ядро будет инициировать переход в состояние "panic" с последующей перезагрузкой, что не позволит добиться необходимого для обнуления refcount числа итераций.
    повторяю, для ИмяХ: "при желании можно изменить через параметр oops_limit".
     
     
  • 3.23, Аноним (23), 11:42, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Почему нельзя по достижению лимита выставить это значение опять в 0? Или почему бы не перестать его прибавлять при достижении лимита?
     
     
  • 4.27, Аноним (27), 11:56, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    это счетчик ссылок. Зачем тогда вообще счетчик, если по описанным тобой правилам там будет неизвестно что?
     
     
  • 5.33, Аноним (23), 12:14, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Статья говорит что это счетчик предупреждений. Кому теперь верить? Это я уже не говорю на что он должен ссылаться на завершенные задачи?
     
     
  • 6.51, Аноним (27), 12:43, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    статья явно говорит, что используется переполнение счетчика ссылок
    > метод атаки основывается на особенности обработки состояний "oops", в результате которых можно добиться увеличения значения счётчика ссылок (refcount), что в свою очередь может привести к переполнению счётчика и освобождению памяти, связанной с refcount.
     
     
  • 7.60, Аноним (61), 13:27, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > переполнение счетчика ссылок

    ссылок - куда? какой объект?

     
     
  • 8.76, Аноним (27), 14:17, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    на объект типа mm_struct ... текст свёрнут, показать
     
     
  • 9.87, Аноним (61), 17:14, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    кто владелец каковы условия срабатывания счётчика куда передаётся структура,... текст свёрнут, показать
     
     
  • 10.90, Аноним (27), 17:37, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    я Комп мой, ячейка памяти ссылающаяся на структуру тоже куплена за мои деньги д... текст свёрнут, показать
     
  • 4.28, Аноним (28), 11:59, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Или почему бы не перестать его прибавлять при достижении лимита?

    И выдавать You sick bastard

     
     
  • 5.37, Аноним (23), 12:18, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Да это называется умный счетчик.

    Если у тебя так много "проблемных задач" которые завершаются и тебе для чего-то надо знать их количество это уже вызывает вопросы. Всё что надо делать это сравнивать это значение с нулем зачем его бесконечно прибавлять ещё и без проверки переполнения ума не приложу.

    Можно делать метрику oops за последние 24 часа. А потом хвастаться перед коллегами сколько у кого oops.

     

  • 1.13, Аноним (13), 11:15, 20/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +16 +/
    То есть раньше надо было провести 4.3 миллиона oops (что потребует примерно 8 дней), чтобы эксплуатировать уязвимость.
    Теперь надо 10 тысяч oops (что потребует примерно 10 минут), чтобы перезагрузить сервак.

    Отлично пофиксил. Идеально, я бы сказал.

     
     
  • 2.19, Аноним (18), 11:26, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Верни старое поведение oops_limit=0xFFFFFFFF
     
  • 2.41, Деанон (?), 12:26, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    oops_limit можно изменить
     
  • 2.42, Деанон (?), 12:26, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    (но в прочем, свобода выбора она такая, что выбирают то, что навязывают в результате ограниченности мировоззрения)
     
  • 2.57, onanim (?), 13:14, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    то есть получение хакером рутового доступа к серверу лучше, чем просто перезагрузка этого сервера?
     
     
  • 3.65, Аноним (61), 13:39, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Откуда взялся хакер на сервере? Как он смог сделать исполняемый файл? Где он его разместил, что смог запустить?
     
     
  • 4.71, Аноним (48), 14:01, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Загрузил в папочку cgi-bin
     
     
  • 5.88, Аноним (61), 17:15, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > в папочку cgi-bin

    Откуда у левого юзера, непонятно ещё как попавшего на сервер, права на запись туда?!

     
     
  • 6.96, Аноним (96), 18:28, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    вы таки хотите сломать чей-то сервер, что так интересуетесь?

    Заказываете виртуалку с доступом в интернет и ставите на нее вордпресс. Так чтобы можно было картинки загружать, плагины всякие ставить, обновлять его одной кнопкой из его же админки, ну и просматривать без ограничений. Обычное использование в общем, как у всех.

    Потом расскажете, откуда там права на запись взялись.

     
     
  • 7.106, Аноним (61), 20:13, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    ну сломаешь ты сам свою виртуалку... у тебя и так туда доступ есть. Это как локалхост молотком расфигачить.
     
     
  • 8.109, Докерёнок (?), 20:41, 20/01/2023 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 7.111, Аноним (111), 21:27, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Кому нужен вордпресс от пыхающих. Прогрессивные посоны на Раст пишут. Там exec и eval нет, а все пути к точкам входа к бинарнику гвоздями прибиты.
     
  • 6.157, pilat66 (?), 12:30, 23/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Украл ключи у разработчика, как обычно. Пропатчил библиотеку, которую ленивый нодовец тащит не глядя. Сынишка похвастался что с папиного компа играть лучше. И тд
     
  • 5.89, Аноним (61), 17:16, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Опять для получения рута нужен рут?!
     
  • 4.168, Аноним (168), 01:28, 04/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Сидят два бурундука на берегу реки и вяжут шапочки. Подходит слон и спрашивает:
    - Река глубокая?
    Первый бурундук:
    - Глубокая, очень...
    Слон:
    - А дно как?
    Первый бурундук:
    - Песочек, отличное дно...
    Ну слон разбегается, ныряет, в реке ударяется головой об камни, застревает, ноги торчат, везде кровь..
    Второй бурундук первому:
    - Зачем ты слона обманул?
    - А зачем ты вчера мою шапочку распустил???

    Вы ведь понимаете что речь не о сервере вообще. Вы знаете что Linux имеет модель колец защиты. И если такая модель применяется, то она должна работать как положено.

     
  • 2.68, topin89 (ok), 13:47, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ток если строго по формулам, то примерно одну-две секунды
     

  • 1.15, Аноним (15), 11:16, 20/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Типа теперь можно на изи вызывать панику ядра? Это они починили или доломал?
     
  • 1.21, Аноним (21), 11:37, 20/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    DoS как способ защиты от разыменования NULL
     
  • 1.22, Аноним (23), 11:41, 20/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Я вот прям совсем не специалист, по почему бы это число при достижении лимита просто не обнулить? Даже если лимит поставить максимально возможным.
     
     
  • 2.24, Самый Лучший Гусь (?), 11:45, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    В реальном мире не бывает нулей.
     
     
  • 3.94, Аноним (94), 17:54, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Других чисел и математики в реальном мире тоже нет. С другой стороны, если мы все сидим в Матрице, то нули и единицы более реальны чем всё что нас окружает.
     
  • 3.122, Аноним (121), 23:15, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > В реальном мире не бывает нулей.

    Вот те раз, компьютерам это расскажи с их двоичной системой счисления.

     
     
  • 4.139, Аноним (61), 22:19, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вообще "ноль" - философическая проблема. Вот лежит яблоко на столе - это 1. А если стол пустой, сказать, что ноль яблок? А почему яблок, а не арбузов? Их же тоже нету. Видите, как при нуле сразу потерялись единицы измерения? Получается, ноль не имеет измерения, что уже делает его гипотетическим.
     
     
  • 5.148, Аноним (-), 17:32, 22/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    В вашей философии явно не было "типов данных" и "auto", когда оно соответствует чему угодно. Если вам нужны арбузы, 0 арбузов столь же валидно как 0 яблок или межгалактических сверхсветовых крейсеров. Универсальный тип, подходит ко всему.

    А так то компьютеры много чего "гипотетического" делают. Скажем GPS - рисует некую виртуальную координатную сетку, грубо говоря. Ее нет. Но если допустить что она все же есть, в ней можно адресовать объекты. И это работает.

     
     
  • 6.159, Аноним (61), 14:48, 23/01/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > 0 арбузов столь же валидно как 0 яблок

    Вот ты и подтвердил, что 0 не имеет типа, а значит, не существует.

     
  • 3.130, Аноним (130), 12:17, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Давай, расскажи мне, сколько в реальном мире живых тилацинов.
     
  • 2.44, Аноним (18), 12:29, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    А refcount продолжит щёлкать дальше. Дальше последствия описаны во 2-м абзаце новости.
     

  • 1.29, Oe (?), 12:01, 20/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Видимо замораживать процесс вызывающий oops на секунду (а после некого лимита и вовсе убить, пусть переписывают на раст если с первого раза не доходит) звучит как что то очень умное и не приходящее в голову, вместо этого лучше внедрить возможность DoS атаки
     
     
  • 2.69, Аноним (48), 13:58, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Пришлите им свою реализацию
     

  • 1.47, Hck3r (?), 12:35, 20/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Когда уже научат что-то вроде 0dayGPT - чтобы нашла все уязвимости (на основе находимых ранее идей) - исправила бы всё разом.
    В любого размера кодовой базе
     
  • 1.49, Аноним (49), 12:40, 20/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > ядро будет инициировать переход в состояние "panic"

    Вместо rce будет dos. Поменяли понос на золотуху.

     
     
  • 2.58, onanim (?), 13:16, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    то есть лучше, чтобы вместо dos был rce? вы что, совсем тупые?
     
     
  • 3.67, Аноним (67), 13:47, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Тупой здесь ты. Читай внтмательно:
    > счётчик ссылок становится равен нулю, память освобождается, но фактически остаются рабочие ссылки

    Правильное решение - при обнулении счётчика удалять "осиротевшие" ссылки.

     
     
  • 4.72, Аноним (72), 14:01, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Счетчик как раз и используется для определения наличия используемых указателей. Нулевое значение счётчика показывает, что память уже не используется и ссылок не осталось.
     
     
  • 5.99, Аноним (67), 18:48, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > ссылок не осталось
    > но фактически остаются рабочие ссылки

    Может быть, всё-таки попробуешь прочитать текст новости?

     
     
  • 6.108, Аноним (72), 20:32, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Нулевой счётчик показывает, что ссылок не осталось и память можно считать свободной, но так как значение счётчика изменено  на ноль внешним воздействием он уже не отражает реальную ситуацию и на деле ссылки остаются и память продолжает использоваться, в этом и суть уязвимости.

     
  • 4.86, Омномним (?), 16:57, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Это вам не питончик с хрустяшкой, на минуточку, "ссылку" может не получиться удалить вообще.
    Допустим ссылка лежит в других структурах, на которые завязаны ещё структуры. Будем все удалять?
    Что будем делать с процессами, держащими хендля или ссылкась на эти структуры? Прибивать?
    Что будем делать, если у нас ссылка в DMA ушла? :D
     
     
  • 5.100, Аноним (67), 19:04, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • –3 +/
    В ядре линуха всё настолько плохо? Ну офигеть...
     
     
  • 6.110, Омномним (?), 21:04, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ещё раз, ссылочка ушла в DMA, и вот прямо сейчас внешнее устройство забрасывает в эту область памяти данные.
    Остановить этот процесс никак. Чего где будем удалять?
     
     
  • 7.149, Аноним (-), 17:34, 22/01/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Ещё раз, ссылочка ушла в DMA, и вот прямо сейчас внешнее устройство
    > забрасывает в эту область памяти данные.
    > Остановить этот процесс никак. Чего где будем удалять?

    Вообще, если ссылка на число оопсов ушла в DMA, Торвальдсу кому-то надо 314-ы дать - и спросить какого черта в их коде творится вообще.

     
     
  • 8.153, Омномним (?), 21:59, 22/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Я про структуры с рефкаунтом ... текст свёрнут, показать
     

  • 1.50, Аноним (48), 12:42, 20/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Можно ронять сервера виртуального хостинга, делаешь аккаунт даже бесплатный. Делаешь 10000 разименований за 2 секунды. Сервер уходит в перезагрузку на 10-20 минут.
    А с kvm такая фича работает? Можно ли за 10000 разьименований положить хостовую ос?
     
     
  • 2.66, Аноним (61), 13:40, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Можно ли за 10000 разьименований положить хостовую ос?

    Об этом гугл расскажет потом, когда выполнит задачу по взлому целевых серваков.

     

  • 1.59, Аноним (61), 13:22, 20/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > требуется около 8 дней непрерывной генерации состояний "oops". В случае успеха эксплоит позволяет добиться выполнения своего кода на уровне ядра

    Чем определяется вероятность успеха? Что-то в статье много мутных мест. Не сказано даже, какие версии ядра подвержены.

     
  • 1.82, Омномним (?), 15:29, 20/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    > для проведения атаки при помощи предложенного эксплоита требуется около 8 дней непрерывной генерации состояний "oops"

    ...
    ...
    Ну так-то примерно на 7 дней Зоркий Глаз всё-таки что-то заметит, если он не девляпс, конечно же :)

     
  • 1.91, Аноним (94), 17:44, 20/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    У меня куча вопросов в связи с этой проблемой и её гениальным "решением". Зачем вообще в ядре на таком низком уровне выделение памяти и счётчики ссылок? Почему нельзя просто молча прибить процесс, без игр с кусками памяти? Почему нельзя сразу при старте ядра зарезервировать минимально нужный кусок памяти и не "удалять" его никогда?

    Это убогое проектирование. Как это на тех же на встраиваемых устройствах должно работать?

    Вообще, судя по всяким OOM killer'ам разработчики линукс ядра относятся к памяти абсолютно расхлябанно, как к какому-то бесконечному ресурсу. "Падает из-за нехватки памяти? Ну так просто купи_новый_телефон/доставь_ещё_терабайт_в_сервак"

     
     
  • 2.114, Аноним (113), 22:13, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну не будем забывать, что сам линь начинался как proof-of-concept финского студента для поднятия ЧСВ, и которому не жалко было дать отдушину нёрдам планеты всей, которые в свободное от работы на дядю время оттачивали навыки использования нестандартных структур данных (интрузивные списки, например) на уровне ring0. Да и для встраиваемых систем есть более подходящие вещи типа FreeRTOS и Zephyr.
     

  • 1.107, Спили мушку сынок (?), 20:31, 20/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Ждём, когда с автообновлениями сделают неотключаемый таймер перезагрузки в пять минут. Вышел сервер в интернет, понюхал обновлений и в ребут.
     
     
  • 2.137, Аноним (137), 21:05, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну и правильно. Ставишь балансировщик на винде, чтоб не перезагружался, а за ним зоопарк линуксовых машин. Представь как будут хакеры материться, когда таргет постоянно ребутается :)
     

  • 1.117, Ivan_83 (ok), 22:51, 20/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    1. Поменять счётчик на size_t и для 64х систем оно станет 64 битным.
    2. Собирать с -fno-delete-null-pointer-checks и добавить проверки в код.
     
     
  • 2.119, Аноним (61), 23:02, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    0. Сделать, как в паскале длинные строки: если счётчик -1 (FF...F), это константный объект, счётчик не трогаем. И сразу все проблемы снимутся.
     
     
  • 3.126, Xasd8 (?), 01:27, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > если счётчик -1 (FF...F), это константный объект

    не сработает.

    в этом случае увеличение количество ссылок а потом уменьшение их на тоже самое (больше) значение -- заставит пройти через нуль (не в том месте)

     
     
  • 4.128, Аноним (61), 11:05, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > а потом уменьшение

    Прочитай статью внимательно.

     
  • 3.164, Омномним (?), 00:15, 24/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну как сказать, снимутся. Превратятся в протечки.
    Хотя чтобы FFFFFFFF рефкаунтов набрать - это надо очень постараться.
     

  • 1.129, eganru (?), 11:13, 21/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Как не специалист, не понимаю, почему нельзя в случае достижения MAX_REFCOUNT заблокировать счетчик ссылок на этом значении? Это имеет какие-то серьезные побочные эффекты(в и без того явно плохом сценарии)?
     
  • 1.135, Аноним (135), 20:31, 21/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    SystemD + Ubuntu + Gnome + P A С Т = Лучшая ОС на свете!!!
     
     
  • 2.136, Аноним (137), 20:32, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    а если занулить?
     
  • 2.140, Аноним (61), 22:22, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    у тебя ошибка в формуле: несоответствие единиц измерения.
     

  • 1.144, Аноним (-), 22:43, 21/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Я понял, это команда фуксии собирается подмять под себя команду ведроида и заложила в ведро бабах на упсы. Дёрнешь тамошний bus1 не так и телефон регулярно перезагружается.

    А циркон, как понимаете, не падает, потому что такой фичи в нём нет.

     
     
  • 2.152, Аноним (-), 21:29, 22/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Я понял, это команда фуксии собирается подмять под себя команду ведроида и
    > заложила в ведро бабах на упсы.

    Поэтому другая команда заложила бабах в их менеджмент - опа, 16% команды фуксии уволены?!

     

  • 1.145, Аноним (145), 23:03, 21/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Правильнее было бы завершать с соответствующим кодом ошибки приложение, пытающееся разыменовать NULL. И тогда код проверки не будет потреблять чрезмерно ресурсов.
     
  • 1.156, Аноним (156), 10:12, 23/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Интересно, что на этот счёт думаю Кен с Ритчи, они же ещё живы. Может убрать уже эти указатели из Си? Одни проблемы от них.
     
     
  • 2.158, Аноним (61), 14:44, 23/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Может убрать уже эти указатели

    Может, убрать уже эти процессоры, одни проблемы от них.

     

  • 1.163, pavlinux (ok), 22:48, 23/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Этот refcount  интересен только в состояниях 0 (никого) и 1 (кто-то есть),
    все что больше 1 расценивается так же как и 1.  


    В ядре есть лимиты, pid_max, max_map_count, от них и надо прыгать.
    Если refcount начал переваливать за эти пределы, прибивать нахрен процесс
    с сообщением  "Тюнюнгуй свой хелловорд, пейсатель".  


    Домашнее задание:  

    Найти там же, в mm_struct,  Sequence counter и создать похожий эксплойт.

     
  • 1.166, _kp (ok), 01:48, 24/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Стоп, refcount 32х битный?
    Да поставить 128 битный. Обязательно временно.
    Склеенное скотчем держится веками.
    И проблема решена! ;)
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру