The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Уязвимость в реализации протокола DCCP в ядре Linux

05.12.2017 09:50

В реализации сокетов с поддержкой протокола DCCP выявлена уязвимость CVE-2017-8824, потенциально позволяющая выполнить код на уровне ядра Linux через локальные манипуляции с сокетами DCCP из непривилегированного процесса. Уязвимость проявляется начиная с выпуска ядра Linux 2.6.16. Для тестирования подготовлен прототип эксплоита.

Проблема вызвана обращением к уже освобождённому блоку памяти в коде обработки сокетов DCCP: Когда объект сокета находится в состоянии DCCP_LISTEN и выполняется вызов функции connect(), выполнение dccp_disconnect() переводит сокет в состояние DCCP_CLOSED, но не освобождает память для структур dccps_hc_tx_ccid и dccps_hc_rx_ccid и не обнуляет их. В дальнейшем, если вызвать connect() в режиме AF_INET6, объект сокета будет клонирован функцией dccp_create_openreq_child(), а на выходе выдан новый объект сокета, в котором сохранятся ссылки dccps_hc_rx_ccid и dccps_hc_tx_ccid из старого объекта сокета. Таким образом, старый и новый объекты сокета будут ссылаться на одну и ту же область памяти.

Уязвимость проявляется только в ядрах, собранных с опцией CONFIG_IP_DCCP, которая, как правило, включена по умолчанию. Исправление пока доступно только в виде патча. Обновления пакетов с ядром для дистрибутивов пока не выпущены (Debian, Fedora, openSUSE, SUSE, RHEL, Ubuntu). Примечательно, что критические проблемы в реализации DCCP уже обнаруживались в феврале 2017 года, а также в 2014 и 2008 годах. В качестве обходного пути защиты можно запретить загрузку модуля ядра dccp, который в обычных условиях загружается автоматически:


   echo "install dccp /bin/true" >> /etc/modprobe.d/disable-dccp.conf


  1. Главная ссылка к новости (http://openwall.com/lists/oss-...)
  2. OpenNews: Уязвимость в ядре Linux, позволяющая получить права root
  3. OpenNews: Опасная удалённая уязвимость в ядре Linux
  4. OpenNews: Критическая уязвимость в Linux ядре.
  5. OpenNews: В USB-стеке ядра Linux выявлено 14 уязвимостей
  6. OpenNews: В ядре Linux выявлен новый вариант уязвимости Dirty COW
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/47677-dccp
Ключевые слова: dccp, linux, kernel
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (49) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.3, Аноним (-), 11:34, 05/12/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    > если вызвать connect() в режиме AF_INET6

    IPv6 зло!

     
     
  • 2.4, Аноним (-), 11:36, 05/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Кстати, в 2017 проблема тоже была связана с IPv6:

    > может быть эксплуатирована при обработке специально оформленного пакета DCCP_PKT_REQUEST, переданного через сокет, открытый с опцией IPV6_RECVPKTINFO.

     
     
  • 3.26, Аноним (-), 16:11, 05/12/2017 [^] [^^] [^^^] [ответить]  
  • +12 +/
    >Кстати, в 2017 проблема тоже была...

    Да помню помню, очень не простой год был.

     
     
  • 4.42, Аноним (-), 22:27, 05/12/2017 [^] [^^] [^^^] [ответить]  
  • –4 +/
    в этом месте по сценарию появляется шигорин, рассказывающий про свои окаменелости.
     
  • 2.9, Аноним (-), 12:47, 05/12/2017 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Добро и зло это относительные категории, а ipv6 это геморрой без задач.
     
  • 2.14, Аноим (?), 13:16, 05/12/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >> если вызвать connect() в режиме AF_INET6
    > IPv6 зло!

    Злом является скорее сочетание двух факторов: сложные структуры данных (к которым относятся заголовки IPv6, SCTP и DCCP), и сишный стиль работы с такими структурами в памяти. Очень мало программистов способные более-менее корректно написать код для таких задач.

     
     
  • 3.17, Аноним (-), 13:47, 05/12/2017 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Что ты там сложного нашёл?
     
     
  • 4.18, Аноним (-), 14:01, 05/12/2017 [^] [^^] [^^^] [ответить]  
  • –4 +/
    В основном - динамическая структура заголовков пакета IPv6. Ситуацию, когда в зависимости от некоторого байта меняется метод доступа к следующей структуре данных, имеет свойство вводить сишников в легкий неадекват (хотя на самом деле весь машинный код так и устроен, но пока речь идет не о данных, а о коде, компилятор скрывает эти подробности).
     
     
  • 5.28, pavlinux (ok), 16:45, 05/12/2017 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > динамическая структура заголовков пакета IPv6.

    Все заголовки строго фиксированы, расширенные заголовки строго фиксированы, поля - постоянной длины у всех.
    Ты ещё поплачься, что поля data разные  

    > когда в зависимости от некоторого байта меняется метод доступа к следующей структуре данных

    Нет в С методов.  Так работают всё программы с динамическими переменными, а если узнаешь
    что такое linked list наверно ваще моск порвёт

    > но пока речь идет не о данных, а о коде, компилятор скрывает эти подробности).

    Скандалы, интриги расследования. Статья есть с разбором полётов, о том, что .code динамин. меняется?  


    Кароч, всё что ты написал - бред.

     
     
  • 6.33, Аноним (-), 18:11, 05/12/2017 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Ты даже не постарался понять то, о чём тебе говорят.

    Заголовок вполне можно было сделать фиксированного размера. Лишние 100 байт погоды не делают. Был бы заголовок фиксированной длины, в котором указывались смещения относительно начала. Дальше бы шли блоки данных на которые указывали в заголовке.

    Речь не об изменении кода, а о том, что ЯВУ скрывает обращение по смещениям для структур, чем снижает количество ошибок. Таких ошибок было НАСТОЛЬКО много, что даже в ассемблере (!!!) появились подобные структуры: mov eax, [esi + rect.width]

    Но мы не ищем лёгких путей, продолжая забег по граблям.

     
     
  • 7.36, Аноним (-), 18:51, 05/12/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Лишние 100 байт погоды не делают

    Для одного коннекта да, а для миллиона? миллиарда?
    Вот нафига маршрутизаторам гонять лишнее фуфло?

     
  • 7.43, Аноним (-), 22:32, 05/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Речь не об изменении кода, а о том, что ЯВУ скрывает обращение
    > по смещениям для структур, чем снижает количество ошибок.

    А по факту обычно лишь заменяет одни ошибки другими. В апачспруте было вообще выполнение кода, на js по жизни делают подвид buffer overrun, а написать на нем что-нибудь безопасно требует прочитать пять страниц секурити гайдлайна от гугла. Иначе код будет страдать детскими болезнями, известными каждому скрипткидису. Вот прямо так, на высокоуровневом js-е.

    А еще будет вместо 2 команд процессора допустим 10. И pps грохнется в 5 раз. Кому такая система окажется нужна? Микроядра что-то никто не хочет ставить на серваки, будь они там хоть в сто раз безопаснее. Да и то, в сто раз не получается, уязвимости в ME же.

     
     
  • 8.65, pavlinux (ok), 00:05, 10/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Посаны, между IPv6 и JS гигабаты тон кода Темой не ошиблись ... текст свёрнут, показать
     
  • 7.64, pavlinux (ok), 00:02, 10/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Ты даже не постарался понять то, о чём тебе говорят.
    > Заголовок вполне можно было сделать фиксированного размера.

    ОН ФИКСИРОВАННЫЙ (расширенные поля - опция, можешь их игнорировать).  

    > Лишние 100 байт погоды не
    > делают. Был бы заголовок фиксированной длины, в котором указывались смещения относительно
    > начала. Дальше бы шли блоки данных на которые указывали в заголовке.
    > Речь не об изменении кода, а о том, что ЯВУ скрывает обращение
    > по смещениям для структур, чем снижает количество ошибок. Таких ошибок было
    > НАСТОЛЬКО много, что даже в ассемблере (!!!) появились подобные структуры: mov eax, [esi + rect.width]

    ...код, ява, ipv6, заголовки, ошибки, ассемблер ... Ещё про CACHE_MISS и не постоянство TSC напиши.

    > Но мы не ищем лёгких путей, продолжая забег по граблям.

    Генератор бреда выключи или связывай слова и предложения по смыслу

     
  • 4.32, pavlinux (ok), 17:13, 05/12/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Что ты там сложного нашёл?

    он же ранее написал "не способен более-менее корректно написать код для таких задач."

     
  • 4.46, Lolwat (?), 22:44, 05/12/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Не написать ахинеи типа:

    <...>

    If (x) {
      return 0;
    }
    <...>
    free(p);
    return 1;

     
     
  • 5.47, Lolwat (?), 22:47, 05/12/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Не написать ахинеи типа:
    > <...>
    > If (x) {
    >   return 0;
    > }
    > <...>
    > free(p);
    > return 1;

    Или

    <...>
    free(p)
    <...>
    p->yay...

     
  • 5.59, lolwat (?), 22:54, 06/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    я все еще не понимаю, зачем использовать что-либо еще, кроме Assembler
     
  • 2.50, Ilya Indigo (ok), 00:14, 06/12/2017 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > IPv6 зло!

    ipv6.disable=1 и нет проблем, во всяком случае пока.

     
     
  • 3.54, пох (?), 14:19, 06/12/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >> IPv6 зло!
    > ipv6.disable=1 и нет проблем, во всяком случае пока.

    tox core с попыткой без проверки цепляться к v6 socket смотрит на тебя с обидой и недоумением.

    а ведь их таких - нынешние пту под видом университетов штампуют пачками.

     
  • 3.55, Аноним (-), 20:58, 06/12/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > ipv6.disable=1 и нет проблем, во всяком случае пока.

    А может быть, ядро пересобрать без сети? Вот это точно поставит хакеров в ступор.

     

  • 1.5, 1 (??), 11:45, 05/12/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А, кстати, когда уже закончатся IPv4 адреса ?

    А то ждём апокалипсиса, ждём ...

     
     
  • 2.6, Аноним (-), 11:53, 05/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    А вас провайдер ваш ещё не запихнул за cgNAT ?
     
     
  • 3.21, Ващенаглухо (ok), 15:16, 05/12/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    нее, даже реальники раздает... onlime.ru
     
     
  • 4.41, Аноним (-), 22:12, 05/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Это ненадолго. А мобильные так уже давно за натом. Очень удобно когда какой-нибудь борец со спамом мило банит половину прова за раз накрыв один айпишник.
     
     
  • 5.51, anomymous (?), 01:15, 06/12/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Проблемы исключительно борца со спамом и его конторы, которая потеряет клиентуру.
     
     
  • 6.56, Аноним (-), 21:00, 06/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Проблемы исключительно борца со спамом и его конторы, которая потеряет клиентуру.

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

     
     
  • 7.61, пох (?), 17:03, 07/12/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    а, так ты не о почтовом спаме, а о вебфорумном?
    тогда для тебя все еще грустнее. Ни одна контора не потеряет ни одного клиента по причине "не шмогла оставить жизненно-важный коммент в форуме".

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

    nat/не нат не имеет ни малейшего значения - c тем же успехом отправляются в премодерацию целиком диапазоны провайдера, балующегося раздачей одноразовых симок. Извини дорогая, так вышло, ничего личного.
    (например, на паре знакомых сайтиков, по моему совету забанены адреса из диапазонов, выданных украине, просто по geoip. Не потому что мы боимся агентов кровавого пастора, а потому что, увы, бардак в той стране обеспечивает раздолье горе-хакерам, а нормальных пользователей оттуда - полтора инвалида.)

     
     
  • 8.66, Аноним (-), 01:02, 10/12/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Обо всем Спамят на форумах, спамят в чатах, спамят в почте, спамят в социалках,... большой текст свёрнут, показать
     
     
  • 9.67, пох (?), 18:23, 11/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    разница с гуглокапчей в том, что от нее еще никто не помер И мир не рухнул без ... большой текст свёрнут, показать
     
  • 5.53, пох (?), 14:16, 06/12/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Это ненадолго. А мобильные так уже давно за натом. Очень удобно когда
    > какой-нибудь борец со спамом мило банит половину прова за раз накрыв
    > один айпишник.

    и нахрена у тебя релей - на айпишнике мобильного провайдера за натом?
    "5.7.1 use your isp relay"

     
     
  • 6.57, Аноним (-), 21:03, 06/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > и нахрена у тебя релей - на айпишнике мобильного провайдера за натом?

    Теперь расскажи эту умную историю всем пользователем гуглов, форумов, игр и какой там еще лабуды, которым рандомно прилетает в рожу за действия к которым они вообще отношения не имеют.

    > "5.7.1 use your isp relay"

    6.6.6 die bitch.

     
  • 2.7, Sarmat (?), 12:06, 05/12/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Глобально уже давно закончились https://opennet.ru/opennews/art.shtml?num=29452
     
     
  • 3.11, Аноним (-), 12:47, 05/12/2017 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Глобально уже давно закончились https://opennet.ru/opennews/art.shtml?num=29452

    А никто и не заметил

     
     
  • 4.20, Аноним (-), 14:02, 05/12/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> Глобально уже давно закончились https://opennet.ru/opennews/art.shtml?num=29452
    > А никто и не заметил

    Заметили. У многих провайдеров цены на внешние адреса подросли в два-три раза. А провов с халявными внешними адресами поуменьшилось.

     
     
  • 5.31, pavlinux (ok), 17:03, 05/12/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >>> Глобально уже давно закончились https://opennet.ru/opennews/art.shtml?num=29452
    >> А никто и не заметил
    > Заметили. У многих провайдеров цены на внешние адреса подросли в два-три раза.

    А чего-бы не поднять, если панику сами создали.

     
     
  • 6.40, пох (?), 21:00, 05/12/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    собственно, у моего провайдера цены упали ;-) Оно и понятно - больше не надо ползать на коленях перед райпом, изображающим видимость бурной деятельности, писать бредовые "планы развития" и ставить пинговалки на свежевыданные адреса чтоб райп успокоился и выдал следующий блок. (а, да и получать ненужноблоки v6, которые ни разу не бесплатны, и без которых последние и потом совсем последние v4 райп выдавать отказывался)
    Купил перепродаваемый блок - и пользуешься.

     
     
  • 7.44, Аноним (-), 22:38, 05/12/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    судя по тебе, дело не в айпишниках а в том что клиенты тупо сбежали от такого прова с чокнутыми сотрудниками. это же у тебя квм в линуксе не было?
     
     
  • 8.52, пох (?), 14:12, 06/12/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    я у этого провайдера - клиент И да, у меня ни один клиент покамест не попросил ... текст свёрнут, показать
     
     
  • 9.58, Аноним (-), 21:13, 06/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    На вид ты больше поцыэнт - у тебя какая-то нездоровая мания Еще бы Просить тог... текст свёрнут, показать
     
  • 4.60, Sarmat (?), 10:50, 07/12/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >> Глобально уже давно закончились https://opennet.ru/opennews/art.shtml?num=29452
    > А никто и не заметил

    Если ни кто не заметил, то скажите сколько сейчас будет стоить блок из 4-х С сеток?

     
     
  • 5.62, пох (?), 18:32, 07/12/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    а это нынче зависит от того, насколько паленых (правда, если тебе /22, то они всяко будут палеными. Если хотя бы /20 - то уже начинаются интересные варианты)

    А, ну и да - мы покупаем или продаем?

    А так - на карманные деньги вполне получится купить. Платежи райпу (или нерайпу, теперь - можно), понятно, в ценник не включены.

     
     
  • 6.63, Sarmat (?), 18:38, 07/12/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > а это нынче зависит от того, насколько паленых (правда, если тебе /22,
    > то они всяко будут палеными. Если хотя бы /20 - то
    > уже начинаются интересные варианты)
    > А, ну и да - мы покупаем или продаем?
    > А так - на карманные деньги вполне получится купить. Платежи райпу (или
    > нерайпу, теперь - можно), понятно, в ценник не включены.

    не понял, что есть палёные?
    да хотя бы /22, пока не покупаю прикидываю бюджет или переходить на ipv6

     

  • 1.19, Аноним (-), 14:01, 05/12/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >Проблема вызвана обращением к уже освобождённому блоку памяти

    c-проблемы

     
  • 1.23, Аноним (-), 15:58, 05/12/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Что могу сказать. SUSE Entrprise Kernel не подвержено. Хехе.
    1) Качаем исходники
    https://github.com/openSUSE/kernel/tree/SLE15
    2) Качаем конфиг
    https://github.com/openSUSE/kernel-source/blob/SLE15/config/x86_64/default
    make menuconfig отрубаем ентерпрайз поддержку
    make -j5
    make install
    make modules_install
    делаем initramfs (без него работать не будет)
    genkernel initramfs
    Единственная беда - виртуалбокс и nvidia-drivers надо патчить (иначе не соберутся)
     
     
  • 2.29, pavlinux (ok), 16:56, 05/12/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Что могу сказать.

    Радоваться тому, что вчерашней дыры нет в сегодняшнем ядре,.. это надо быть богом локалхоста, не меньше.

     
     
  • 3.45, Аноним (-), 22:44, 05/12/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Радоваться тому, что вчерашней дыры нет в сегодняшнем ядре,.. это надо быть
    > богом локалхоста, не меньше.

    будь мужиком, помоги запатчить нвидию и виртуалбокс!

     

  • 1.37, Аноним (-), 19:35, 05/12/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    у меня лежит оно в /usr/bin/true, и кстати почему true, а не false?

    echo "install dccp /bin/true" >> /etc/modprobe.d/disable-dccp.conf

     
     
  • 2.49, Аноним (-), 23:08, 05/12/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > у меня лежит оно в /usr/bin/true, и кстати почему true, а не
    > false?

    потому что false это не true,
    очевидно, чтоб демоны не падали в обморок от ненужного "exit 1".

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру