Держитесь крепче, это может взорвать ваш разум …
Учетная запись пользователя с низкими привилегиями в большинстве операционных систем Linux со значением UID, превышающим 2147483647, может выполнять любую команду systemctl неавторизованно – благодаря недавно обнаруженной уязвимости.
Описанная уязвимость фактически находится в PolicyKit (также известном как polkit) – инструментарии уровня приложения для Unix-подобных операционных систем, который определяет политики, обрабатывает общесистемные привилегии и предоставляет способ непривилегированным процессам взаимодействовать с привилегированными, такими как как «sudo», который не предоставляет права root для всего процесса.
Проблема, отслеживаемая как CVE-2018-19788, затрагивает версию PolicyKit 0.115, которая предустановлена в большинстве популярных дистрибутивов Linux, включая Red Hat, Debian, Ubuntu и CentOS.
Уязвимость существует из-за неправильной проверки PolicyKit запросов на разрешение для любого пользователя с низким уровнем привилегий с UID, превышающим INT_MAX.
Где INT_MAX – это константа в компьютерном программировании, которая определяет, какое максимальное значение может хранить целочисленная переменная, что равно 2147483647 (в шестнадцатеричном 0x7FFFFFFF).
Таким образом, это означает, что если вы создаете учетную запись пользователя в уязвимых системах Linux с любым UID, превышающим значение INT_MAX, компонент PolicyKit позволит вам успешно выполнить любую команду systemctl.
Исследователь безопасности Рич Мирч (Rich Mirch) из Twitter, описывающий «0xm1rch», также выпустил эксплойт с проверкой концепции (PoC), чтобы успешно продемонстрировать уязвимость, которая требует пользователя с UID 4000000000.
Red Hat порекомендовала системным администраторам не разрешать какие-либо отрицательные UID или UID больше 2147483646, чтобы смягчить проблему до выпуска исправления.