Довольно редкое событие: обнаружен баг в компонентах операционной системы Unix. За сорок лет своего существования эта система зарекомендовала себя как самая надёжная ОС, но даже в Unix можно найти изъян. Речь идёт о баге с форматной строкой в популярной программе sudo, что теоретически означает потенциальную уязвимость с повышением привилегий. Баг обнаружен в последних версиях 1.8.0 — 1.8.3p1.

Программа sudo позволяет делегировать те или иные ресурсы пользователям, предоставляя им возможность выполнять команды от имени суперпользователя root, либо других пользователей. Она поставляется для большинства Unix и Unix-подобных операционных систем.

Уязвимости подвержены версии 1.8.0 — 1.8.3p1. Причина в том, что год назад с выходом новой версии 1.8.0 была представлена поддержка более простого дебаггинга sudo_debug(). Но сейчас выяснилось, что при использовании функции sudo_debug() название программы (argv[0]) передаётся прямо в fprintf(). А поскольку название программы при вызове команды sudo может быть указано пользователем, который вызывает эту программу, то и возникает такая неприятная ситуация.

$ ln -s /usr/bin/sudo./%s
$./%s -D9
Segmentation fault

Получается, что таким образом атакующий теоретически может выполнять произвольные команды как root. При этом совершенно не требуется его присутствие в файле sudoers. Если в sudo при компиляции не был прописан ключ FORTIFY_SOURCE, то эксплоит сделать проще, а с FORTIFY_SOURCE он возможен разве что теоретически.

Баг-репорт был отправлен мейнтейнеру sudo 24 января, и 30 января тот выпустил патч и новую версию 1.8.3.p2. Соответственно, всем рекомендуется обновиться до новой версии как можно скорее.

Если обновление невозможно, то можно сильно усложнить потенциальным злоумышленникам повышение привилегий: для этого требуется перекомпилировать sudo с ключом компиляции -D_FORTIFY_SOURCE=2 в строке OSDEFS в src/Makfile. Функцию FORTIFY_SOURCE поддерживают большинство версий Linux и FreeBSD.

В базе данных CVE багу присвоен код CVE 2012-0809.

Подробнее о форматных строках и обходе FORTIFY_SOURCE можно почитать здесь.



Оставить мнение