LINUXTALKS.CO

Google признала фичу ядра Linux небезопасной by design и отключила ее в своих продуктах

 

L


0

0

Компания Google объявила об отключении по умолчанию интерфейса асинхронного ввода/вывода io_uring в ChromeOS, Android и на рабочих серверах. Дополнительно рассматривается возможность отключения io_uring по умолчанию в GKE AutoPilot (Google Kubernetes Engine). В качестве причины отключения называется плачевная ситуация с безопасностью в io_uring, которая перевешивает достоинства применения io_uring для повышения производительности.

Анализ результатов действующей с 2020 года программы по выплате денежных вознаграждений за выявление уязвимостей в ядре Linux (kCTF Vulnerability Rewards Program) показал, что в 60% полученных в рамки программы заявок, эксплуатируются уязвимости в io_uring и ситуация не меняется со временем. Всего за связанные с io_uring эксплоиты было выплачено вознаграждений на сумму около миллиона долларов, при том, что за всё время существования инициативы общая сумма вознаграждений, выплаченных за уязвимости в ядре Linux, составила 1.8 млн долларов за 42 предоставленных эксплоита для ещё не исправленных уязвимостей (максимальный размер вознаграждения - 133 тысячи долларов).

В прошлом году для усиления безопасности ядра Linux, используемом в эталонном окружении, в котором должен работать претендующий на получение премии эксплоит, Google применил дополнительные настройки и патчи для блокирования типовых методов работы эксплоитов. Например, была добавлена защита от повреждения структуры Freelist, запрещена запись за пределы буфера в slab и реализовано блокирование атак, связанных с совместным использованием кэша. Но данные изменения не повлияли на возможность эксплуатации уязвимостей в io_uring, что подтолкнуло Google к прекращению поддержки io_uring в своих продуктах.

В ChromeOS поддержка io_uring отключена при сборке ядра (CONIFG_IO_URING в kernelconfig). В Android для блокирования доступа к io_uring временно задействован фильтр на основе seccomp-bpf, а в будущих выпусках планируется при помощи SELinux выборочно предоставить доступ к io_uring только проверенным системным компонентам.

Интерфейс io_uring, предоставляемый ядром Linux начиная с выпуска 5.1, примечателен поддержкой полинга (polling) ввода/вывода и возможностью работы как с буферизацией, так и без буферизации. В API io_uring разработчики ядра попытались устранить недостатки старого интерфейса aio. По производительности io_uring очень близок к SPDK и существенно опережает libaio при работе с включённым поллингом. Например, применение io_uring в библиотеке libuv позволило добиться повышения пропускной способности в 8 раз, а включение асинхронной буферизированной записи на базе io_uring в файловой системе XFS привело к снижению задержек в 80 раз и повышению скорости передачи данных в 2.7 раза.

// cc-by opennet.ru
// converted with crypt’s opennet autoreposter

>>> Подробности

★★☆☆☆
Ответ на: комментарий от alexferman

Ага, а как они гордились этой иоуриной.

Minona    
★★★★★★
Windows / Yandex

Всего за связанные с io_uring эксплоиты было выплачено вознаграждений на сумму около миллиона долларов, при том, что за всё время существования инициативы общая сумма вознаграждений, выплаченных за уязвимости в ядре Linux, составила 1.8 млн долларов за 42 предоставленных эксплоита для ещё не исправленных уязвимостей (максимальный размер вознаграждения - 133 тысячи долларов).

У меня есть план:

  • Добавляем в ядро фичу с хуевой защитой.
  • Пишем эксплоиты
  • ??????
  • PROFIT
cocucka    
★★★★★★★★★★★
iPhone / Firefox
Ответ на: комментарий от cocucka

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

crypt    
★★☆☆☆
FreeBSD / Chrome
Ответ на: комментарий от cocucka

если бы винда не скатывалась в линукс, как линукс в винду, мы бы давно перешли…

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

кстати, циска уже начала писать модули на раст https://www.opennet.ru/opennews/art.shtml?num=59271

crypt    
★★☆☆☆
FreeBSD / Chrome
Ответ на: комментарий от crypt

кстати, циска уже начала писать модули на раст

Конкретно в этом случае думаю Rust бы не спас ситуации. Скорее всего баг в механизмах многопоточности которые пытались написать почти без блокировок. На rust бы такую штуку тоже бы писали не безопасно.

Aber    
★★★★★★
Ubuntu / Firefox

Что ни новость про уязвимость в ядре - или урина, или bpf

TheAnonymous    
★★★★★★★★★★★
Linux / Firefox

Please can we call it something that looks a little less like io_urine?

sorrow    
★★★★★★★★★★★★
Linux / Firefox
Ограничение на отправку комментариев: только для зарегистрированных пользователей, score>=90