URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 132508
[ Назад ]

Исходное сообщение
"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "

Отправлено opennews , 06-Янв-24 10:23 
В библиотеке Qt выявлена уязвимость (CVE-2023-51714) в реализации протокола HTTP/2, позволяющая добиться записи своих данных за пределы выделенного буфера. Уязвимость вызвана целочисленным переполнением в коде разбора упакованных заголовков (HPack) и проявляется при получении более 4 ГБ суммарных данных HTTP-заголовков или 2 ГБ для одного заголовка. Проблема устранена в обновлениях Qt 5.15.17, 6.2.11, 6.5.4 и 6.6.2...

Подробнее: https://www.opennet.dev/opennews/art.shtml?num=60395


Содержание

Сообщения в этом обсуждении
"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 06-Янв-24 10:46 
Не понимаю почему бы всем не приложить усилия к одной реализации которая потом может быть портирована куда угодно... например к nghttp2 или 3
Зачем плодить кучи г-на выделяя тонны CO2

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено ПомидорИзДолины , 06-Янв-24 10:53 
Потому что у дырявой сишки до сих пор нет нормального пакетного менеджера?

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено 12yoexpert , 06-Янв-24 10:56 
можно npm взять

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 06-Янв-24 10:57 
похоже это уже становится достоинством

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 06-Янв-24 11:02 
ну так оно будет включено во все пакетные менеджеры для всех языков которые поддерживают вызов c-функций ... а это все современные языки (почти)

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 06-Янв-24 11:14 
> Потому что у дырявой сишки до сих пор нет нормального пакетного менеджера?

Это пожалуй к лучшему - никто не включит 2FA под угрозой расстрела, и не скачает весь интернет, попутно сделав все пакеты репы нуулови^W неудалимыми.

А нормальный пакетный менеджер - это тот который в ОС, для руления ее компонентами. Зачем надо десять способов делать одно и то же? Получается потом - как вон там в соседних новостях.


"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено ПомидорИзДолины , 15-Янв-24 14:17 
> Это пожалуй к лучшему - никто не включит 2FA под угрозой расстрела,
> и не скачает весь интернет, попутно сделав все пакеты репы нуулови^W
> неудалимыми.

Ну дак надо проектировать нормально. С множеством мастеров и приватными зеркалами by-design.


"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 06-Янв-24 12:20 
- const unsigned sum = unsigned(name.size() + value.size());
+ size_t sum;
+ if (qAddOverflow(size_t(name.size()), size_t(value.size()), &sum))
+     return HeaderSize();

Ну забыли проверить размер, ну бывает!


"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Агл , 06-Янв-24 13:13 
"Безопасность в коде определяется не отсутствием дыр, а возможностью программистов их вовремя прикрывать!"

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 06-Янв-24 13:34 
Если попало в новости, значит, вовремя не прикрыли.

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 06-Янв-24 14:34 
Как раз вовремя, потому что не пришлось втихую патчить.

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 07-Янв-24 04:53 
Обезвреживать, глеб егорыч

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 06-Янв-24 15:20 
По версии местных ыкспертов, программисты, которые допускают такие ошибки, должны быть разжалованы из программистов, а проект быть нареченным говнокодом. Правда, за десятки лет так и не научились писать на языках с ручным управлением памяти без ошибок, так что по такой логике нет настоящих программистов.

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 06-Янв-24 18:19 
Именно так, потому как надо точно понимать то что ты пишешь и хотя бы владеть инструментами тестирования если ты такой тупой.
Чтобы писать на языках с управлением памятью надо почитать как это делается и иметь обычай перепроверять вручную все обращения к памяти.
А если эти упыри с с искуственным интеллектом заведут работать суперкомпьютер высчитывая вероятность написать код правильно ударами модотка по корпусу, то скорее всего он еще и выдаст что шанс ненулевой даже, хотя всем понятно что именно нулевой на практике.

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 06-Янв-24 23:39 
>  и хотя бы владеть инструментами тестирования если ты такой тупой.

гугловцы утверждают, что мало помогает, прям совсем. Но да, поверю тебе, что они там просто все тупые, поголовно.


