URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 129554
[ Назад ]

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

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

Подробнее: https://www.opennet.ru/opennews/art.shtml?num=58518


Содержание

Сообщения в этом обсуждении
"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 10:11 
Что-то решение с лимитом oops'ов, после которых следует panic, выглядит каким-то жутким костылищем.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 10:18 
Стандартная проблема. Типа если вместо этого везде напихать проверок на NULL, то производительность понизится.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено InuYasha , 20-Янв-23 12:15 
Просто обнулить refcount, как я понял, нельзя? Не понимаю проблемы с событием, которое УЖЕ ловится и спокойно предотвращается. :-/

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 13:31 
Более практичный способ: отслеживать долгие чужие процессы... Ой! А откуда взялся чужой процесс? Кто принёс файл эксплоита и сделал его исполняемым?

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Бил Гейтс , 22-Янв-23 11:37 
Осталось понять какой процесс "чужой"

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 23-Янв-23 14:55 
Ну смотри, есть сервер, как на него попадают программы? Либо ты сам поставил (в этом случае защищать что-то бесполезно от ССЗБ), либо кто-то как-то по сети... Отсюда и начинаем плясать: почему есть дыра для установки троянов?!

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 23-Янв-23 14:51 
> везде напихать проверок на NULL

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


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 10:37 
Что-то подсказывает, что refcount должно сделать 64-битным...

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 13:00 
> особенности обработки состояний "oops", в результате которых можно добиться увеличения значения счётчика

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


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено warlock66613 , 20-Янв-23 13:11 
Вот это как раз вообще не решение. И 64-битный счётчик может переполнится, просто на это нужно чуть больше времени.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 14:00 
Да. примерно на 8 * 2^32 дней.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 14:03 
ага, тока если с 32 разрядами они справились за 8 дней, то с 64 разрядами уйдёт всего лишь 2^35 дней, что займёт больше 90 миллионов лет

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Массоны Рептилоиды , 20-Янв-23 14:28 
А мы никуда не торопимся

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 19:11 
А типичный компьютер проработает 90 млн лет? Вам придется землянам технологии проапгрейдить малость на более надежные.

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


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено warlock66613 , 20-Янв-23 19:58 
Хороший программист и хороший код не должен опираться на такие соображения. Дело не в том, проработает компьютер или нет. Дело в том, что если программа предполагает что не проработает, ей место в мусорке.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 21:41 
90 миллионов лет без единого разрыва !!!
== Антон Уральский ==

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 22:00 
Вот это ты щас быканул на всю криптографию, которая и опирается на то, что единственный гарантированный способ взлома (брутфорс) на текущих возможностях электронно-вычислительной техники займет нецелесообразное количество времени (миллионы лет). Опора на "соображения" зависит от предметной области и "правила игры" в ней. Но я согласен с одним из предыдущих комментаторов, что лимит oops это инфернальный костыль и нормальные люди тупо расширяют диапазон значений до 64 бит. В цифровую эпоху многие проблемы прямее всего решаются расширением диапазона - Unicode, IPv6, например.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено warlock66613 , 20-Янв-23 22:17 
Вопрос в том, что значит "опирается". Что случится если кто-то забрутфорсит пароль? Ничего, всё будет работать нормально. Это штатная ситуация для ПО. А тут произойдёт нарушение внутреннего инварианта программы. Вот этого быть не должно. Ожидать что временный файл созданный с помощью гуида не совпадёт с существующим файлом никогда — это нормально. Не вписать проверку и не предусмотреть действий в случае если всё же гуиды совпали — не нормально.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 23:11 
> Вопрос в том, что значит "опирается". Что случится если кто-то забрутфорсит пароль?

Он получит неавторизованый доступ в мои системы, например. Ничуть не хуже чем от сабжа. Даже лучше - через легитимные интерфейсы для белого человека а не всякую ерунду.


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено warlock66613 , 21-Янв-23 01:10 
Вы смотрите с точки зрения пользователя, а я с точки зрения программиста, которому не платят за работу. С точки зрения программиста мне надо чтобы моя программа работала правильно, а кто там к чему получит доступ мне не важно.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 21-Янв-23 18:16 
> а я с точки зрения программиста, которому не платят за работу.

