LINUX.ORG.RU

Исследователям удалось добавить в ядро Linux уязвимый код

 ,


4

1

Исследователи из университета Миннесоты — Цюши У и Канцзе Лу в рамках исследования «небезопасности» OSS модели пытались выяснить, насколько вероятно намеренное добавление уязвимостей в проекты. Среди прочего патчи были отправлены в ядро Linux.

В результате код ревью прошли 4 патча, в том числе 3 содержащих уязвимости. Представители проекта Linux обратились с жалобой на исследование к администрации университета, однако не нашли поддержки. Потому было принято решение больше никогда не принимать патчи от людей из этого заведения.

>>> Ссылка на исследование

anonymous

Проверено: xaizek ()
Последнее исправление: xaizek (всего исправлений: 2)
Ответ на: комментарий от mky

Получается, что в исходном коде flow использовали вне rcu лока, но сразу после unlock. Aditya Pakki предложил добавить проверку flow, а мантейнер Saeed Mahameed переработал патч и засунул kzalloc() между получением flow и его использованием. Мантейнер как бы успростил race

Типа того, да.

Справедливости ради, мейнтейнер следующим коммитом вернул лок на место.

Тот код изначально был не очень. Его совместными усилиями нескольких девелоперов причёсывали. Это видно, если глянуть git log по файлу.

а виноват Aditya Pakki?

Я думаю, они там немного переволновались, когда кто-то кинул ссылку на .pdf-ку с исследованием. Потому и начали кидаться обвинениями.

С другой стороны многие патчи Aditya Pakki действительно похожи то ли на говнокод, то ли на троллинг — поэтому на него и наехали.

anonymous
()
Ответ на: комментарий от balsoft

По-моему нормально себя повели. Ядро не какой-то закрытый проект, туда много кто коммитит. Ящитаю, исследователи молодцы, а Грег здесь неправ. У него бомбануло, это можно понять, но смысла выгонять этот отдельный университет я не вижу. Если его исследователи рассказали про свой эксперимент, то другие коммитеры (с реальными вредоносными целями) скорее всего действовали бы (или уже действуют) молча. Если бы ещё ядро было закрытым проектом, то действия Грега имели бы какой-то смысл, но так это просто какое-то зарывание головы в песок.

Единственное да, исследователям бы следовало (после принятия патча) написать Грегу или Линусу, чтобы дырку заделали, и уже потом публиковать свои результаты, а не выкладывать 0-day (если это так, за это минус, конечно)

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

Я ничего не понял. Где троянский коммит кто знает? О чем речь то?

Нет троянского коммита. Есть исследование сотен бажных коммитов и того, как эти баги исправлялись.

Если вкратце.

Несколько месяцев назад университет UMN опубликовал исследование, в котором написал:

  • программисты часто допускают мелкие ошибки, даже в коде Linux Kernel;
  • мы проанализировали несколько сотен таких багов за несколько последних лет, и написали статический анализатор, которая находит типичные места в коде, где такую ошибку можно допустить;
  • мы также разделили эти баги на разные категории «скрытности», в зависимости от того, насколько сложно её обнаружить;
  • но разработчики ревьювят код друг друга перед коммитом, мы проанализировали их ревью этих сотен багов, и оказалось, что ревью сразу обнаружил от 19% до 56% ошибок (в зависимости от сложности).

Тем временем за несколько последних лет люди с емейлом в домене @umn.edu прислали в ядро несколько сотен патчей.

Мейнтейнеры ядра честно ревьювили все эти патчи. Какие-то патчи были реджектнуты, потому что бажные. Какие-то патчи были приняты и доработаны.

7 апреля Aditya Pakki с @umn.edu прислал очередной пачт с текстом "The patch adds a check to avoid a potential double free." И получил на него отказ "NACK. There's no double free there."

Дополнительно 20 апреля Greg KH написал ему, что из кода же очевидно, что этот пачт кривой, и мы знаем про ваше исследование, поэтому "Please stop submitting known-invalid patches. [...] This is not ok, it is wasting our time, and we will have to report this, AGAIN, to your university."

В ответ Aditya Pakki написал ему, «не гони», эти патчи бажные просто потому, что они результат недоработанного статического анализатора, который он написал.

