В реализации протокола SCTP, предлагаемой в ядре Linux, выявлена уязвимость (https://secuniaresearch.flexerasoftware.com/secunia_research.../) (CVE-2019-8956 (https://security-tracker.debian.org/tracker/CVE-2019-8956)), потенциально позволяющая локальному пользователю получить root привилегии в системе (выполнить код в контексте ядра). Прототип эксплоита пока не подготовлен.Проблема вызвана ошибкой в коде функции sctp_sendmesg(), которая позволяет через манипуляцию с локальным сокетом создать условия для обращения к уже освобождённой области памяти (use-after-free). В частности, проблема проявляется при обработке списка ассоциаций получателей, привязанных к сообщению, отправленному по нескольким адресам в режиме SCTP_SENDALL. В случае удаления ассоциации во время перебора продолжается обработка повреждённого списка, в то время как в ранее используемой для элементов списка памяти могут находиться уже другие структуры ядра.
Проблема проявляется начиная с ядра 4.17 и исправлена (https://lore.kernel.org/netdev/20190201141522.GA20785@k.../) в обновлениях 4.20.8 и 4.19.21, а также в тестовом выпуске 5.0rc6 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin...). Уязвимость не затрагивает дистрибутивы с версией ядра меньше 4.17, например, проблеме не подвержены Debian (https://security-tracker.debian.org/tracker/CVE-2019-8956) (кроме тестовых веток sid и buster), SUSE/openSUSE (https://bugzilla.novell.com/show_bug.cgi?id=CVE-2019-8956) и RHEL/CentOS (https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2019-8956). Обновления пакетов уже выпущены для Arch Linux (https://www.archlinux.org/packages/core/x86_64/linux/) и Fedora (https://bugzilla.redhat.com/show_bug.cgi?id=1679890). В Ubuntu 18.10 применяется ядро 4.18 и обновление пока недоступно/CVE-2019-8956.html (https://people.canonical.com/~ubuntu-security/cve/2019).
URL: https://www.openwall.com/lists/oss-security/2019/02/21/2
Новость: https://www.opennet.me/opennews/art.shtml?num=50197
Кто использует sctp? Ненужное нужно выпиливать.
Отличный протокол. Его бы лучше включили в HTTP/3 вместо костылей на UDP. Из реально существующего софта с ним, кроме TCP, работает OpenSSH.
Тут все детально описано об недостатках SCTP.
> SCTP does not fix the head-of-line-blocking problem for streamsВранье. Это одна из побочных целей SCTP, и как раз преимущество перед TCP.
> SCTP requires the number of streams to be decided at connection setup
> SCTP does not have a solid TLS/security storyRFC написаны, а про story так можно про всё сказать, что не TCP/SSL - и про QUIC.
> SCTP has a 4-way handshake, QUIC offers 0-RTT
DDoS'еры шлют пламенный привет!
> QUIC is a bytestream like TCP, SCTP is message-based
...и тут же в HTTP/2 и WebSockets бинарные фреймы, ага.
> QUIC connections can migrate between IP addresses but SCTP cannot
Наглое вранье. Это одна из главных целей SCTP. И мультихоминг, и добавление/удаление адресов на ходу.
Только UDP дает полный контроль над потоком, TCP/SCTP костыли которые все решают за вас.
> UDP дает полный контроль
> TCP/SCTP костылиСвои костыли не пахнут©
Зачем тебе (любая) операционная система? Она ведь ограничивает тебя небольшим набором архитектурных абстракций и приемов работы с железом. Пиши каждую свою прикладную программу прям в машкодах с запуском из ПЗУ. И правильно, пусть каждый (прикладной!) программист сам себе пишет свою собственную реализацию SCTP поверх UDP, он ведь на порядок лучше архитектуру проработает и гораздо меньше ошибок допустит при реализации.
При установке соединения TCP образует туннель с фиксированным маршрутом, по которому пакеты идут один за другим, сохраняя очередность. Для UDP для каждого пакета маршрут формируется отдельно.
> Для UDP для каждого пакета маршрут формируется отдельно.И это отлично!
Спасибо за историю боли товарищ майор, собирай наши пакеты через разные multi home маршруты.
У меня для вас очень плохие новости: в большинстве современных хардварных маршрутизаторов маршрут - flow-based. Т.е. между парой из двух IP/портов пакеты скорее всего пойдут одним маршрутом.
Скорее всего, да. Но могут и не пойти, и часто не идут.
Ога, только ssl разваливается от разных ттл, поэтому балансировка по соединениям 99,9(9)%
> При установке соединения TCP образует туннель с фиксированным маршрутом, по которому пакеты идут один за другим, сохраняя очередность. Для UDP для каждого пакета маршрут формируется отдельно.Ты хоть как-нибудь этот бред можешь объяснить?
Какая связь между маршрутом и очерёдностью? Маршрутизаторы каких производителей маршрутизируют пакеты основываясь не на ip dst/src, а ещё и на портах? Точнее, зачем и кто так будет их настраивать?
> Какая связь между маршрутом и очерёдностью?Связь прямая. Очередность часто меняется, особенно на длинных маршрутах, из-за того, что один пакет пошел по более короткому маршруту, чем отправленный перед ним. Это очень частая ситуация в случае с UDP.
мусье желает выпилиться?
почти каждый оператор c LTE инфраструктурой, почти все коммиты идут от их представителей т.к. они основные крупные пользователи SCTP в линуксе
SCTP does not fix the head-of-line-blocking problem for streams
SCTP requires the number of streams to be decided at connection setup
SCTP does not have a solid TLS/security story
SCTP has a 4-way handshake, QUIC offers 0-RTT
QUIC is a bytestream like TCP, SCTP is message-based
QUIC connections can migrate between IP addresses but SCTP cannothttps://tools.ietf.org/html/draft-joseph-quic-comparison-qui...
> SCTP does not fix the head-of-line-blocking problem for streamsодного потока или всех ?
Multi homing ? - нет не слышали
message mode ? - нет не слышали> SCTP requires the number of streams to be decided at connection setup
is tunnable mode evil - для одной ассоциации ?
> SCTP does not have a solid TLS/security story- have QUIC a solid history ?
no problem and big deal: смотрим исходники opennssl> SCTP has a 4-way handshake, QUIC offers 0-RTT
big deal, it`s problem for QUIC vendor
> QUIC is a bytestream like TCP, SCTP is message-based
только для стриминга, как надо что-то позабористей - начианется костылинг в виде user-mode паккeтинга (на TCP): даже на том же доменном уровне - сколько токого видел - паккетинг овер стримминг...
, для полноты можно вдумчиво глянуть на сорцы в часности sctp_setsockopt() или как иво там
> QUIC connections can migrate between IP addresses but SCTP cannot
dynamic add network interface on client or server side - в рамках end-point свободно see - Multi homing
> https://tools.ietf.org/html/draft-joseph-quic-comparison-qui...
https://en.wikipedia.org/wiki/Stream_Control_Transmission_Pr...
Теоретик ты наш! Сорцы SCTP уже смотрел?
> Сорцы SCTP уже смотрел?То, что Линус и Ко умеют писать код не лучше, чем Леннарт и Ко, вовсе не делает SCTP плохим протоколом.
если до кого еще не дошло - это одна и та же Ко ;)
Вполне мило живущая, ну kdbus не прокатил, но непременно придумают аналог, который и внедрят всем без исключения.
>Теоретик ты наш! Сорцы SCTP уже смотрел?хуже, бэкпoртил(fix,issue) с апстрима в 2.6.32; портинг и прикруттинг cogn. alg. (cubic,hybla,etc.), правда то был то ли норвежский, то ли шведский PoC..
по user-space, скромно умолчу
Херассе, наглое вранье уже в драфты пробралосьПовторю из https://www.opennet.me/openforum/vsluhforumID3/116659.html#88 :
> SCTP does not fix the head-of-line-blocking problem for streams
Вранье. Это одна из побочных целей SCTP, и как раз преимущество перед TCP.
> SCTP requires the number of streams to be decided at connection setup
> SCTP does not have a solid TLS/security storyRFC написаны, а про story так можно про всё сказать, что не TCP/SSL - и про QUIC.
> SCTP has a 4-way handshake, QUIC offers 0-RTT
DDoS'еры шлют пламенный привет!
> QUIC is a bytestream like TCP, SCTP is message-based
...и тут же в HTTP/2 и WebSockets бинарные фреймы, ага.
> QUIC connections can migrate between IP addresses but SCTP cannot
Наглое вранье. Это одна из главных целей SCTP. И мультихоминг, и добавление/удаление адресов на ходу.
Что ты ддосить собрался канальный уровень? Удачи тебе.
Драфты фуфло, их нигде нету. Роутеры не могут в твоой sctp.
> Вранье. Это одна из побочных целей SCTP, и как раз преимущество перед TCP.Не бага, а фича©™
>Херассе, наглое вранье уже в драфты пробралосьнаглосаксы сыр..
..их стиль
Где надо, там используется.
Могло бы и ещё кое где пригодиться, но винда подкачала, не распространился.
На Винду уже можно не оглядываться, у них история "успеха" с Edge тому подтверждение. Как только почувствуют, что остальной Мир на них забил, сразу подтянутся, запилят себе SCTP.
Блиииииин, ну сколько можно уже? Каждый год пачка дыр. Вынесите это дерьмо из ядра наконец.
Безопасники кололись, плакали, но продолжали ковырять код на C...
Перепишете ядро на node.уjs - приходите
блин, сиди и молчи в тряпочку - они ж и перепишут, и придут! И будешь пользовать, никуда не денешься - потому что ничего другого уже не будет.
re куда-то почему-то пропавшее #51:
> только ank верните назад, сеть без него не починим...так он вроде всё так же в параллельсах, нет?
Можно Хемуля спросить, точно должен знать.
последние вести о нем были да, из парарельсы, но это было много-много лет назад - так что либо окончательно стал топ-топ манагером и бросил скучное занятие ковыряться в коде, либо в рай попал, либо просто сдох.А сеть в 2.2 была такая интересная, что мы успели мигрировать на фрю (которая тоже была интересная, но хоть не висла от моргания канала у магистралов) прежде чем починили.
Так что кто будет ядро форкать - форкайте 2.4, а ipchains как-нибудь бэкпортируйте, что-ли. ;-)
P.S. чорт, Russel что-ли тоже сделался вечноживой? Его страница не открывается, просто 404.
Как без него чинить ipchains, блин?!
Ipchains это 2.2, в 2.4 уже был iptables.
речь (поскольку вы явно опоздали родиться) что лучше б его и не было.
Минусующие, прочитайте уж, хотя бы, в wiki что-ли https://ru.wikipedia.org/wiki/Iptables
> P.S. чорт, Russel что-ли тоже сделался вечноживой? Его страница не открывается, просто
> 404.Опять за гугль не уплатил, всё мамка да мамка?
Rusty пошёл [после ipchains-ов - опыт налицо!] блок-чейны окучивать.
https://lwn.net/Articles/778180/
https://linux.conf.au/programme/keynotes/rusty/> Как без него чинить ipchains, блин?!
Не перепишут, они в указатели не умеют.
> Блиииииин, ну сколько можно уже? Каждый год пачка дыр.Юзаете непонятно что на продакшене в интернете? Я бы юзал Gentoo, но поставить её не самая тривиальная задача. Да и ядро уже там самое свежее 4.20.12. Можно юзать FreeBSD. А если хочется линукс, то из самого свежего Ubuntu 18.04. Да и та с ядром 4.15!!!
> на продакшене
> самое свежееЭх, где ты, босоногое детство...
> Эх, где ты, босоногое детство...А что не так? Самое свежее, что можно на продакшене использовать Ubuntu 18.04, да и та, с ядром 4.15.
Это никак не меняет того факта, что ПО с длительной фазой стабилизации имеет более предсказуемое поведение.
Лет 6 уже gentoo в продакшенах. Высыпаюсь. Проекты запускались давно, а все ПО т.п. новое, все работает и развивается. Это вам на альт обновлять после каждого EOL.
> Лет 6 уже gentoo в продакшенах. Высыпаюсь. Проекты запускались
> давно, а все ПО т.п. новое, все работает и развивается.
> Это вам на альт обновлять после каждого EOL.У нас примерно с тем же успехом некоторые годами гоняют продакшн на сизифе (это примерно как debian testing), что всё так же ни разу не отменяет золотых правил сисадмина:
- не чинить то, что не ломалось;
- не тянуть в рот всё блестящее.Это как с бэкапами -- кто-то уже делает, кто-то ещё нет.
Gentoo в продакшн? Ну да, лучше наверное будет действительно только FreeBSD.
Удачи в забегах по граблям, чо.
> Gentoo в продакшн? Ну да, лучше наверное будет действительно только FreeBSD.
> Удачи в забегах по граблям, чо.Я больше показать, что подобные версии ядер разве что в Gentoo есть. Понятное дело, что использовать не буду. Да и в самой свежей убунте, что LTS только 4.15.
Да везде подобные версии есть. Канпелируй сам, как в Gentoo.
Продакшн тоже разный бывает :)
Да и каждый забег по граблям тоже уникален :)
Почему я лайкаю говномамонтным фрозен сборкам - потому, что в них расположение 99% граблей доподлинно известно, и 99% из них в забеге на длинные дистанции можно благополучно обогнуть.
И это при том, что в ядре не полная и не последняя реализация протокола. Все кому нужно перешли на usersctp.
Шо, опять?!SCTP, userns -- то, что или отключаю нафиг, или собираю максимум модулями.
у нас система уже почти совсем немного но почти готовая для десктопа - любой модуль загружается сам, даже если его в blaclist добавить - все равно иногда умудряется загрузиться.ведь юзверя ни в коем случае нельзя беспокоить знаниями о внутреннем устройстве - а то он может сбежать на винду, и ускорить тем самым вeндекапец.
>даже если его в blaclist добавить - все равно иногда умудряется загрузитьсяРукинеизплеч.жпг
дык - что вижу, о том и пою - перечитайте историю с выпиливанием сузей кривых драйверов fs, и о том, что хотя выпилены они именно блэклистингом - mount -t shitfs по прежнему работает, мы ж заботимся о недочеловеках, мы ж не хотим огорчить их знанием о modprobe.я хз как они этого добились, руки это были или другой какой орган, пониже, просто поставил себе галочку - дырявые модули таки элиминировать rm.
> мы ж не хотим огорчить их знанием— Да кто мы такие, чтобы противостоять силам природы?
— Товарищ мэр, давайте все-таки начнем убирать снег с улиц нашего города.:)
>дык - что вижу, о том и пою - перечитайте историю с выпиливанием сузей кривых драйверов fs, и о том, что хотя выпилены они именно блэклистингом - mount -t shitfs по прежнему работает, мы ж заботимся о недочеловеках, мы ж не хотим огорчить их знанием о modprobe.Нормальное документированние поведение blacklist в modprobe. Сверхчеловек не читатель?
> хз как они этого добились, руки это были или другой какой орган, пониже, просто поставил себе галочку - дырявые модули таки элиминировать rm.
You can take the admin out of the windows, but you can't take the windows out of the admin.
да мне неинтересно читать что там еще ради альтернативно-одаренных вы и вам подобные наулучшали. Я умею пользоваться insmod и mount.
И уверен что rm `locate /sctp.ko` (следом за dccp и кто там еще до него отправился нахрен по трубе) работает надежно.> You can take the admin out of the windows
эт вы снова о себе и вам подобных? Повторяю: мне не нужны автозагружаемые модули. _совсем_.
А вот ваше неистовое желание "как в винде, только ХАЛЯВА!!!" регулярно снабжает нас проблемами, в том числе и что автозагружается что-то непрошенное и в непредсказуемые моменты.
>И уверен что rm `locate /sctp.ko` (следом за dccp и кто там еще до него отправился нахрен по трубе) работает надежно.Уверен, что когда удалённый .ko внезапно появится, или окажется, что функциональность присутствует без всяких .ko, ты будешь жаловаться на любые другие руки, кроме своих.
угу, удаленные модули внезапно появляются, функциональность уязвимого модуля присутствует когда он удален, легенды нашего городка.дружище, тебе головушку надо чинить, а ручки выпрямлять без этого уже бесполезно.
>угу, удаленные модули внезапно появляются, функциональность уязвимого модуля присутствует когда он удален, легенды нашего городка.То что форумный аналитик не слышал про "y,n,m" в конфиге ядра, я мог допустить. Но что модули устанавливает пакетный менеджер не знать, это дно. Где ты все свои познания почерпнул, в блогах да на форумах?
> уверен что rm 'locate /sctp.ko' (следом за dccp и кто там еще до него отправился нахрен по трубе) работает надежно.Главное — не забудь перед этим updatedb сделать, ага. И обновления не ставь, а то вдруг опять прилетит.
> mount -t shitfsВообще-то это именно явное указание.
Причём, золотые, блин )
Угу. Оно мягкое, и изгибы принимают совсем причудливые формы.
>SCTP, userns -- то, что или отключаю нафигСтыдно, Миша, ты же инженер.
>>SCTP, userns -- то, что или отключаю нафиг
> СтыдноСоболезную.
> Миша, ты же инженер.
Вот потому и отключаю.
Все пользовательское noexec. Нефиг эксплоиты запускать, а то это никогда не кончится. Давно не верю в идеальный Linux на одном разделе.
Разве noexec спасет от запуска скриптов?
Скрипты не так опасны как бинарный эксплоит.
А из скриптового языка через FFI подгрузить сошку и запустить бинарный код оттуда?
> А из скриптового языка через FFI подгрузить сошку и запустить бинарный код оттуда?На каждую хитрую попу …
$ cp /lib/libc.so.7 /tmp/
$ python
>>> import ctypes
>>> libc = ctypes.CDLL("/tmp/libc.so.7")OSError: /tmp/libc.so.7: mmap of data failed: Permission denied
>>> from cffi import FFI
>>> ffi=FFI()
>>> ffi.dlopen("/tmp/libc.so.7")OSError: cannot load library '/tmp/libc.so.7': /tmp/libc.so.7: mmap of data failed: Permission denied.
Вот же ж! Молодцы :)
man ld.so. noexec, в свете этого, практически бесполезен.
10 лет уж как пофикшено ваше ld.so.
И правда, кажется, пофикшено. Только разве 10 лет назад? Как будто бы ещё недавно работало..
> man ld.so. noexec, в свете этого, практически бесполезен.Благородный дон шутить изволит?
$ gcc hello.c -o hello
$ ./hello
hello world
$ /libexec/ld-elf.so.1 hello
hello world
$ mv hello /tmp
$ /tmp/hello
sh: /tmp/hello: Permission denied
$ /libexec/ld-elf.so.1 /tmp/hello
ld-elf.so.1: /tmp/hello: mmap of data failed: Permission denied
И правда. Я ошибся.
Инетересно, а сколько еще дыр не выявлено и эксплуатируется в тихую?
Может это иллюзия, что "мой компьютер", он действительно мой?
Гугл хочет свой QUIC повсюду пропихнуть. HTTP3 мало было, теперь ещё и в WebRTC.
Тут понял, что на Debian не дождаться поддерживаемой версии PHP. Потестил те линуксы, что предлагают поставить на VPS. Многие догадались, что самое свежее в Ubuntu. Если брать LTS, то это 18.04. А там ядро 4.15. Другие дистрибутивы стары как говно мамонта, особенно всякие rpm.
Держите нас в курсе!
даешь в lo0nix'e exploitabe рута каждый [второй] день!
в большинстве дистрибутивов еще прошлонедельный не починен, зачем вам каждый день еще один?
лично мне - не зачем, а вот другим действительно нужно - чтобы осознать всю глубину глубин, так сказать.
А в чем глубины? У софта характеристики не только security. Должный уровень нужен, но погоня за идеальностью это инквизиция. А так ещё есть надёжность и функциональность. Я дак доволен, а баги всегда находят...
Я реально не хочу троллить, но...только в линукс ? а в bsd, mac, windows ? его там нет или если есть, то там эта уязвимость не проявляется ?>Проблема вызвана ошибкой в коде функции sctp_sendmesg(), которая позволяет через манипуляцию с локальным сокетом создать условия для обращения к уже освобождённой области памяти (use-after-free)
Локальный сокет ? это типа unix-сокет, причем его реализация для линукс.
Если это все так, то может быть линукс не такая уж и хорошая в плане безопасности операционная система ?
ЗЫ: Сейчас вспоминаю надменные высказывания какого-то ведущего ютуб канала (кажется системное администрирование от яндекса), который с легким налетом презрения говорил "windows не операционная система".
И вот всякие такие высказывания линуксоидов вызывают во мне недоумение....
Какое-то время назад находили уязвимости в сетевом стеке BSD, куча новостей была. А вот насчет mac и win - так ведь код закрыть, кто его знает сколько там дыр и бэкдоров ждут своего часа.
раст