В этих допущениях можно довольно далеко зайти.

> С точки зрения программиста мне надо чтобы моя программа работала правильно,

Осталось определиться что мы считаем "правильным". С практической точки зрения все и вся предусмотреть невозможно. И если следующие сто лет программа точно не создаст проблем, знаете, возможно, разбираться с изменениями реальности через столетие лучше предоставить другим чем пытаться предусмотреть это. Иначе будет наивняк, как с произведениями про хайтек из прошлого века. Сколько из них предсказало эволюцию цифровых технологий правильно?

> а кто там к чему получит доступ мне не важно.

Сферический перфекционизм в вакууме. Ну понятно, небось еще и бсды используете, с таким паттерном мышления было бы не удивительно.


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено warlock66613 , 21-Янв-23 19:27 
> Ну понятно, небось еще и бсды используете, с таким паттерном мышления было бы не удивительно.

Бинго!


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 21-Янв-23 22:25 
Булшит бинго. Возможно бесконечное количество абстракций, а идеал недостижим. Поэтому главное во всей этой гонке за идеалом - уметь вовремя остановиться, зафиксировать достижения, и сделать из этого что-то практически полезное. Иначе может так получиться что нео сольется с матрицей, релиз чего-то адекватного не состоится никогда, ведь в погоне за идеалом можно забыть зачем вся эта канитель вообще затеяна. И вот именно BSD явяляют собой очень хороший пример вот этого вот. Где-то в своих кельях господа из Беркелея давно забыли зачем люди пользуются компьютерами, имея на этот счет какие-то свои, весьма синтетические идеи.

...поэтому я предпочитаю уметь вовремя остановиться в гонке за абстракциями. И если программа сломается через 100 лет - мое чувство идеала останется недовольным, но, а знаете что, проблемы лучше решать по мере их поступления. Может, программа через 100 лет никому не потребуется. Ну, мало ли, появится пять штук лучше. Или квантовые компьютеры сменят некоторые парадигмы. Или AI всех двуногих в зоо определит, и будет ржать с потуг "этих примитивных амеб". Ну и зачем мне спрашивается мое время здесь и сейчас на полирование хрома тратить? Пусть кому актуально и потратит его - когда - и если - это станет актуально.


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено warlock66613 , 21-Янв-23 23:11 
> Где-то в своих кельях господа из Беркелея давно забыли зачем люди пользуются компьютерами, имея на этот счет какие-то свои, весьма синтетические идеи.

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

> сделать из этого что-то практически полезное

Сделать что-то практически полезное — это замечательно, но сделать что-то практически бесполезное, по-моему, гораздо круче.


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 22-Янв-23 19:03 
> Именно так рождался Линукс и много другого замечательных вещей,

Линукс появился, когда некий студент устал ждать когда его осчастливят академики. Одни академики в лице таненбаума занимались черти чем, наворачивая концепции с ... рестриктивной лицензией и игнором насущных проблем пользователей. Другие пшикали на то что 386 это фи, покупайте другие процы. Третьих судил AT&T за то что они посмели возомнить себя равными с коопорацией и играть не в одни ворота, взяв их код. Куда бедному студню было податься? Он послал этот бред в пень да и сделал свое, как работало.

И вот через месяц пыхтений его нечто пошло на взлет. Через месяц он кодил свою систему в своей системе. И обрек себя на то чтобы сделать ее хорошей, как минимум в пользовательском понимании, все же когда твой код плохо работает, и плохо от этого именно тебе, есть сильный зуд его починить.

> без которых была бы одна винда.

NT так то нормальное ядро, деланое командой VAX, чтоли. Но маркетинг все изгадил, разумеется. Если кто думает что линух нельзя изгадить так же, может посмотреть на андроида. Но там в силу опенсорсности больше возможностей потрепыхаться.

