Brad Spengler, автор grsecurity (http://grsecurity.net/), набора патчей к Linux ядру для увеличение безопасности, опубликовал (http://lists.grok.org.uk/pipermail/full-disclosure/2009-July...) эксплоит, использующий для повышения привилегий локального пользователя в системе (активность SELinux не влияет на работу эксплоита), неисправленную уязвимость в Linux ядре 2.6.30, вызванную (http://isc.sans.org/diary.html?storyid=6820) судя по всему ошибкой в оптимизаторе компилятора GCC.URL: http://isc.sans.org/diary.html?storyid=6820
Новость: http://www.opennet.me/opennews/art.shtml?num=22644
и почему я не удивлён?
>и почему я не удивлён?Наверное потому что вы давно это ждали?
Чтобы позлорадствовать)
> и почему я не удивлён?Потому что аноним :D
P.S. интересно, кто так новости пишет и какая его левая пятка расставляет степень тяжести уязвимостей?Вот реально задолбало - в заголовке страшилка, в тексте новости понимаешь что реально все не так страшно как в заголовке написано.Что за стиль желтой прессы - ужастики в заголовках?!Сделаем из опеннета электронную версию газеты "МК"? :EКритическая уязвимость... оказывается не такая уж критическая, потому что - локальная.Интересно, а с хрена она тогда критическая?Я что-то не понимаю?Или может автору новости следует хотя-бы аргументировать свою заяву про критичность?Для лучшего понимания читателями - почему же это именно *критично*.Когда машину могут ремотно сломать с правами рута и даже сплойт есть - это да, критично, потому что админ может даже не иметь возможности парировать это, равно как и не быть в курсе того что некто вообще неизвестный поимеет вдруг неавторизованный удаленный доступ к машине.Это я понимаю - критично, да.
Но когда локальный юзер может нечто, а хотя-бы и сверх того что должен бы номинально, обосновать *критичность* и оправдать страшный заголовок определенно требуется.Локальный юзер, особенно имеющий физический доступ к машине и так по большому счету может проблем создать.То что ему дали в лапы +1 метод - да, это плохо.Но называть это *критичным* даже не утрудившись обоснованием такой оценки, имхо, отдает желтой прессой уровня МК. У серьезных сайтов по секурити есть обычно вполне четкая методика присвоения тяжести уязвимостям. И они лепя критическую оценку - указывают, на основании чего они выставили именно такой рейтинг. Ну и на кой дьявол скатываться до уровня желтой прессы?
И что характерно - автор новости почему-то не указан.Стесняется?Хотя мне давно уже было любопытно кто и по какому принципу тяжесть уязвимостей так интересно расставляет.Т.к. это уже не первый раз когда я замечаю *отфонарную* расстановку степеней уязвимостей.
То реально опасные дыры сгруппируют вперемешку по 10 штук с какой-то лажей, так что мух от котлет не отделишь, то пишут про якобы "критичные" дыры которые по факту не столь уж и критичны (во всяком случае, обоснованием оценки степени дыры авторы не утруждаются), etc.
Что за бардак?И какой толк от таких новостей?По заголовкам статей опеннета судить о степени дыр нынче возможно не более достоверно чем по заголовках статей в "МК" где присутствуют исключительно "сенсации" и "ужастики".
Уязвимость ох$$$$но критическая. Ломаем вордпресс на хосте, получаем шелл непривилегированного пользователя, компиляем этот эксплойт, запускаем, получаем рута, вешаем руткит.
... предварительно убедившись, что там присутствует что-то суидное, позволяющее грузить внешние модули, типа 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. От себя: кто-нибудь обращал внимание, почему он не ставит пробелов после оканчивающих предложение точек? Это наблюдение уже несколько недель не дает мне покоя, поскольку найти этому объяснение я никак не могу.
>От себя: кто-нибудь обращал
>внимание, почему он не ставит пробелов после оканчивающих предложение точек? Это
>наблюдение уже несколько недель не дает мне покоя, поскольку найти этому
>объяснение я никак не могу.$answer =~ s/ /(rand 1 > 0.5) ? '.' : ' '/egs;
Может так? =)
>$answer =~ s/ /(rand 1 > 0.5) ? '.' : ' '/egs;
>
>Может так? =)Да нет, он стабильно их не ставит. Но почему? Как в том анекдоте про профессора с бородой и студента -- просто уснуть не могу! :}
Локальную уязвимость в ядре, позволяющую обычному пользователю стать рутом, я отношу и буду относить к разряду критических с максимальной степенью опасности. Разжевывать причины и проводить ликбез у меня сейчас нет времени.
А сайты по части секурити с вами обычно на этот счет не согласны - обычно они не рейтингуют локальные уязвимости такого плана по максимуму (а степень выше критичной я не знаю).То что уязвимость вполне приличная - спору нет.Но дело в том что возможны более критичные виды уязвимостей.Например - рут удаленным доступом неавторизованного юзера по сети.Это как правило критичнее по последствиям и вероятности использования(в т.ч. массового), согласитесь?Ну а валить все в кучу - неправильно как-то.Ремонтый рут без дополнительных условий в современном мире на порядок опаснее и вредоноснее локального подъема прав с пачкой требовний для этого.Немного пруфлинков...
http://secunia.com/advisories/35801
http://www.vupen.com/english/advisories/2009/1866
И т.п.Максимальную оценку выставил NIST (7.2/10 - high).И то - сейчас это снесли и оно у них на review.И что они там отревьювят - интересный вопрос.
Итого критичной это пока назвал аж целый опеннет.Ну и перец который ее нашел назвал ее fascinating (колоритно, да).Но для того кто нашел дыру вполне нормальное явление преувеличивать ее ценность - после возни с написанием сплота уже не столь сильно смущает что для его работы надо совпадение фазы луны случаюшееся раз в 5 лет.
Было бы хорошо если бы вы внесли какой-то порядок в этот бардак.А то как-то не очень хорошо когда в заголовке - страшилка, а в тексте новости оказывается что для успешного использования страшилки надо правильную фазу луны, вагон пререквизитов и чтобы хакеру подыграли, и вот тогда... - получается что страшилка не настолько уж и страшная, т.к. на практике у хакеров будут проблемы с ее использованием. Возникает ощущение бульварщины - когда главное это страшный или сенсационный заголовок, а вот основное содержимое - куда более унылое и прозаичное.В данном случае - человек написавший эксплойт имел какие-то свои интересы наделать шуму.Громкий заголовок тому лишний пример(хотя может быть, его впечатлил хитрый подход придуманный им и он сгоряча вкатал такой заголовок).Тем не менее, по факту, опасности от этой дыры не так уж много.Ну никак не "критическое" *это*.
При оценке степени критичности учитывается масса сопутствующих факторов, например, удаленный root через редкоиспользуемый ethernet драйвер может получить среднюю степень опасности, а ошибки приводящие к запуску кода в Firefox - названы критическими.В случае обсуждаемой ошибки, ее критичность не в локальности и Linux ядре, а в самой концепции возможности такого рода уязвимостей. Кстати, у того же secunia 3 градации уровня критических ошибок - умеренная, высокая и экстремальная. Можете считать, что упоминание на opennet "критической" ошибки примерно соответствует high critical из рейтинга secunia.
> При оценке степени критичности учитывается масса сопутствующих факторовИменно.Что все ресурсы по безопасности и делают.В частности - один из этих факторов (наиболее интересный админам и т.п.) - это насколько реально на практике шарахнуть кого-то эксплойтом и поиметь с этого какие-то дивиденды.И какие пререквизиты для этого потребуются.Что в итоге и определит использование уязвимости в real world и сколько всем от нее будет (или не будет) головняка.
> например, удаленный root через редкоиспользуемый ethernet драйвер
> может получить среднюю степень опасностиИМХО, это будет соответствовать действительности только если его реально почти никто уже не использует(например, ISA-овые карточки).Потому что вероятность того что хакеры решат что пофлудить в батч режиме по всем адресам в надежде что кто-то все-таки подломится ну совсем не ноль.Благо, автоматизации поддается хорошо и потому у хаксоров есть соблазн с небольшими усилиями накопать себе пару шелбоксов (дописать цикл перебора адресов к сплойту кто угодно может а дальше упирается уже машина а не хацкер).В случае конкретно этого сплойта все сильно иначе и как максимум я могу представить его штучный юзеж в весьма редких ситуациях (когда все пререквизиты в наличии, etc).
> В случае обсуждаемой ошибки, ее критичность не в локальности и Linux ядре,
> а в самой концепции возможности такого рода уязвимостей.Я согласен что концепция - красивая.Весьма красиво разыграная комбинация.Так что гол в ворота вроде как влетел а програмеры даже так сходу и не поняли - кто же из них в конечном итоге виноват?!И вообще - вроде как это "штанга" была.Хотя все-равно стремно.
Но давайте все-таки мух отдельно от котлет, а? Концепции - это одно. А вероятность что подконтрольную мне машину шибанут эксплойтом да еще и поимеют с этого что-то - другое.
Сама по себе сферическая критичность в вакууме никому не интересна (ну, кроме специалистов которые их ищут). Всем обычно интересно - насколько вероятно поиметь проблемы если дырку не залатать в кратчайшие сроки ну и каковы последствия. Сайты по безопасности эту простую истиу давно усвоили. И поэтому если они пищут "ерундовая дыра", админам как правило в большей части случаев натурально можно не дергаться особо и пропатчить ее когда будет время, etc и проблем от этого не будет. А если они пишут "критичная дыра", значит надо бросить все и пойти ее запатчить. Немедленно. Потому что иначе велика вероятность поимения с печальными последствиями.
> Кстати, у того же secunia 3 градации уровня критических ошибок - умеренная,
> высокая и экстремальная. Можете считать, что упоминание на opennet
> "критической" ошибки примерно соответствует high critical из рейтинга secunia.Я вижу тут только 1 проблему: secunia рейтингует это как "Not critical" (1 of 5).
Пруфлинк = http://secunia.com/advisories/35801Это примерно на 180 градусов отличается от заголовка опеннета и соответствия вроде как не получается (во всяком случае в моем видении). Я почему-то секунии в итоге больше доверяю - они правы в том что через эту дырку крайне врядли поимеют хоть 1 мою машину.И посему рвать попу в плане патчинга - не обязательно, это и правда малокритично.Стало быть, дыра есть.Но на практике она не слишком опасна.И вбабахивать ей критичный статус - гм, знаете, в итоге оценкам опеннета в плане степени опасности вообще верить не имеет смысла.Потому что отфонарные они (как минимум с точки зрени админа которого интересует насколько реально поиметь в итоге проблемы от этой дыры).Если хочется подчеркнуть концептуальность дырки и вычурность эксплойта - наверное это надо делать не словом "критичная", это слово для иных целей.Вот например дыра с эксплойтом файрфокса без патча на нее - это да, вполне себе критичная проблема и она должна быть запатчена вендором в "геройском" режиме - хоть лопнуть но фикс сделать, при том - ASAP, что мозильщики и сделали в принципе.Вот там слово "критичная" хорошо описывает ситуацию: без патча юзеров могут на 1-2-3 поиметь.
Автор конкретно этого сплойта для выражения эмоций и необычности использовал слово "fascinating" (у него ряд значений, одно из них наприме "очаровывающая", что вполне неплохо подходит к описанию этой дыры).Почему на опеннете это описано вот так - я не знаю.Но я заметил что это уже не первый раз когда в заголовке ужастик а в тексте - развенчание ужастика и описание что на самом деле это всего лишь какая-то ерундистика, не больно то и страшная на практике. Может конечно опеннет хочет быть святее папы римского^W^W сайтов по безопасности (тогда можно штамповать всем дырам лэйбу critical вообще не глядя) но я уж лучше буду доверять в оценках тем для кого это хлеб с маслом.Во всяком случае, их оценки обычно хорошо коррелировали с наблюдаемыми на практике явлениями природы.
Ну а какие эмоции у админа вызывет прочтение ужастика в заголовке (после чего начинает чесаться патчилка) а потом чтение в основном блоке опровержения ужастика из заголовка (патчилка чесаться перестает) - сами догадайтесь.Правильно - раздосадованое "опять на$%@ли! :E"
> Я вижу тут только 1 проблему: secunia рейтингует это как "Not critical" (1 of 5).
> Пруфлинк = http://secunia.com/advisories/35801это ссылка на совершенно другую ошибку, не связанную с обсуждаемым экспоитом. Насколько я помню, прочитав новость на opennet полез на secunia.com и там для этой ошибки было поставлено high critical. Возможно сейчас, когда страсти поутихли, поменяли уровень на более низкий, в secunia нередко постфактум правят записи.
>это ссылка на совершенно другую ошибку, не связанную с обсуждаемым экспоитом.Другую - это какую?Я думал что в данном случае кернелу вменяется в вину обход защиты от дереференсинга null pointer-ов.Если вы утверждаете про какую-то иную ошибку (какую и где?) - давйте пруфлинки на нее.Чтобы было ясно о какой ошибке речь.
>Насколько я помню, прочитав новость на opennet полез на secunia.com и там
>для этой ошибки было поставлено high critical. Возможно сейчас, когда страсти
>поутихли, поменяли уровень на более низкий, в secunia нередко постфактум правят
>записи.Тем не менее результат налицо - в ответ на критику, возникшую после смотрения на соотв. сайты и думания мозгом (мозг подскзал что это работает с кучей допущений и ресурсы по безопасности соответственно простаили лажовые рейтинги) почему-то реакция, гм, своеобразная и имхо совсем не красящая ресурс. Т.к. никаких аргументов такой простановки степени тяжести уязвимости кроме "левая пятка захотела вот так" я пока так и не увидел.Зато не очень вежливые ответы в свой адрес про ликбез вместо конструктивного разбора п(р)олетов - узрел.Глядя на расстановку тяжести уязвимости на специализированных сайтах возникает ряд вопросов.Такое ощущение что сайты по безопасности не стесняются признавать ошибки и править ляпы.В отличие от.Это так и надо? oO
ky6uk@desu:/tmp/cheddar_bay$ ./cheddar_bay.sh
pulseaudio: no process found
[+] Personality set to: PER_SVR4
Pulseaudio does not exist!='(
Почему неисправленной?http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6...
Уже 5 июля патч был.
заметьте он сказал что не поможет SELinux, но про grsecurity ничего не сказал, улавливаете мою мысль :-)
читал код сплойта. вижу что это локальный эксплойт для повышения привилегий в системе через криво написанный код в суидном pulseaudio. и причём тут ядро, которое патчится уже с рутовыми правами?или так: код, выполняемый с рутовыми правами через суидный pulseaudio, патчит ядро и позволяет выполнить код с рутовыми правами через ошибку программиста при работе с указателями в dev/tun?
Товарищ исчерпывающе осветил вопрос. Заседание можно считать закрытым.
>Товарищ исчерпывающе осветил вопрос. Заседание можно считать закрытым.Как вам та же херня но под tun?
http://www.securitylab.ru/news/382677.php
Это обсуждение этой же новости, но только в духе современного секлаба - 90% "юмора" и 2% по-теме.
>Как вам та же херня но под tun?
>http://www.securitylab.ru/news/382677.phpПозволю себе отметить что даже такой желтопрессный и про-виндузятнический ресурс как секлаб почему-то не додумался назвать все это критичным, выставив какую-то ерундовую степень опасности этой уязвимости. Зато опеннет в i-й раз отжигает забойным заголовком с мягко говоря не соответствующим многообещающему заголовку содержанием.
чет не получается
при компиляции выдает
exploit.c: Assembler messages:
exploit.c:455: Error: Incorrect register `%rax' used with `l' suffix
gcc -v
Целевая архитектура: x86_64-redhat-linux
gcc версия 4.4.0 20090506 (Red Hat 4.4.0-4) (GCC)
Ругается на
asm volatile (
" movl %%esp, %Йx;"
" andl %1, %Йx;"
" movl (%Йx), %0;"
: "=r" (current)
: "i" (0xfffff000)
);
если заменить
" movl (%Йx), %0;"
на
" mov (%Йx), %0;"
компилится, но exploit тогда не работает
./exploit
[+] MAPPED ZERO PAGE!
[+] Resolved tun_fops to 0xffffffffa0b74830
[+] Resolved selinux_enforcing to 0xffffffff81872374
[+] Resolved nf_unregister_hooks to 0xffffffff8132b9fa
[+] Resolved security_ops to 0xffffffff8186fb20
[+] Resolved default_security_ops to 0xffffffff8159f090
[+] Resolved sel_read_enforce to 0xffffffff81189104
[+] Resolved audit_enabled to 0xffffffff8182c804
[+] Resolved commit_creds to 0xffffffff81061597
[+] Resolved init_cred to 0xffffffff8158fa10
[+] *0xffffffffa0b74888 |= 1
[+] b00m!
[+] Disabled security of : nothing, what an insecure machine!
[+] Failed to get root :( Something's wrong. Maybe the kernel isn't vulnerable?Где что не так?
Во всем, конечно, виноваты x64. Новы не расстраивайтесь. Дефолтный RHEL5 не уязвим. Уязвимость добавили ( бэкпортировали :-) ) в тестовых ядрах, которые могли попасть в 5.4.
Но теперь не попадет.
>чет не получается
>при компиляции выдает
>exploit.c: Assembler messages:
>exploit.c:455: Error: Incorrect register `%rax' used with `l' suffix
>Где что не так?gcc -m32 exploit.c -o exploit
А 64 битная будя так
static inline unsigned long get_current(void)
{
unsigned long current;asm volatile (
" movq %%rsp, %%rax;"
" andq %1, %%rax;"
" movq (%%rax), %0;"
: "=r" (current)
: "i" (0xfffff000) /* вот тут надо разбираться, старшие нужны или младшие */
);
return current;
}
Шо за система!
Даже эксплойты не компилятся!
Не то, что в windows - там даже оптимизаторы добавили)
>Шо за система!
>Даже эксплойты не компилятся!
>Не то, что в windows - там даже оптимизаторы добавили)В смысле, сразу поставляется отэксплойтодрюченной, с дырами...
>В смысле, сразу поставляется отэксплойтодрюченной, с дырами...Типа того.А как еще назвать сервисы работающие под SYSTEM зачем-то и большой кус GDI в ядре?В итоге поломав в i-й раз RPC сервис хакерью даже права поднимать не надо.
> вызванную судя по всему ошибкой в оптимизаторе компилятора GCC.Неправда! Ошибка явно на стороне ядра, -fdelete-null-pointer-checks прекрасно документирован. Линус почему-то врет, стыдно наверное.
У меня 2.6.28.1 январского обновления. Мне стоит беспокоиться?
именно по поводу этой уязвимости?
ну чтоооо вы
забейте.
> struct sock *sk = tun->sk; // initialize sk with tun->sk
> …
> if (!tun)
> return POLLERR; // if tun is NULL return error
>
>This code looks perfectly ok, right?Хрена себе ok. Сначала разыменовываем указатель, потому проверяем его валидность, так что-ли? Я смотрю ядро и gcc друг друга стоят.
Да gcc здесь вообще не виноват.
а с grsecurity патченным ядром наверняка работать не будет.
Или это тока на редхате работает ?