Вспомнив о том, что в работе упоминался статический анализатор, Greg KH ответил ему в стиле "То есть мало того, что вы несколько лет шлёте нам бажные патчи. Вы ещё и написали программу, которая генерит эти бажные патчи, и теперь тестируете на нас, сколько из сгенеренных ей багов мы найдём? Да вы вообще охренели! Забаню весь университет за такое «исследование»." (ну, он не так написал, но суть такая)

Заодно Greg KH запустил ревью всех патчей из @umn.edu, на случай если там какие-то ещё баги остались незамеченными.

Вот, как-то так.

anonymous
()

Теперь все преступники должны знать, что свои вредоносные патчи они должны отправлять не от имени этого университета. А то тогда их запалят.

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

отсюда и замазывание истинных причин в прессе со стороны кернел-тим. вместо того, чтобы взять и прочитать исследование вопроса и сделать выводы - https://github.com/QiushiWu/QiushiWu.github.io/blob/main/papers/OpenSourceIns...

С исследованием как раз всё нормально.

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

Проблема не в нём.

Проблема в том КАК они его провели.

Откуда они взяли СОТНИ бажных коммитов в ядро?

И всё выглядит так, словно они несколько лет СПЕЦИАЛЬНО отправляли в ядро бажные коммиты и смотрели, что будет: сколько багов найдут сразу, а сколько потом. Они, похоже, даже написали программу, которая генерирует бажные патчи, постили эти патчи в ядро, и смотрели, какие из нагенеренных багов девелоперы найдут.

Представь, что у тебя в доме в течение двух лет каждый день в случайное время на несколько часов останавливается лифт. А затем ты узнаешь, что «это исследование проводили, чтобы узнать реакцию жильцов». Тогда ты вспомнишь, сколько раз тебе приходилось тащить тяжёлые сумки по лестнице на 7й этаж, сколько часов ты провёл в застрявшем лифте... Скажи, тебя возмутит такое «исследование»?

anonymous
()
Ответ на: комментарий от hummer

Это какой-то позор. А если серьёзно, то это наглядная демонстрация того факта, что OSS не более безопасный, чем проприетарный код.

Я как-то говорил, что открытй код не даёт ничего. Плюс нужно проверять каждую сборку(собрать можно что-то другое или добавить в процессе сборки) каждого дистряба отдельно на ошибки. Это подтверждение моих слов. Наивные детишки, такие наивные...

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

Вот, как-то так.

Нет, не так. Вы наводите тень на плетень и вводите в заблуждение пользователей лора.

Исследование фокусируется совсем не на том, как вы говорите, что-де программисты часто допускают мелкие ошибки мол даже в коде Linux Kernel и прочую беллетристику. Начнём с того, что исследование изучает конкретную тему: О возможности скрытого внедрения уязвимостей в программное обеспечение с открытым исходным кодом с помощью лицемерных (Hypocrite) коммитов

Тема звучит вполне конкретно, а вы уводите куда-то не в ту степь.

Фрагмент из статьи:

In this paper, we instead investigate the insecurity of OSS from a critical perspective—the feasibility of a malicious committer stealthily introducing vulnerabilities such as use-after-free (UAF) in OSS through hypocrite commits (seemingly beneficial minor commits that actually introduce other critical issues). Such introduced vulnerabilities can be critical, as they can exist in the OSS for a long period and be exploited by the malicious committer to impact a massive number of devices and users. Specifically, we conduct a set of studies to systematically understand and characterize hypocrite commits, followed b your suggestions for mitigation.

a malicious committer stealthily introducing vulnerabilities звучит вполне конкретно. Переводится как вредоносный коммиттер, незаметно внедряющий уязвимости. а for a long period and be exploited by the malicious committer to impact a massive number of devices and users переводится как в течение длительного периода времени и быть использованным злоумышленником для воздействия на огромное количество устройств и пользователей.

Всё, что ниже в статье - развивает эту мысль. А-ля - вносим исправление, но не исправляем уязвимость, оставляя возможность эксплуатации уязвимости и тому подобное. malicious committer - это не просто программист, который допускает ошибку, как вы говорите, а который делает это целенаправленно, то бишь злоумышленник, malicious.

Их патчи в ядро были этими самыми stealthily introducing vulnerabilities. То есть они на практике показали, каким образом злоумышленник может инжектировать уязвимости.

А Greg KH, не поняв сути экспериментов и самого исследования, устроил истерику, сведя всё к этике. Ну причём здесь этика, когда в исследовании обсуждается вполне конкретные проблемы OSS:

  • OSS openness;
  • Limited maintenance resources and performance concerns;
  • OSS complexity.

