В systemd нашли дыру, линуксоиды заподозрили руку спецслужб
Эксперты по информационно безопасности нашли в systemd критическую уязвимость, позволяющую локальному пользователю получить права root. Дыры находят в любом софте и ничего необычного в этом нет, но в данном случае интересна реакция сообщества фанатов Linux.
Дыра в systemd
Для тех, кто знает, что такое CVE сразу дадим код: CVE-2016-10156. Этого достаточно, чтобы сделать запрос к базе данных и получить исчерпывающую информацию об уязвимости. А для фанатов Минта поясним: функция touch() в systemd некорректно проверяет режим доступа к файлу, что позволяет создавать в директории с общим доступом файлы с установленным битом SUID. Такие файлы выполняются с привилегиями root. Это значит, что эксплуатируя дыру, локальный пользователь может повысить свои полномочия до админских.
Systemd и быдлокодеры
В исходном коде systemd есть проверка корректности режима доступа: переменная типа mode_t проверяется на отрицательное значение. Только вот сама она имеет тип unsigned, то есть всегда 0 и более. Следовательно, выполнение условия MODE_INVALID
Как защититься?
Всё давно защищено. Ошибка появилась в версии systemd v228, а уже в следующей версии была исправлена. И произошло это больше года назад.
Реакция линуксоидов
Но гораздо интереснее реакция фанатов Linux. Тут сообщество разделилось на несколько враждующих групп.
Первую группу можно условно назвать systemd-хомячками. Как по указке они принялись троллить всех, кто сомневается в целесообразности перевода всех дистрибутивов Linux на эту спорную систему инициализации. Любые сомнения в качестве и надежности systemd сталкиваются с резкой агрессией и оскорблениями.
Вторая группа — идейные противники systemd. Их позиция такова: посмотрите, systemd разрастается, код пухнет, а пишут его люди, квалификация которых вызывает вопросы. Уязвимость CVE-2016-10156 — это первая ласточка, за которой гарантированно последуют всё новые и новые факапы. Пока есть время, нужно срочно отказываться от systemd и перейти на менее одиозные системы инициализации.
Третья группа самая интересная — разоблачители заговора. По их мнению, дыра в systemd не является случайной дырой, а ни что иное, как специально внедренный бэкдор (тайный вход), замаскированный под случайную ошибку. И аргументы у этой группы весьма убедительные: ну не может даже говнопрограммист не знать, что значения типа unsigned int всегда строго положительны.
Любопытный факт для размышлений:
АНБ просило Торвальдса встроить в Linux шпионский модуль:
Линус Торвальдс признал, что представители американского разведывательного ведомства связывались с ним относительно встраивания бэкдоров в ядро Linux. Торвальдс заметил, что в реальности бэкдоров в ядре Linux нет, хотя подобные попытки были.
Комментарии
Чингачгук
26 января, 2017 - 09:58
Раньше не заморачивался этим вопросом. Всё работает и без разницы что там, системд стоит или что другое.
После таких новостей уже начинаю понимать проекты типа Devuan.
Хотя как знать, ещё неизвестно насколько дырявы прочие опенрц и прочие иниты.
Walker
26 января, 2017 - 18:42
Не существует идеального кода и придуманное для защиты одним, другими могут быть найдены возможности обхода этих средств защиты. Так было, есть и будет. Не стоит драматизировать, не существует идеально защищённых информационных систем, к классу которых вполне можно отнести и операционную систему.
Во-вторых, даже ознакомившись с CVE-2016-10156 пользователь может её устранить? Здесь необходимо говорить о необходимости своевремнного обновления своей системы, в том числе и обновлениями безопасности.
В сети очень много репостов: "при использовании таймеров systemd выполнение функции touch() приводит к созданию файлов в директории /run, /var/run и /var/lib/systemd/timers/ с правами 07777", однако только в одном месте удалось найти этому пояснение: "В примечании к исправлению указано, что исправленная ошибка может привести к DoS-атаке через исчерпание дискового пространства в разделе через заполнение файла /run/systemd/show-status, созданного с правами 07777."
Вас, как домашнего пользователя, будут подвергать DoS-атаке? Это может быть актуально только для тех, у кого имеется выделенный IP, но не для тех у кого IP от провайдера один, а внешний - совсем другой, например для домашнего хомячка в моём лице (да и эти IP всё время меняются). Тогда в моём случае - это, в основном, головная боль провайдера и моя лишь в малой степени, которая ещё больше снижается при задействовании должным образом настроенного firewall и трансляции адресов.
P.S. Обещал себе не реагировать на пояснение "для фанатов Mint", но ... практика - критерий истинности.
Проверяю: systemctl --version и получаю ответ = systemd 229. Так что мой случай попадает под абзац статьи под заголовком "Как защититься", где указано, что "Всё давно защищено. Ошибка появилась в версии systemd v228, а уже в следующей версии была исправлена. И произошло это больше года назад." Так что, лично с моей точки зрения, не совсем удачная аргументация "А для фанатов Минта поясним ...". А так как происхождение установленного у меня systemd, исходя из свойств пакета = 229-4ubuntu16, то указанную в статье аргументацию следовало бы распространить и на Ubuntu. Или, не исключаю, у меня что-то с логикой напряжённо?
Юра Т.
27 января, 2017 - 15:46
Это всё русские реперы виноваты. 228 же.
Комментировать