> Сделать что-то практически полезное — это замечательно, но сделать что-то практически
> бесполезное, по-моему, гораздо круче.

Ну тут уж кому что. Мне интересны работающие компьютерные системы решающие те или иные задачи, чтобы sci-fi стал реальностью, все такое. Для этого мне нужны цифровые инженерные и компьютерные системы. И совсем уж бесподезные системы мне не интересны. Странно понимать прелести электричества и магнитизма и при этом сидеть в пещере у костра.


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 23:02 
> Хороший программист и хороший код не должен опираться на такие соображения. Дело
> не в том, проработает компьютер или нет. Дело в том, что
> если программа предполагает что не проработает, ей место в мусорке.

Поэтому теоретиков от программирования и не любят - вечно решают какие-то теоретические задачи. Да, моему высохшему (а может уже и окаменевшему) скелету будет очень полезен взлом компьютера, давно превратившегося в тыкву. Впрочем если у вас будет компьютер способный работать 90 миллионов лет, а желательно и такие же технологии для двуногих, добро пожаловать!


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено 5к , 23-Янв-23 01:35 
блин, это теперь везде регексп 20[0-9]{2}-[0-9]{2}-[0-9]{2} везде переписывать, и что писать то?
2[01][0-9]{2}, или [0-9]{4,}-[0-9]{2}-[0-9]{2}, да ну бред же, и так полно корявого ПО которое допускает ввод дат из других веков, а ты блин сиди и думай где и как опечатка была.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено warlock66613 , 23-Янв-23 02:36 
> блин, это теперь везде регексп 20[0-9]{2}-[0-9]{2}-[0-9]{2} везде переписывать

Зачем? Ограничение, разумное или даже нет, — это нормально. Программа не обязана поддерживать произвольные даты. Никакие внутренние инварианты от этого не нарушатся, и программа будет одинаково хорошо (или плохо) работать что в 20 веке, что в 100-м и это никак не помешает ей быть запущенной в 20 веке и проработать непрерывно до сотого.


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено 5к , 25-Янв-23 09:19 
> Зачем? Ограничение, разумное или даже нет, — это нормально.

