LINUX.ORG.RU
ФорумTalks

Критическая уязвимость в ядре Linux


0

0

Код выглядит следующим образом:

struct sock *sk = tun->sk; // initialize sk with tun->sk … if (!tun) return POLLERR; // if tun is NULL return error Код выглядит корректно с первого взгляда. Но это до того, как компилятор начнет работать с этим кодом. При оптимизации кода, компилятор увидит, что значение переменной уже присвоено и просто удалит блок IF. Другими словами, компилятор создаст уязвимость в бинарном коде, которой не существует в исходном. Нововведение, произведенное компилятором, позволит ядру прочитать и записать данные по адресу 0x00000000, который атакующий затем сможет перенаправить в пространство пользователя и получить привилегии root на системе.

Опубликованный эксплоит способен обойти защиту разыменования нулевого указателя в ядре, на системах с SELinux и без него, и отключить SELinux/AppArmor/LSM/auditing.

http://www.securitylab.ru/news/382677.php


Знаешь, Санчо. Не пости больше новости, у тебя последние пару лет не получается.

volh ★★
()
Ответ на: комментарий от Ruth

> Оно еще в неподтвержденных, и не одна она.

s/Оно/Она/

Там и новость о Firefox 3.5.1 еще не выкинули. Явно, что никто еще в неподтвержденные не смотрел. Так что никакого умысла. :)

Ruth ★★
()

Это уязвимость компилятора, имхо. А не ядра.
Стоит сообщить дядьке Столлману, чтоб поосторожней там.

Komintern ★★★★★
()

Главный Дирижор Аркестра Бойаниздаф?

grinn ★★
()
Ответ на: комментарий от Komintern

> Это уязвимость компилятора, имхо. А не ядра.

Нет.

Deleted
()

Саныч, ай яй яй))) Вот от тебя не ожидал такого баяна:)))

golodranez ★★★★
()
Ответ на: комментарий от Komintern

> Это уязвимость компилятора, имхо. А не ядра.

Обоих. Изначально - уязвимость ядра, ошибка же компилятора лишь в том, что он позволяет замаскировать эксплоит под нормальный, абсолютно невинный код.

Ruth ★★
()
Ответ на: комментарий от Komintern

Плюсадин.
Если код валиден, то виноваты те кривые руки, которые этот код переводят в бинарник -, в данном случае, компилятор.

Terrens
()
Ответ на: комментарий от Sun-ch

> Правда? А почему до сих пор нет на главной?

Теперь и на ней. :)

Ruth ★★
()
Ответ на: комментарий от Terrens

> Если код валиден, то виноваты те кривые руки, которые этот код переводят в бинарник -, в данном случае, компилятор.

А кто виноват в том, что перед этим бинарником послушно разводит лапки ядро? ;) Виноваты оба.

Ruth ★★
()
Ответ на: комментарий от Ruth

>А кто виноват в том, что перед этим бинарником послушно разводит лапки ядро?

Перед чем разводит? Это и есть ядро))) проблема тут именно в компиляторе.

golodranez ★★★★
()
Ответ на: комментарий от golodranez

О. Да. Я думал, приведенный код часть эксплойта, сейчас просмотрел исходник. Тогда да - вина компилятора.

Ruth ★★
()

Ничего удивительного - ломается все, при желании

frame ★★★
()
Ответ на: комментарий от Ruth

> Тогда да - вина компилятора.

Facepalm.ogg

Deleted
()
Ответ на: комментарий от golodranez

Компилятор сделал все правильно. Такая оптимизация не всегда очевидна, но достаточно хороша, имхо. А в tun.c сабжевый код алгоритмически явно не правильный. И не важно - для ядра он или нет (в юзерспейсе будет SIGSEGV) - так писать нельзя.

k0l0b0k ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.