The OpenNET Project / Index page

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

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

06.01.2024 10:14

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

  1. Главная ссылка к новости (https://www.qt.io/blog/securit...)
  2. OpenNews: Уязвимость в протоколе HTTP/2, задействованная в крупнейшей DDoS-атаке
  3. OpenNews: Обновление DNS-сервера BIND c устранением уязвимости в реализации DNS-over-HTTPS
  4. OpenNews: Уязвимость в приложениях на базе HTTP-библиотеки Hyper
  5. OpenNews: Релиз http-сервера Apache 2.4.58 с устранением DoS-уязвимостей в HTTP/2
  6. OpenNews: Релиз http-сервера Lighttpd 1.4.73 с устранением DoS-уязвимостей в HTTP/2
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/60395-qt
Ключевые слова: qt, http2
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (98) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.6, Аноним (6), 10:46, 06/01/2024 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +5 +/
     

     ....ответы скрыты (6)

  • 1.19, Аноним (19), 12:20, 06/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    - const unsigned sum = unsigned(name.size() + value.size());
    + size_t sum;
    + if (qAddOverflow(size_t(name.size()), size_t(value.size()), &sum))
    +     return HeaderSize();

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

     
     
  • 2.22, Агл (?), 13:13, 06/01/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    "Безопасность в коде определяется не отсутствием дыр, а возможностью программистов их вовремя прикрывать!"
     
     
  • 3.23, Аноним (23), 13:34, 06/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Если попало в новости, значит, вовремя не прикрыли.
     
     
  • 4.26, Аноним (26), 14:34, 06/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Как раз вовремя, потому что не пришлось втихую патчить.
     
  • 3.50, Аноним (50), 04:53, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Обезвреживать, глеб егорыч
     
  • 2.32, Аноним (32), 15:20, 06/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    По версии местных ыкспертов, программисты, которые допускают такие ошибки, должны быть разжалованы из программистов, а проект быть нареченным говнокодом. Правда, за десятки лет так и не научились писать на языках с ручным управлением памяти без ошибок, так что по такой логике нет настоящих программистов.
     
     
  • 3.37, Аноним (37), 18:19, 06/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Именно так, потому как надо точно понимать то что ты пишешь и хотя бы владеть инструментами тестирования если ты такой тупой.
    Чтобы писать на языках с управлением памятью надо почитать как это делается и иметь обычай перепроверять вручную все обращения к памяти.
    А если эти упыри с с искуственным интеллектом заведут работать суперкомпьютер высчитывая вероятность написать код правильно ударами модотка по корпусу, то скорее всего он еще и выдаст что шанс ненулевой даже, хотя всем понятно что именно нулевой на практике.
     
     
  • 4.44, Аноним (44), 23:39, 06/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >  и хотя бы владеть инструментами тестирования если ты такой тупой.

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

     
     
  • 5.55, Аноним (55), 09:22, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Наоборот, гугловцы предлагают одни из лучших инструментов для тестирования и они помогают им еще как! Хром почти не крашится, уязвимостей немного и оперативно исправляются.
     
  • 4.86, Аноним (86), 21:27, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Судя по тому что практически в любом мало мальски крупном проекте был юи такие ошибки, то стоит признать что ручное управление памятью оно не для кожанных мешков с костями. Раз за несколько десятков лет этот класс ошибок не только не остался в прошлом, но и остаётся в топе популярных.
     
  • 2.35, Аноним (6), 15:45, 06/01/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >> if (qAddOverflow(size_t(name.size()), size_t(value.size()), &sum))

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

     
     
  • 3.38, Аноним (38), 19:11, 06/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А что и на что вы предлагаете заменить?
     
     
  • 4.67, Аноним (67), 16:38, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Тут гогнодизайн в самом API: вместо того, чтобы size() ф-ии как, и везде в мире, возвращали size_t, они возвращают ssize_t (знаковый тип). Нужно, очевидно, наконец таки убрать маразм из своей кодовой базы, ну или сделать костыль в виде некой свободной ф-ии типа питоновского len(...)
     
  • 4.68, Аноним (67), 16:44, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну и qAddOverflow(...) зачем-то берёт последний аргумент по указателю, хотя в данном случае нужно по ссылке. Так обычно делают когда аргумент опиционален, но здесь он обязателен и если положить nullptr, то код сложится. В общем, весь Qt устарел на не один десяток лет. Ссылки в с++ появились где-то в 1985, первый Qt появился в 1991.
     
  • 3.40, _ (??), 20:32, 06/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > зачем вообще писать на С++ генерируя такие конструкции

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

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

     
     
  • 4.101, Аноним (101), 13:14, 08/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Qt... Что-то из области маркетинга, видимо.
     
  • 3.43, Аноним (43), 22:14, 06/01/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Кути пришли из 90х. Ты помнишь плюсы тех лет?
     
     
  • 4.61, Советский инженер (ok), 10:32, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >Кути пришли из 90х. Ты помнишь плюсы тех лет?

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

     
  • 2.49, Аноньимъ (ok), 04:19, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А если всё проверять то будет не производительно (( и код дольше писать.

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

     
     
  • 3.69, Аноним (67), 16:48, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    В данном случае это особенность формата HPACK, он хитрый и нужно много проверять. Тут проверки на итоговые задержки практически не повлияют. Во всяком случае сначала нужно написать корректный код с проверками, а потом аккуратно оптимизировать. Тут же сразу на от...сь сложили два unsigned и результат проверили на переполнение сравнением с max<unsigned>(). Даже не пытались не нагогнокодить
     
     
  • 4.76, Аноньимъ (ok), 17:12, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Во всяком случае сначала нужно написать корректный код с проверками

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

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

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

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

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

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

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

     
     
  • 5.79, Аноним (67), 17:35, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Чушь пишеь, это c++ и здесь всё можно посахарить до уровня питона
     
     
  • 6.81, Аноньимъ (ok), 18:29, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Сишка и сипипишка конечно отличаются. Сишка просто несколько хромосом лишних имеет. Но сипипишка страдает острой маниакальной шизофренией.

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

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

     
     
  • 7.82, Аноним (67), 19:25, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Какая ты всё-таки бестолочь. C# тормоз и не гибкий ЯП
     
     
  • 8.100, Аноньимъ (ok), 12:39, 08/01/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Если С - не гибкий, пишите на F ... текст свёрнут, показать
     
  • 7.90, Аноним (90), 21:48, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >С# изобрели много много лет назад

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

     
     
  • 8.91, анон (?), 23:24, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Net поддерживает компиляцию в нативный код как и Java к слову, но с ограничени... текст свёрнут, показать
     
  • 8.99, Аноньимъ (ok), 12:18, 08/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    У С дела с этим гораздо ХУЖЕ И вообще, дотнетовские программы то обычно жаст ... текст свёрнут, показать
     
     
  • 9.117, Котофалк (?), 09:27, 09/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    жаст котегов себе заведи жаст пяток Ну чтобы выяснить, что кроме жаст ещё нуж... текст свёрнут, показать
     
  • 2.63, cheburnator9000 (ok), 13:11, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Просто кому-то захотелось выпендриться и написать феерическое "const unsigned" чтобы что не ясно, вместо условного unsigned long long или Qt-шного quint64.
     
  • 2.77, Аноним (67), 17:15, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Размер то они проверили, но не осилили сложить два unsigned без переполнения
     

  • 1.20, Аноним (20), 12:35, 06/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    При каких условиях можно достичь 2 ГиБ данных на один HTTP-заголовок... 0_o
     
     
  • 2.25, Аноним (23), 13:37, 06/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Куки OAuth2, например. Если они оказались всего 4 Кб, то вам просто повезло, выдали минимальный набор атрибутов. А в расширенном может быть всё, что угодно, включая home video в качестве параметров биометрии.
     
  • 2.54, Аноним (54), 08:03, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Многие уязвимости как раз происходят, котому что "кому в голову придет посылать 2Гб хидер?"
     
     
  • 3.72, Аноним (67), 16:53, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Не, это не так работает. Присылается 1 байт, а в заголовке указывается что на самом деле много больше. Гогнокодеры, которые не валидируют данные, в итоге получают выход за границы буфера
     
  • 2.71, Аноним (67), 16:52, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это защита от намеренных атак на протокол, клиент/сервер могут прислать что угодно
     

  • 1.27, Аноним (26), 14:36, 06/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    БезопасТный в этом случае не помог бы.
     
     
  • 2.58, Аноним (55), 10:00, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Помог бы. Если программа не существует, в ней 0 ошибок.
     

  • 1.28, nora puchreiner (?), 14:36, 06/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    > 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

     
     
  • 2.29, Аноним (29), 14:43, 06/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Так коммерческие версии же. Их открывают только через год.
     
     
  • 3.30, Аноним (30), 15:09, 06/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Они вроде собирались переходить на открытие исходников коммерческой версии через 5 лет только.
     

  • 1.34, Аноним (34), 15:42, 06/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Пора на slint переходить.
     
     
  • 2.56, Аноним (55), 09:26, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Переходи, разрешаю.
     
     
  • 3.103, Аноним (103), 14:58, 08/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Перешел. Прикольно.
     
  • 2.95, Аноним (95), 10:22, 08/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    В расте в релизе по дефолту отключены проверки на переполнение чисел. Там были бы ровно такие же проблемы.
     

  • 1.36, Аноним (36), 16:21, 06/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Замечу, что это в том числе следствие подхода «Qt — это экосистема», с дурацким стремлением всё переписать и всё втянуть в себя, вместо того чтобы пилить UI–toolkit.
     
     
  • 2.46, Аноним (26), 02:15, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Так всё порезано на модули. Используйте себе на здоровье только QtGui, если надо.
     
     
  • 3.65, Аноним (65), 13:36, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Что в самом  Qt GUI багов и недоделанных фич мало, что ресурсы разбазаривают на всякое на коленке сделанное ненужно, которое никто адекватный использовать не будет.
     
     
  • 4.66, Аноним (20), 15:03, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну как бы всё это можно использовать и в приложении гуишном, например, впн-клиент
     
  • 4.83, Аноним (26), 21:06, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Опять же, если нужно кроссплатформ, то практически безальтернативно. А так поробуйте, чтобы вот это вот всё с миру по нитке, сборная солянка везде, не то чтобы даже заработала, а просто собралась и для разных дистров Linux, и для xBSD, и для оффтопиков разных.
     
     
  • 5.88, Аноним (90), 21:40, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    libcurl кроссплатформенна.
     

  • 1.39, Аноним (39), 20:10, 06/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Вколько раз говорили: тулкиты зло. Закопать свою реализцию и заменить на libcurl - и проблема решена.
     
     
  • 2.42, _ (??), 20:36, 06/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    ... до тех пок пока в libcurl не найдут прекрасное :)


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

     
     
  • 3.45, Аноним (45), 01:17, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Автор libcurl занимается написанием http-библиотеки профессионально. Авторы Qt - чисто для галочки.
     
     
  • 4.47, Ананимус (?), 02:19, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Да он дырявый по самые помидоры.
     
     
  • 5.59, Аноним (55), 10:04, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Да вроде нет

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

     
     
  • 6.96, Ананимус (?), 11:06, 08/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Да точно, посмотри список их CVE.
     
  • 4.74, Аноним (67), 17:08, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Но не умеет писать нормальную документацию. В частности, нет обзорной справки о устройстве кишок библиотеки, нет нормального пояснения в каких уровнях по API её можно использовать и т.д. Везде начинает ходить вокруг да около частностями, а обо всём выше читатель должен догадываться сам. Хотя для встраивания куда-либо это самые первые и важные вопросы. Либа в curl тоже в основном для галочки, основной его продукт это сама утилита.
     
     
  • 5.87, Аноним (90), 21:38, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    У меня документация никаких проблем не вызвала.
     
  • 5.97, Ананимус (?), 11:11, 08/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Либа в curl тоже в основном для галочки, основной его продукт это сама утилита.

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

     
  • 4.94, anonymous (??), 03:58, 08/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Она же на С, а не на С++.

     
  • 2.62, cheburnator9000 (ok), 13:07, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Зачем работодатель платит тебе зарплату если проще заменить тебя на более толкового человека??
     
     
  • 3.80, Аноним (67), 17:38, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Более толковый человек уже наверняка где-то работает
     

  • 1.41, ОШИБКА Отсутствуют данные в поле Name (?), 20:33, 06/01/2024 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/
     
  • 1.57, Аноним (55), 09:59, 07/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Учитывая огромный объем проекта Qt всего одна уязвимость такого рода это не просто хорошо, это отлично. Осознайте масштаб проекта.
     
     
  • 2.75, Аноним (67), 17:11, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Просто на Qt мало чего сделано, где могут искать уязвимости. Только неадекват будет использовать Qt сверх GUI для важного кода
     
     
  • 3.84, Аноним (26), 21:09, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Интересно, проект KDE согласен с твоим мнением? ;)
     
     
  • 4.89, Аноним (90), 21:43, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    KDE - это абсолютно неважный код. Судя по тому, что плазма по-прежнему падает.
     
     
  • 5.92, Аноним (92), 23:30, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    И самое странное, что она падает только у тех, кто ей не пользуется.
     
  • 4.111, Аноним (67), 18:17, 08/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Проект KDE может иметь какое угодно мнение, но оно никого не волнует с их менее 1% использования на десктопах. Массово не интересны ни потенциальным кулхацкерам, ни исследователям проблем с безопасностью.
     
     
  • 5.123, Аноним (123), 15:29, 09/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    32% из 7.23% (Linux-десктопы) всех десктопов.
     

  • 1.124, Аноним (124), 00:34, 10/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    хм у QT есть свой http2? удивлен
     

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



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

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