Ну это вроде стеб был, у всего есть границы применимости


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 14:44 
А если каждый упс добавить паузу в 0.1 секунду

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено pavlinux , 23-Янв-23 22:44 
а я кол-во тредов увеличу на 10

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено _kp , 24-Янв-23 01:44 
Ну может и не каждый чих, а то такие ли драйвера бывают, да ещё умудряются как то работать с мешком ошибок, но ход мысли нормальный.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено topin89 , 20-Янв-23 11:00 
Это он и есть. И это замена шила на мыла теперь это 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 секунды. Отличное исправление, что тут скажешь. С другой стороны, хотя бы о попытке станет известно мгновенно


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 23:03 
Не вешается а паникует. Ну и собственно если у вас 10K OOPSов вылезло, у вас точно что-то идет сильно не так и вы врядли хотите чтобы это продолжало работать. OOPS для начала означает ошибку ядра после которой гарантии корректной работы системы уже нет.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 21-Янв-23 01:09 
В новости же написано, что можно выставить кастомное количество упсов.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Бывалый смузихлёб , 20-Янв-23 11:15 
иначе слишком ресурсоёмко чужие серваки ронять
а тут - по быстрому прогнал, в лимит упёрся и система ушла в перезагрузку
причём, можно умудриться чтобы из цикла перезагрузки система практически не выходила - только загрузилась - загрузилась вирусяка - опять лимит - опять перезагрузка

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 11:54 
Это костыльное решение проблемы oopsов в неподдерживаемых драйверах. Ибо нефиг деньгой поддерживать корпорации, которые проприетарные драйверы делают, но не делают их качественно. И ибо нефиг в ядре держать неподдерживаемые драйвера, делающие oopsы. С растом их станет меньше.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Деанон , 20-Янв-23 12:28 
Ключевое слово, что станет меньше. И хакать смогут лишь те, кто может это финансово и по мощностям это себе позволять.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 13:32 
> С растом их станет меньше.

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


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 14:47 
С растом будут новые проблемы, скорее всего даже хуже
Потом не говорите что я не предупреждал.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Admino , 20-Янв-23 15:54 
Десять тысяч упсов у ядра само по себе уже достаточный повод для паники.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 10:26 
Гугл молодец, хороших спецов нашёл. Прямо уважение им от анонима.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено аноним2 , 20-Янв-23 10:31 
Работал, сервер, работал и вдруг перезагрузился.
Oops it did it again, this limit system reboot this world.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Zenitur , 20-Янв-23 12:34 
10000 kernel oops = 1 kernel ёпс

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 12:37 
Значит нужно настроить лимит на 20000000000 упсов

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 13:34 
> Работал, сервер, работал

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


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 13:36 
Вдогонку: а никого не будет смущать, что на сервере 8 дней вертится какой-то левый юзер?

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 19:13 
Алсо с таким числом oops'ов на диске, вероятно, закончится место под логи. О том что это будет дико грузить систему даже упоминать неудобно. Перцы из гугли возвели хакеров и солонки на новый уровень.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 21-Янв-23 16:31 
Это смотря сколько серверов. Если один-два, то конечно. А если сотни тысяч, как у гугла, то никто и не заметит.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 21-Янв-23 22:13 
> никто и не заметит

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


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 21-Янв-23 22:27 
> Это смотря сколько серверов. Если один-два, то конечно. А если сотни тысяч,
> как у гугла, то никто и не заметит.

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


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено pashev.ru , 20-Янв-23 10:32 
Надопросто добавить ещё один счётчик, который увеличивается на единицу, когда счётчик oops переполняется. Назовём новый счетчик wtf.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено 1 , 20-Янв-23 10:45 
Ну дык - в 2.7 это и предложено ...
Я бы сделал счётчик oops 256 битным

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 10:46 
называй, разрешаю

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 11:22 
Выше предложили более лочичное увеличение разрядности существующего.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено pashev.ru , 20-Янв-23 11:53 
> Выше предложили более лочичное увеличение разрядности существующего.

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


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Конь , 20-Янв-23 18:22 
Создать второй счётчик и сменить тип у первого, это не одно и тоже, поэтому это тогда тебя нужно гнать

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено pashev.ru , 20-Янв-23 23:29 
> Создать второй счётчик и сменить тип у первого, это не одно и
> тоже, поэтому это тогда тебя нужно гнать

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


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 22-Янв-23 20:45 
Тебя забыл спросить насчёт вон.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено ИмяХ , 20-Янв-23 10:55 
Предложен новый способ ронять сервера конкурентам.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено oops_limit , 20-Янв-23 11:17 
После достижения лимита, который по умолчанию выставлен в 10 тысяч oops (при желании можно изменить через параметр oops_limit), ядро будет инициировать переход в состояние "panic" с последующей перезагрузкой, что не позволит добиться необходимого для обнуления refcount числа итераций.
повторяю, для ИмяХ: "при желании можно изменить через параметр oops_limit".

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 11:42 
Почему нельзя по достижению лимита выставить это значение опять в 0? Или почему бы не перестать его прибавлять при достижении лимита?

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 11:56 
это счетчик ссылок. Зачем тогда вообще счетчик, если по описанным тобой правилам там будет неизвестно что?

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 12:14 
Статья говорит что это счетчик предупреждений. Кому теперь верить? Это я уже не говорю на что он должен ссылаться на завершенные задачи?

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 12:43 
статья явно говорит, что используется переполнение счетчика ссылок
> метод атаки основывается на особенности обработки состояний "oops", в результате которых можно добиться увеличения значения счётчика ссылок (refcount), что в свою очередь может привести к переполнению счётчика и освобождению памяти, связанной с refcount.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 13:27 
> переполнение счетчика ссылок

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


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 14:17 
на объект типа mm_struct

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 17:14 
кто владелец? каковы условия срабатывания счётчика? куда "передаётся" структура, раз срабатывает счётчик? Что за NULL? Куда указывает? Кто хранит?

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 17:37 
> кто владелец?

