... предварительно убедившись, что там присутствует что-то суидное, позволяющее грузить внешние модули, типа pulseaudio. Пара пустяков.Там все не так просто. Линус на LKML аргументирует, что лажа не в ядре, но прежде всего в суидном бинарнике (выбор авторов пал на pulseaudio), позволяющем делать -L внешний модуль, что позволяет получить локальный рут чуть менее чем абсолютно просто. Это раз.
Полтора. Попутно вскрылось безобразие в SELinux, позволяющее обойтись и без SUID.
Второе. Лажа, несомненно, и код в ядре типа
a = fafa->dada;
if ( !fafa ) return;
найденный где-то в файлах, относящемся до tun. Ее и пофиксили, причем хронологически уже никто не разберет, нашел ли Спендер, как обратить данную лажу в эффектный эксплойт независимо и самостоятельно, либо же его эта идея посетила как раз при просмотре LKML.
И третье -- поведение GCC, элиминирующего вторую строчку в указанном фрагменте уж десять лет как (http://gcc.gnu.org/news/null.html), что дает повод валить вину друг на друга, отмазываясь "неопределенным поведением" в стандартах C.
Рекомендую желающим почитать коменты на http://lwn.net/Articles/341773/, где сам автор высказывается и много весьма осведомленных товарищей, а также http://blog.cr0.org/2009/06/bypassing-linux-null-pointer.html, где сами авторы разбирают и объясняют, что к чему и отчего.
Очень, очень познавательно, товарищи!
ПС. Присоединяюсь к товарищам, высказавшимся о посте юзера294. От себя: кто-нибудь обращал внимание, почему он не ставит пробелов после оканчивающих предложение точек? Это наблюдение уже несколько недель не дает мне покоя, поскольку найти этому объяснение я никак не могу.