"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 07-Янв-24 09:22 
Наоборот, гугловцы предлагают одни из лучших инструментов для тестирования и они помогают им еще как! Хром почти не крашится, уязвимостей немного и оперативно исправляются.

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 07-Янв-24 21:27 
Судя по тому что практически в любом мало мальски крупном проекте был юи такие ошибки, то стоит признать что ручное управление памятью оно не для кожанных мешков с костями. Раз за несколько десятков лет этот класс ошибок не только не остался в прошлом, но и остаётся в топе популярных.

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 06-Янв-24 15:45 
>> if (qAddOverflow(size_t(name.size()), size_t(value.size()), &sum))

зачем вообще писать на С++ генерируя такие конструкции


"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 06-Янв-24 19:11 
А что и на что вы предлагаете заменить?

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 07-Янв-24 16:38 
Тут гогнодизайн в самом API: вместо того, чтобы size() ф-ии как, и везде в мире, возвращали size_t, они возвращают ssize_t (знаковый тип). Нужно, очевидно, наконец таки убрать маразм из своей кодовой базы, ну или сделать костыль в виде некой свободной ф-ии типа питоновского len(...)

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 07-Янв-24 16:44 
Ну и qAddOverflow(...) зачем-то берёт последний аргумент по указателю, хотя в данном случае нужно по ссылке. Так обычно делают когда аргумент опиционален, но здесь он обязателен и если положить nullptr, то код сложится. В общем, весь Qt устарел на не один десяток лет. Ссылки в с++ появились где-то в 1985, первый Qt появился в 1991.

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено _ , 06-Янв-24 20:32 
> зачем вообще писать на С++ генерируя такие конструкции

А ты вообще в курсе _ЧТО_ такое  Qt ?!  

... не думаю! ;-)


"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 08-Янв-24 13:14 
Qt... Что-то из области маркетинга, видимо.

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 06-Янв-24 22:14 
Кути пришли из 90х. Ты помнишь плюсы тех лет?

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Советский инженер , 07-Янв-24 10:32 
>Кути пришли из 90х. Ты помнишь плюсы тех лет?

а из каких годов пришел HTTP/2 ?