я. Комп мой, ячейка памяти ссылающаяся на структуру тоже куплена за мои деньги

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


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 11:59 
>Или почему бы не перестать его прибавлять при достижении лимита?

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


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 12:18 
Да это называется умный счетчик.

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

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


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 11:15 
То есть раньше надо было провести 4.3 миллиона oops (что потребует примерно 8 дней), чтобы эксплуатировать уязвимость.
Теперь надо 10 тысяч oops (что потребует примерно 10 минут), чтобы перезагрузить сервак.

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


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 11:26 
Верни старое поведение oops_limit=0xFFFFFFFF

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Деанон , 20-Янв-23 12:26 
oops_limit можно изменить

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Деанон , 20-Янв-23 12:26 
(но в прочем, свобода выбора она такая, что выбирают то, что навязывают в результате ограниченности мировоззрения)

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено onanim , 20-Янв-23 13:14 
то есть получение хакером рутового доступа к серверу лучше, чем просто перезагрузка этого сервера?

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 13:39 
Откуда взялся хакер на сервере? Как он смог сделать исполняемый файл? Где он его разместил, что смог запустить?

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 14:01 
Загрузил в папочку cgi-bin

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 17:15 
> в папочку cgi-bin

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


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 18:28 
вы таки хотите сломать чей-то сервер, что так интересуетесь?

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

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


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 20:13 
ну сломаешь ты сам свою виртуалку... у тебя и так туда доступ есть. Это как локалхост молотком расфигачить.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Докерёнок , 20-Янв-23 20:41 
Докер - это как виртуалка, только oops.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 21:27 
Кому нужен вордпресс от пыхающих. Прогрессивные посоны на Раст пишут. Там exec и eval нет, а все пути к точкам входа к бинарнику гвоздями прибиты.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено pilat66 , 23-Янв-23 12:30 
Украл ключи у разработчика, как обычно. Пропатчил библиотеку, которую ленивый нодовец тащит не глядя. Сынишка похвастался что с папиного компа играть лучше. И тд

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 17:16 
Опять для получения рута нужен рут?!

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 04-Янв-24 01:28 
Сидят два бурундука на берегу реки и вяжут шапочки. Подходит слон и спрашивает:
- Река глубокая?
Первый бурундук:
- Глубокая, очень...
Слон:
- А дно как?
Первый бурундук:
- Песочек, отличное дно...
Ну слон разбегается, ныряет, в реке ударяется головой об камни, застревает, ноги торчат, везде кровь..
Второй бурундук первому:
- Зачем ты слона обманул?
- А зачем ты вчера мою шапочку распустил???

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


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено topin89 , 20-Янв-23 13:47 
Ток если строго по формулам, то примерно одну-две секунды

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 11:16 
Типа теперь можно на изи вызывать панику ядра? Это они починили или доломал?

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 11:37 
DoS как способ защиты от разыменования NULL

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 11:41 
Я вот прям совсем не специалист, по почему бы это число при достижении лимита просто не обнулить? Даже если лимит поставить максимально возможным.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Самый Лучший Гусь , 20-Янв-23 11:45 
В реальном мире не бывает нулей.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 17:54 
Других чисел и математики в реальном мире тоже нет. С другой стороны, если мы все сидим в Матрице, то нули и единицы более реальны чем всё что нас окружает.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 23:15 
> В реальном мире не бывает нулей.

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


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 21-Янв-23 22:19 
Вообще "ноль" - философическая проблема. Вот лежит яблоко на столе - это 1. А если стол пустой, сказать, что ноль яблок? А почему яблок, а не арбузов? Их же тоже нету. Видите, как при нуле сразу потерялись единицы измерения? Получается, ноль не имеет измерения, что уже делает его гипотетическим.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 22-Янв-23 17:32 
В вашей философии явно не было "типов данных" и "auto", когда оно соответствует чему угодно. Если вам нужны арбузы, 0 арбузов столь же валидно как 0 яблок или межгалактических сверхсветовых крейсеров. Универсальный тип, подходит ко всему.

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


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 23-Янв-23 14:48 
> 0 арбузов столь же валидно как 0 яблок

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


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 21-Янв-23 12:17 
Давай, расскажи мне, сколько в реальном мире живых тилацинов.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 12:29 
А refcount продолжит щёлкать дальше. Дальше последствия описаны во 2-м абзаце новости.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Oe , 20-Янв-23 12:01 
Видимо замораживать процесс вызывающий oops на секунду (а после некого лимита и вовсе убить, пусть переписывают на раст если с первого раза не доходит) звучит как что то очень умное и не приходящее в голову, вместо этого лучше внедрить возможность DoS атаки

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 13:58 
Пришлите им свою реализацию

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Hck3r , 20-Янв-23 12:35 
Когда уже научат что-то вроде 0dayGPT - чтобы нашла все уязвимости (на основе находимых ранее идей) - исправила бы всё разом.
В любого размера кодовой базе

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 12:40 
> ядро будет инициировать переход в состояние "panic"

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


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено onanim , 20-Янв-23 13:16 
то есть лучше, чтобы вместо dos был rce? вы что, совсем тупые?

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 13:47 
Тупой здесь ты. Читай внтмательно:
> счётчик ссылок становится равен нулю, память освобождается, но фактически остаются рабочие ссылки

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


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 14:01 
Счетчик как раз и используется для определения наличия используемых указателей. Нулевое значение счётчика показывает, что память уже не используется и ссылок не осталось.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 18:48 
> ссылок не осталось
> но фактически остаются рабочие ссылки

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


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 20:32 
Нулевой счётчик показывает, что ссылок не осталось и память можно считать свободной, но так как значение счётчика изменено  на ноль внешним воздействием он уже не отражает реальную ситуацию и на деле ссылки остаются и память продолжает использоваться, в этом и суть уязвимости.


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Омномним , 20-Янв-23 16:57 
Это вам не питончик с хрустяшкой, на минуточку, "ссылку" может не получиться удалить вообще.
Допустим ссылка лежит в других структурах, на которые завязаны ещё структуры. Будем все удалять?
Что будем делать с процессами, держащими хендля или ссылкась на эти структуры? Прибивать?
Что будем делать, если у нас ссылка в DMA ушла? :D

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 19:04 
В ядре линуха всё настолько плохо? Ну офигеть...

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Омномним , 20-Янв-23 21:04 
Ещё раз, ссылочка ушла в DMA, и вот прямо сейчас внешнее устройство забрасывает в эту область памяти данные.
Остановить этот процесс никак. Чего где будем удалять?

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 22-Янв-23 17:34 
> Ещё раз, ссылочка ушла в DMA, и вот прямо сейчас внешнее устройство
> забрасывает в эту область памяти данные.
> Остановить этот процесс никак. Чего где будем удалять?

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


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Омномним , 22-Янв-23 21:59 
Я про структуры с рефкаунтом.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 12:42 
Можно ронять сервера виртуального хостинга, делаешь аккаунт даже бесплатный. Делаешь 10000 разименований за 2 секунды. Сервер уходит в перезагрузку на 10-20 минут.
А с kvm такая фича работает? Можно ли за 10000 разьименований положить хостовую ос?

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 13:40 
> Можно ли за 10000 разьименований положить хостовую ос?

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


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 13:22 
> требуется около 8 дней непрерывной генерации состояний "oops". В случае успеха эксплоит позволяет добиться выполнения своего кода на уровне ядра

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


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Омномним , 20-Янв-23 15:29 
> для проведения атаки при помощи предложенного эксплоита требуется около 8 дней непрерывной генерации состояний "oops"

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


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 17:44 
У меня куча вопросов в связи с этой проблемой и её гениальным "решением". Зачем вообще в ядре на таком низком уровне выделение памяти и счётчики ссылок? Почему нельзя просто молча прибить процесс, без игр с кусками памяти? Почему нельзя сразу при старте ядра зарезервировать минимально нужный кусок памяти и не "удалять" его никогда?

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

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


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 22:13 
Ну не будем забывать, что сам линь начинался как proof-of-concept финского студента для поднятия ЧСВ, и которому не жалко было дать отдушину нёрдам планеты всей, которые в свободное от работы на дядю время оттачивали навыки использования нестандартных структур данных (интрузивные списки, например) на уровне ring0. Да и для встраиваемых систем есть более подходящие вещи типа FreeRTOS и Zephyr.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Спили мушку сынок , 20-Янв-23 20:31 
Ждём, когда с автообновлениями сделают неотключаемый таймер перезагрузки в пять минут. Вышел сервер в интернет, понюхал обновлений и в ребут.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 21-Янв-23 21:05 
Ну и правильно. Ставишь балансировщик на винде, чтоб не перезагружался, а за ним зоопарк линуксовых машин. Представь как будут хакеры материться, когда таргет постоянно ребутается :)

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Ivan_83 , 20-Янв-23 22:51 
1. Поменять счётчик на size_t и для 64х систем оно станет 64 битным.
2. Собирать с -fno-delete-null-pointer-checks и добавить проверки в код.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 20-Янв-23 23:02 
0. Сделать, как в паскале длинные строки: если счётчик -1 (FF...F), это константный объект, счётчик не трогаем. И сразу все проблемы снимутся.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Xasd8 , 21-Янв-23 01:27 
> если счётчик -1 (FF...F), это константный объект

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

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


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 21-Янв-23 11:05 
> а потом уменьшение

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


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Омномним , 24-Янв-23 00:15 
Ну как сказать, снимутся. Превратятся в протечки.
Хотя чтобы FFFFFFFF рефкаунтов набрать - это надо очень постараться.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено eganru , 21-Янв-23 11:13 
Как не специалист, не понимаю, почему нельзя в случае достижения MAX_REFCOUNT заблокировать счетчик ссылок на этом значении? Это имеет какие-то серьезные побочные эффекты(в и без того явно плохом сценарии)?

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 21-Янв-23 20:31 
SystemD + Ubuntu + Gnome + P A С Т = Лучшая ОС на свете!!!

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 21-Янв-23 20:32 
а если занулить?

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 21-Янв-23 22:22 
у тебя ошибка в формуле: несоответствие единиц измерения.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 21-Янв-23 22:43 
Я понял, это команда фуксии собирается подмять под себя команду ведроида и заложила в ведро бабах на упсы. Дёрнешь тамошний bus1 не так и телефон регулярно перезагружается.

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


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 22-Янв-23 21:29 
> Я понял, это команда фуксии собирается подмять под себя команду ведроида и
> заложила в ведро бабах на упсы.

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


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 21-Янв-23 23:03 
Правильнее было бы завершать с соответствующим кодом ошибки приложение, пытающееся разыменовать NULL. И тогда код проверки не будет потреблять чрезмерно ресурсов.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 23-Янв-23 10:12 
Интересно, что на этот счёт думаю Кен с Ритчи, они же ещё живы. Может убрать уже эти указатели из Си? Одни проблемы от них.

"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено Аноним , 23-Янв-23 14:44 
> Может убрать уже эти указатели

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


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено pavlinux , 23-Янв-23 22:48 
Этот refcount  интересен только в состояниях 0 (никого) и 1 (кто-то есть),
все что больше 1 расценивается так же как и 1.  


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


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

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


"Предложен метод эксплуатации разыменования NULL-указателей в..."
Отправлено _kp , 24-Янв-23 01:48 
Стоп, refcount 32х битный?
Да поставить 128 битный. Обязательно временно.
Склеенное скотчем держится веками.
И проблема решена! ;)