Уязвимость в утилите eject, позволяющая повысить свои привилегии
В утилите eject, входящей в состав набора util-linux и предназначенной для инициирования операции извлечения съемного накопителя (например, CD), обнаружена уязвимость (CVE-2017-6964), позволяющая локальному пользователю повысить свои привилегии в системе. Уязвимость вызвана ошибкой в коде проверки значений, возвращаемых функциями setuid() и setgid() в утилите dmcrypt-get-device. Так как dmcrypt-get-device поставляется только в Debian и Ubuntu, только данные дистрибутивы подвержены проблеме (обновления с исправлениями уже выпущены).
Утилита dmcrypt-get-device, которая вызывается при запуске eject, выполняется с флагом suid root. Расширенные права требуются только для открытия файла /dev/mapper/control, после чего привилегии сбрасываются и разбор данных от device mapper производится под обычным непривилегированным пользователем. Суть проблемы в том, что разработчики полагали, что выполнение setuid(getuid()) всегда выполнятся успешно и не выполняли проверку возвращаемого значения. Атакующий может создать условия, при которых setuid не сможет быть выполнен (например, из-за превышения лимитов RLimitMEM или RLimitNPROC) и тогда выполнение продолжится без сброса привилегий.