Довольно редкое событие: обнаружен баг в компонентах операционной системы 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
можно почитать здесь.