"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноньимъ , 07-Янв-24 04:19 
А если всё проверять то будет не производительно (( и код дольше писать.

Окажется что сишечка не быстрее гошечки да джавы. А так нельзя.


"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 07-Янв-24 16:48 
В данном случае это особенность формата HPACK, он хитрый и нужно много проверять. Тут проверки на итоговые задержки практически не повлияют. Во всяком случае сначала нужно написать корректный код с проверками, а потом аккуратно оптимизировать. Тут же сразу на от...сь сложили два unsigned и результат проверили на переполнение сравнением с max<unsigned>(). Даже не пытались не нагогнокодить

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноньимъ , 07-Янв-24 17:12 
> Во всяком случае сначала нужно написать корректный код с проверками

Автоматически увеличивает строк кода в сишечной программы в 3-5 раз. Соответственно и трупрограммисто рабочих часов. На самом деле часов будет больше, так как растёт не линейно.

> Тут же сразу на от...сь сложили два unsigned

Обычная сишечная практика.

> и результат проверили на переполнение сравнением с max<unsigned>()

И вот реально, наняли же на работу, платят человеку ЗП.

> Даже не пытались не нагогнокодить

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


"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 07-Янв-24 17:35 
Чушь пишеь, это c++ и здесь всё можно посахарить до уровня питона

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноньимъ , 07-Янв-24 18:29 
Сишка и сипипишка конечно отличаются. Сишка просто несколько хромосом лишних имеет. Но сипипишка страдает острой маниакальной шизофренией.

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

Только С# изобрели много много лет назад, и ненужно вот таким вот в нём заниматься вообще, оно уже всё там есть.


"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 07-Янв-24 19:25 
Какая ты всё-таки бестолочь. C# тормоз и не гибкий ЯП

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноньимъ , 08-Янв-24 12:39 
> Какая ты всё-таки бестолочь. C# тормоз и не гибкий ЯП

Если С# - не гибкий, пишите на F#.


"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 07-Янв-24 21:48 
>С# изобрели много много лет назад

Ага, каждая программа гвоздями прибита к конкретной .Net Core, дофига зависимостей и пакетам нюгета. Ффзвезду ЯП с таким рантаймом.


"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено анон , 07-Янв-24 23:24 
.Net поддерживает компиляцию в нативный код (как и Java к слову, но с ограничениями)

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноньимъ , 08-Янв-24 12:18 
> Ага, каждая программа гвоздями прибита к конкретной .Net Core, дофига зависимостей и
> пакетам нюгета. Ффзвезду ЯП с таким рантаймом.

У С++ дела с этим гораздо ХУЖЕ.

И вообще, дотнетовские программы то обычно жаст воркс, и им для этого ненужен пАкЕтНый меНеджЕр.


"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Котофалк , 09-Янв-24 09:27 
>  жаст воркс

жаст котегов себе заведи жаст пяток. Ну чтобы выяснить, что кроме "жаст" ещё нужно чтоб к лотку были приучены. Да и других тонкостей вагон. Да и дотнетовский "жаст воркс" тоже ожидается что конфиги на месте (там где определил дистр), логи на месте, органы управления на месте. Но у дотнетчиков понятное дело не так. Весь пар в жалобы про пакетный менеджер в пабликах.

И да, "жаст ворк" это про static линковку? Это вы  так удивить пытались?


"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено cheburnator9000 , 07-Янв-24 13:11 
Просто кому-то захотелось выпендриться и написать феерическое "const unsigned" чтобы что не ясно, вместо условного unsigned long long или Qt-шного quint64.

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 07-Янв-24 17:15 
Размер то они проверили, но не осилили сложить два unsigned без переполнения

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 06-Янв-24 12:35 
При каких условиях можно достичь 2 ГиБ данных на один HTTP-заголовок... 0_o

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 06-Янв-24 13:37 
Куки OAuth2, например. Если они оказались всего 4 Кб, то вам просто повезло, выдали минимальный набор атрибутов. А в расширенном может быть всё, что угодно, включая home video в качестве параметров биометрии.

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 07-Янв-24 08:03 
Многие уязвимости как раз происходят, котому что "кому в голову придет посылать 2Гб хидер?"

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 07-Янв-24 16:53 
Не, это не так работает. Присылается 1 байт, а в заголовке указывается что на самом деле много больше. Гогнокодеры, которые не валидируют данные, в итоге получают выход за границы буфера

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 07-Янв-24 16:52 
Это защита от намеренных атак на протокол, клиент/сервер могут прислать что угодно

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 06-Янв-24 14:36 
БезопасТный в этом случае не помог бы.

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 07-Янв-24 10:00 
Помог бы. Если программа не существует, в ней 0 ошибок.

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено nora puchreiner , 06-Янв-24 14:36 
> Qt 5.15.17, 6.2.11, 6.5.4 и 6.6.2.

А откуда такие высокие номера версий, сразу +4 и +5?

В 6.2.x например последняя 6.2.7 (https://github.com/qt/qt5/tags), в 5.15.x - 5.15.12


"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 06-Янв-24 14:43 
Так коммерческие версии же. Их открывают только через год.

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 06-Янв-24 15:09 
Они вроде собирались переходить на открытие исходников коммерческой версии через 5 лет только.

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 06-Янв-24 15:42 
Пора на slint переходить.

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 07-Янв-24 09:26 
Переходи, разрешаю.

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 08-Янв-24 14:58 
Перешел. Прикольно.

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 08-Янв-24 10:22 
В расте в релизе по дефолту отключены проверки на переполнение чисел. Там были бы ровно такие же проблемы.

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 06-Янв-24 16:21 
Замечу, что это в том числе следствие подхода «Qt — это экосистема», с дурацким стремлением всё переписать и всё втянуть в себя, вместо того чтобы пилить UI–toolkit.

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 07-Янв-24 02:15 
Так всё порезано на модули. Используйте себе на здоровье только QtGui, если надо.

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 07-Янв-24 13:36 
Что в самом  Qt GUI багов и недоделанных фич мало, что ресурсы разбазаривают на всякое на коленке сделанное ненужно, которое никто адекватный использовать не будет.

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 07-Янв-24 15:03 
Ну как бы всё это можно использовать и в приложении гуишном, например, впн-клиент

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 07-Янв-24 21:06 
Опять же, если нужно кроссплатформ, то практически безальтернативно. А так поробуйте, чтобы вот это вот всё с миру по нитке, сборная солянка везде, не то чтобы даже заработала, а просто собралась и для разных дистров Linux, и для xBSD, и для оффтопиков разных.

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 07-Янв-24 21:40 
libcurl кроссплатформенна.

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 06-Янв-24 20:10 
Вколько раз говорили: тулкиты зло. Закопать свою реализцию и заменить на libcurl - и проблема решена.

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено _ , 06-Янв-24 20:36 
... до тех пок пока в libcurl не найдут прекрасное :)


PS: опенет заполонили какие то пугливые карапузики! А ... ну дык - каникулы :)


"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 07-Янв-24 01:17 
Автор libcurl занимается написанием http-библиотеки профессионально. Авторы Qt - чисто для галочки.

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Ананимус , 07-Янв-24 02:19 
Да он дырявый по самые помидоры.

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 07-Янв-24 10:04 
Да вроде нет

https://github.com/curl/curl/issues


"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Ананимус , 08-Янв-24 11:06 
Да точно, посмотри список их CVE.

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 07-Янв-24 17:08 
Но не умеет писать нормальную документацию. В частности, нет обзорной справки о устройстве кишок библиотеки, нет нормального пояснения в каких уровнях по API её можно использовать и т.д. Везде начинает ходить вокруг да около частностями, а обо всём выше читатель должен догадываться сам. Хотя для встраивания куда-либо это самые первые и важные вопросы. Либа в curl тоже в основном для галочки, основной его продукт это сама утилита.

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 07-Янв-24 21:38 
У меня документация никаких проблем не вызвала.

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Ананимус , 08-Янв-24 11:11 
> Либа в curl тоже в основном для галочки, основной его продукт это сама утилита.

Очень спорное утверждение. libcurl используется в git, cmake, rsyslog, libreoffice, icecast и куче других проектов.


"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено anonymous , 08-Янв-24 03:58 
Она же на С, а не на С++.


"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено cheburnator9000 , 07-Янв-24 13:07 
Зачем работодатель платит тебе зарплату если проще заменить тебя на более толкового человека??

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 07-Янв-24 17:38 
Более толковый человек уже наверняка где-то работает

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено ОШИБКА Отсутствуют данные в поле Name , 06-Янв-24 20:33 
Очень хороший протокол, зря ругаете. Три уже есть, миллион на подходе.

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 07-Янв-24 09:59 
Учитывая огромный объем проекта Qt всего одна уязвимость такого рода это не просто хорошо, это отлично. Осознайте масштаб проекта.

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 07-Янв-24 17:11 
Просто на Qt мало чего сделано, где могут искать уязвимости. Только неадекват будет использовать Qt сверх GUI для важного кода

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 07-Янв-24 21:09 
Интересно, проект KDE согласен с твоим мнением? ;)

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 07-Янв-24 21:43 
KDE - это абсолютно неважный код. Судя по тому, что плазма по-прежнему падает.

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 07-Янв-24 23:30 
И самое странное, что она падает только у тех, кто ей не пользуется.

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 08-Янв-24 18:17 
Проект KDE может иметь какое угодно мнение, но оно никого не волнует с их менее 1% использования на десктопах. Массово не интересны ни потенциальным кулхацкерам, ни исследователям проблем с безопасностью.

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 09-Янв-24 15:29 
32% из 7.23% (Linux-десктопы) всех десктопов.

"Уязвимость в предлагаемой в Qt реализации протокола HTTP/2 "
Отправлено Аноним , 10-Янв-24 00:34 
хм у QT есть свой http2? удивлен