Нет троянского коммита.

Он есть. Но он «абстрактный». Они его могли внести и никто бы ничего не заметил. Они сами об этом пишут. Вот:

As a proof-of-concept, we safely demonstrated that introducing UAF bugs in the Linux kernel by submitting hypocrite commits is practical. Note that the experiment was performed in a safe way—we ensure that our patches stay only in email exchanges and will not be merged into the actual code, so it would not hurt any real users (see §VI-A for details).

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

anonymous
()
Ответ на: комментарий от mv

беспредел допустили

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

до этого было принято, что джентельмены не обманывают

И тут корпорациям как попёрло!
То есть сопровождающие жили в мирке розовых пони, мягких стен и добрых коммитеров все эти почти 30 лет?

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

Quickbooks Error 3371

Quickbooks Error 3371 status code 11118 generally occurs when the file is missing and that missing or damaged file contains the license property of Quickbooks. When your Windows is not updated with the latest version then also this error occurs or when your Windows update is incomplete then also this error occurs. https://updateerror.co/quickbooks-error-3371-status-code-11118/

kevinmalone01
()

а Линус чего молчит? он уже все дела передал Грегу?

crypt ★★★★★
()

В последнее время ситуация вокруг Линукс мне напоминает это видео: https://www.youtube.com/watch?v=TifCwyr7aZI ( Hippo Steals Kudu from Wild Dogs ). Людям с тонкой психикой - октрывать ссылку с опаской.

Tinker
()
Ответ на: комментарий от xwicked

Я как-то говорил, что открытй код не даёт ничего.

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

anonymous
()
Ответ на: комментарий от mv

Коллеги профессора из CS, уверен, знают о Linux. А вот условные врач, социолог, юрист и психолог из комиссии могут не знать, и, не исключено, что плевать они хотели на какой-то там Linux. И они имеют на это полное моральное право, потому что их задача как комиссии заключается в другом.

Более того, глава Департамента CS and Engineering университета сделал заявление, что он не знал об этом исследовании, и он не доволен его проведением.

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

открытый код дает все

когда программа мелкая, то может и даёт… в 90-х чего уж таить даже я посматривал в ядро нет-нет. но сейчас… там сам чёрт ногу сломит. ядро стало монструозным поделием. всё это приводит к печальным перлам. этот случай это уже балаган какой-то с ядром… я как линксоид могу сказать, что не доверяю линукс. с другой стороны что делать? свою ос писать? или переходить совсем на маргинальные варианты типа драгон флай бзд, которые никому не нужны… ни анб, ни другим не нужны… может это и будет действительно безопасным вариантом?

anonymous
()
Ответ на: комментарий от Leupold_cat

когда с линупсом происходит обосрямс всегда все недовольны… а что делать?… куда бежать? от интернета отключаться?

anonymous
()

А кто-то читал их бумагу?
Там указано, что таким же способом была внедрена уязвимость и просуществовала ПЯТЬ ЛЕТ!
Правильно они всё сделали, стоило только нормально проинформировать разрабов до публикации.

Тут закономерный вопрос: почему не забанена организация, которая намеренно внесла уязвимость, просущестовавшую 5(!) лет, а каких-то студентиков забанили???
И почему нет нормального аудита такой основополагающей вещи, как ядро ОС, использующейся на огромном количестве серверов?

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

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

Ответ прост, это иллюзия.

anonymous
()

Так вот кто сломал cdc в 5.10 и старше!!!! Моя ардуина теперь не работает!!!!

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

Давай я исправлю:
Прошло время переписывать всё на rust

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

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

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

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

Chord ★★★★
()
Последнее исправление: Chord (всего исправлений: 1)
Ответ на: комментарий от Chord
 Чтобы обнаружить такую уязвимость нужно, чтобы квалификация просматривающего была гораздо выше квалификации генерящего эти уязвимости.

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

