The OpenNET Project / Index page

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

Уязвимость в http2-модуле из состава Node.js

31.07.2021 09:08

Разработчики серверной JavaScript-платформы Node.js опубликовали корректирующие выпуски 12.22.4, 14.17.4 и 16.6.0, в которых частично устранена уязвимость (CVE-2021-22930) в модуле http2 (клиент HTTP/2.0), позволяющая инициировать крах процесса или потенциально организовать выполнение своего кода в системе при обращении к подконтрольному злоумышленнику хосту.

Проблема вызвана обращением к уже освобождённой области памяти при закрытии соединения после получения кадров RST_STREAM (сброс потока) для потоков, в которых выполняются интенсивные операции чтения, блокирующие запись. В случае получения кадра RST_STREAM без указания кода ошибки модуль http2 дополнительно вызывает процедуру очистки уже полученных данных, из которой для уже закрытого потока повторно вызывается обработчик закрытия, что приводит к двойному освобождению структур данных.

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

  1. Главная ссылка к новости (https://nodejs.org/en/blog/vul...)
  2. OpenNews: Выпуск серверной JavaScript-платформы Node.js 16.0
  3. OpenNews: Опасные уязвимости в QEMU, Node.js, Grafana и Android
  4. OpenNews: Бэкдор в зависимости к event-stream, популярной библиотеке для Node.js
  5. OpenNews: Автор Node.js представил защищённую JavaScript-платформу Deno 1.0
  6. OpenNews: Новые выпуски Node.js 13.8, 12.15 и 10.19 с устранением уязвимостей
Лицензия: CC-BY
Тип: Проблемы безопасности
Короткая ссылка: https://opennet.ru/55568-node.js
Ключевые слова: node.js
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (57) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Аноним (2), 09:38, 31/07/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Ага, круто. Исправили, но не до конца, и заодно всем об этом сказали. Кто-то еще держит у себя нодежс?
     
     
  • 2.4, Аноним (4), 09:54, 31/07/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Умные люди перед node ставят nginx (с включенным http2) и проксируют в node простым http.
     
     
  • 3.5, Онаним (?), 10:47, 31/07/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Чего проксируют-то? Речь о клиентской либе.
     
     
  • 4.22, НяшМяш (ok), 15:12, 31/07/2021 [^] [^^] [^^^] [ответить]  
  • +/
    В ноде в http и http2 находятся как клиент, так и сервер.
     
     
  • 5.50, Аноним (50), 10:47, 03/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Уязвимость то в клиенте.
     
     
  • 6.55, НяшМяш (ok), 22:20, 04/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Имеется ввиду, что в ноде библиотеки не разделены на серверную и клиентскую часть. И очень часто уязвимость касается и того, и другого из-за общей кодовой базы.
     
  • 3.7, Аноним (7), 10:48, 31/07/2021 [^] [^^] [^^^] [ответить]  
  • +10 +/
    Умные люди на nodejs не пишут.
     
     
  • 4.9, Самый Лучший Гусь (?), 11:03, 31/07/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Умные люди вообще не пишут и не говорят
     
     
  • 5.24, Аноним (24), 15:40, 31/07/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Если ребёнок с психическим расстроиством не смог заговорить в восемь лет. Не беда. Аноним с опеннета сказал что пацан гений.
     
  • 5.25, ъ (?), 16:18, 31/07/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    т.у. ты не умён.
     
  • 4.30, Аноним (30), 23:55, 31/07/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    На чем же они пишут?
     
  • 4.40, Отражение луны (ok), 13:18, 01/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Да, пхп наше все (нет)
     
  • 3.28, Аноним (2), 20:05, 31/07/2021 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Вообще проблема видимо незамеченной осталась. В браузерах нодажс используется. Если бы вы собирали их из исходников знали бы что без ноды собрать это надо постараться. А потом включаем мозг и догоняем что это уязвимость и браузеров. Клиент и сервер в одной пачке.
     
     
  • 4.35, Аноним (35), 00:59, 01/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    В Chromium-браузерах используется Javascript-движок V8, тот же, который в NodeJS. Но тут обратный путь - в NodeJS движок взят из Хромиума.

    А что нужно для сборки - это вообще смешной аргумент. Для сборки нужен компилятор C++, это не означает, что компилятор C++ будет в составе браузера.

     
     
  • 5.38, Аноним (38), 07:10, 01/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    В мире существуют не только хромовые браузеры. Но да, хорошо если эта подозрительная дыра не затронула браузеры по полной программе. И для Firefox нужен Rust для сборки. Что в Gentoo приблизительно уравнивает первую сборку браузеров по скорости, но потом более легкий Firefox собирается быстрее, потому что Rust обновляют относительно редко.
     
  • 3.32, w3c всё (?), 00:49, 01/08/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    умные люди юзают http1.1 + websocket + ssh
     
  • 3.39, Нанобот (ok), 09:40, 01/08/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > клиент HTTP/2.0
    > Умные люди перед node ставят nginx

    😂 И как, помогает?

     

  • 1.3, Аноним (4), 09:48, 31/07/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А эксплойт то в части на плюсах. Это так мило.
    https://github.com/nodejs/node/commit/e47d2d25775336ded70fcffb8351ec0d95ecb925
     
     
  • 2.8, нах.. (?), 10:59, 31/07/2021 [^] [^^] [^^^] [ответить]  
  • +6 +/
    И не говори, нодовцы не умеют ни явя ни в плюсы.
     
     
  • 3.11, Аноним (11), 11:43, 31/07/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    у меня наоборот, могу в ява и плюсы, а жс тяжко даётся.
     
     
  • 4.12, kissmyass (?), 12:03, 31/07/2021 [^] [^^] [^^^] [ответить]  
  • –3 +/
    потому что, чтобы любить JS надо быть дегенератом

    я его тоже ненавижу, но использую - выбора нет

     
     
  • 5.13, Аноним (13), 12:10, 31/07/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ждем распространения wasm чтобы фронт можно было писать на человеческих языках
     
     
  • 6.18, kissmyass (?), 13:57, 31/07/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Ждем распространения wasm чтобы фронт можно было писать на человеческих языках

    ну хз я и так юзаю Bridge.NET, но его прикрыли из-за не сильно большой популярности

    но уже есть форк H5 называется, можно писать на C#

    минус только что WASM (Blazor), что бридж - это размер файлов рантайма лишний мегабайт или даже два

     
  • 6.33, w3c всё (?), 00:52, 01/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    сиси-плюсплюс - с емскриптером, go со своим встроенным компилятором - аж бегом
     
  • 5.41, Отражение луны (ok), 13:21, 01/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Чтобы js любить нужно его понимать. Т.е. он не для джунов и не для опеннетовцев
     
     
  • 6.42, kissmyass (?), 14:36, 01/08/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Чтобы js любить нужно его понимать. Т.е. он не для джунов и
    > не для опеннетовцев

    а что там непонятного, на заре интернета придумали якобы простой и полностью упоротый язык в меру своих знаний, за 20 лет накачали это УГ стероидами

    от того что ты понимаешь парадигму JS она не становится конфеткой

     
     
  • 7.43, Отражение луны (ok), 18:49, 01/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Парадигма js с тех пор cильно сместилась.
    В общем-то оснвным преимуществом js является асинхронность, отлично поддеживаемая на уровне самого языка. Я в общем-то готов писать на любом языке, имеющем event loop под копотом, потому что это эффективно с точки зрения потребляемых ресурсов. Но вот беда - ни питон, ни джава в полноценную асинхронность так и не смогли. Про .net не скажу, не юзал.
    Понимание js в общем-то сейчас и сводится к пониманию ивент лупа, замыканий, и тому, как не засрать память. Разобраться с этим не сложно, но многие вещи так же не лежат на поверхности.
     
     
  • 8.44, kissmyass (?), 05:58, 02/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    отлично поддерживаемый колбек хелом в дотнете async появился лет на 5 раньше в ... текст свёрнут, показать
     
     
  • 9.45, Аноним (4), 09:46, 02/08/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Давно у нас отрыжка оффтопика стала медом то Поддержка нормальных ОС только нед... текст свёрнут, показать
     
  • 9.54, Отражение луны (ok), 10:48, 04/08/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Колбэкхэл случается когда не умеешь писать код В целом никаких с ним проблем не... текст свёрнут, показать
     
  • 8.46, 1 (??), 10:09, 02/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    юзай Erlang Льюк ... текст свёрнут, показать
     
     
  • 9.56, Аноним (56), 06:55, 05/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Это что за загадочные закорючки Не про обфускаторы кода речь вроде шла ... текст свёрнут, показать
     
  • 3.20, макпыф (ok), 15:07, 31/07/2021 [^] [^^] [^^^] [ответить]  
  • +/
    причем тут java?
     
     
  • 4.36, Аноним (35), 01:03, 01/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    А что не так? В nodejs нет кода на java, значит, разработчики nodejs не умеют в java. Всё логично! :-)
     
  • 3.48, Аноним (4), 16:48, 02/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Так либу писали не они https://nghttp2.org/

    Вот и доверяй плюсоватым пограмистам.

     
  • 2.23, ХрюХрю (?), 15:28, 31/07/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    вот вот ноду надо на расте переписать...
     
     
  • 3.26, Аноноша (?), 18:33, 31/07/2021 [^] [^^] [^^^] [ответить]  
  • +/
    уже есть deno
     

  • 1.6, Онаним (?), 10:47, 31/07/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Плять.
    Хорошо что я это счастье в сеть пропускаю по-минимуму, ни одного критичного места на нём ни у одного смузихлёба так и нет.
     
  • 1.10, Аноним (10), 11:23, 31/07/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >JavaScript-платформы Node.js
    >Проблема вызвана обращением к уже освобождённой области памяти

    Как так-то?! JavaScript это же безопасТная работа с памятью!

     
     
  • 2.14, Аноним (14), 12:16, 31/07/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Там, наверное, модуль на С.
     
  • 2.15, Аноним (15), 12:28, 31/07/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Анон, ну надо же читать новость перед написание коммента!
    Там же ссылка на исправление есть https://github.com/nodejs/node/commit/b263f2585ab53f56e0e22b46cf1f8519a8af8a05 - node_http2.cc
     
     
  • 3.53, Аноним (53), 18:57, 03/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Естественно. Если обезьянкам или растоманам доверить важный код то так и выйдет.
     
     
  • 4.57, another_one (ok), 15:44, 07/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Согласен, си-прогеры те еще обезьянки - https://nghttp2.org/
     

  • 1.16, Аноним (16), 12:28, 31/07/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Уязвимость в http2-модуле из состава Node.js

    Ну что сказать... http2... Node.js... Уязвимость :)

     
     
  • 2.17, Аноним (17), 12:36, 31/07/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ночь. Улица. Фонарь. Аптека
     
     
  • 3.34, десу всё (?), 00:55, 01/08/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Стол. Компьютер. Аниме. Десу-Десу.
     
     
  • 4.47, Аноним (4), 16:42, 02/08/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Бака.
     
  • 2.19, Аноним (4), 14:26, 31/07/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Ну что сказать... http2... Node.js... Уязвимость :)

    Ты пропусти самое главное: http2... Node.js... C++... Уязвимость :)

    Как говорится, из сказки дырявый язык не выкинешь...

     

  • 1.21, НяшМяш (ok), 15:11, 31/07/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Автор, теперь ты обязан каждую уязвимость здесь постить ))


    Например, эту "пофиксили" в 14.17.4.
    В 14.17.2 пофиксили ещё две CVE (инсталлятор на винде и OOB в DNS lookup).
    В 14.16.1 пофиксили 3 CVE (две OpenSSL и одну с npm).

    Только на текущем LTS тысячи их.

     
  • 1.27, Аноним (27), 19:24, 31/07/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Не вижу комента, что надо было писать на Rust %)
     
     
  • 2.29, Аноним (29), 21:20, 31/07/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Не на Rust, а на TypeScript.
     
  • 2.31, Аноним (30), 23:57, 31/07/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Было выше. https://deno.land/
     

  • 1.37, Аноним (35), 01:05, 01/08/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    http/2 настолько переусложненный протокол, что той или иной серьезности уязвимости в серверах и клиентах, написанных на "опасных" языках, были вообще в каждой реализации. А где не были, там их стоит поискать :-)
     
     
  • 2.52, Аноним (53), 18:02, 03/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ой, языковед безопастных языков.

    в Node.js тоже нет работы с памятью. и что?

     

  • 1.49, Аноним (4), 16:52, 02/08/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Баг то не в nodejs, а в https://nghttp2.org/
    Это не одно и тоже, а внешняя зависимость (как и openSSL).
    Автор новости, похайповал?
     
  • 1.51, Аноним (53), 15:54, 03/08/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > Уязвимость в http2-модуле из состава Node.js
    > Разработчики серверной JavaScript-платформы Node.js

    О да, разработчики. Как на расте

     
     
  • 2.58, another_one (ok), 15:46, 07/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Чистокровные сишники же накосячили, впрочем, как всегда -  https://nghttp2.org/
     

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



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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