И плюс ещё и безалаберность и расслабленност```

однозначно согласен. Поэтому и говорю, что все что не делается - к лучшему. Есть надежда, что после этого случая примутся радикальные меры по улучшению
anonymous
()
Ответ на: комментарий от fehhner

И почему нет нормального аудита такой основополагающей вещи, как ядро ОС, использующейся на огромном количестве серверов?

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

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

без хотплага этим не воспользоваться, а где ты какой-то хотплаг видел на серверах ?

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

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

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

Как это всё ты вычитал из процитированного ответа универа?

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

Да ладно место плакало в топ 50… Вон у Линукса вообще теперь репутация дырявого решета. Возможно китайцы его проверяли по заданию своего правительства, на тему того, можно ли доверять линуксу свои гостайны или нет. Вывод неутешительный - нет. Госдеп туда может на пихать свои поделия, и никто ничего не заметит.

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

интересно, как много из подобного выявил аудит сертифицированного в рф импортозамещенного по на основе линукс, и проверяют ли они сейчас поспешно свои «сборочки» в виду вскрывшихся обстоятельств :3

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

Как понимаю, эта функция используется при втыкании Ethernet кабеля

нет, устройство регистрируется задолго до того как статус линии определяется. В статье приводится пример регистрации шины MDIO к которой подключаются PHY (контроллер физического уровня сети) который в свою очередь и является тем кто говорит подключен ли кабель, а говорит он это по шине MDIO :) иногда прерывание использует чтобы оперативно сообщать что кабель отвалился/приклеился, иногда это поллингом определяют.

/*Introducing: CVE-2019-12819*/
int __mdiobus_register(...)
	...
	err = device_register(&bus->dev);
	if (err) {
		pr_err("mii_bus %s failed to register\n",bus->id);
+		put_device(&bus->dev);
		return -EINVAL;
	}

тут они добавили якобы нужный put_device(), но он автоматом выполняется в случае неудачной регистрации внутри device_register()

anonymous
()
Ответ на: комментарий от abcq

Походу на ReactOS пора переходить…

anonymous
()
Ответ на: комментарий от olelookoe

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

Страховая так не работает.

Кейс. 10 человек играет в «подкидного дурака». Проигравший должен будет купить пива на 10$.

Ситуация 1. Я взял у каждого по 1.1$. Если кто-то проигрывает, я покупаю пиво за него. Здесь я выступаю в роли страховой компании. Собрал 11$, отдал 10$ за пиво. Каждый игрок же отдал 1.1$, чтобы не потерять 10$.

Ситуация 2. Я взял N$ только у Васи, потому что эксперты-астрологи с хорошей репутацией сказали, что он точно не проиграет, да и шанс всего 1 к 10, что может пойти не так. Здесь я выступаю исключительно в роли игрока казино. Это не страховая деятельность.

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

Неудивительно, в него большие дяди столько денег задонатили и поддержку в Вин10 прикрутили. Наверное они очень хотят развития опенсорса.

anonymous
()

Цюши У и Канцзе Лу

Пойду на али, куплю чего-нибудь.

anonymous
()
Ответ на: комментарий от xwicked

Солидарен. А тред показал исследования, что 80% ЛОРА даже не понимает, что произошло.

P.S. Вот вам и Астра. Вот и сколько надо работы даже забрав пакеты с, допустим, Debian.

shleemypants
()
Ответ на: комментарий от xwicked

Ты тут говоришь о другой проблемы - несоответствие сборки исходному коду. Это тоже проблема, но, скажем так, менее фундаментальная.

hummer
()
Ответ на: комментарий от anonymous

Я взял N$ только у Васи

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

man Страхование информационных рисков

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

olelookoe ★★★
()

главное веди себя прилично здеь и сейчас, иначе получишь за злорадство свое

doc0
()
Ответ на: комментарий от Vsevolod-linuxoid

И хуже или лучше ревью в коде Windows NT kernel мы не знаем — код-то закрыт.

Вряд ли во внутренние репы мелкомягких могут коммитить левые люди.

cocucka ★★★★☆
()

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

Тут лишь один инфоповод - этичность произошедшего.

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

Какая интересная драма! Гораздо лучше всех этих истеричных сжв-драм и прочего раста-в-ядре.

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

Более того, глава Департамента CS and Engineering университета сделал заявление, что он не знал об этом исследовании, и он не доволен его проведением.

Ага, не знал он. А эти студенты были отчислены ещё n-лет назад. Ещё б он признался, что уязвимости в ядро с его одобрения засылали. Проще на самодеятельность доверчивых азиатов всё свалить.

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

А декану не надо во все исследования вникать. Ему сказали «исследуем ведро» - всё, ему пора бежать бюджеты утрясать.

anonymous
()
Ответ на: комментарий от Vsevolod-linuxoid

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

cocucka ★★★★☆
()

линуксоиды с лора сбежали бы в панике линукса на винду. Если бы они уже там не были

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.