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

Исходное сообщение
"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 млн загрузок в неделю"

Отправлено opennews , 11-Янв-23 13:52 
В JavaScript-библиотеке JsonWebToken с реализацией технологии JSON Web Token (JWT)  выявлена уязвимость (CVE-2022-23529), позволяющая добиться удалённого выполнения кода при верификации специально оформленного JWT-запроса. За последнюю неделю библиотека была загружена из каталога NPM более 10 млн раз...

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


Содержание

Сообщения в этом обсуждении
"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Аноним , 11-Янв-23 13:52 
> более 10 млн раз

Откуда такие цифры? В интернете реально столько много сайтов, что какая-то левая либа загружается милионы раз?


"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Аноним , 11-Янв-23 13:55 
Первый день в интернете? Или гуманитарий? Или  млао витаминов ел? Тебе бы поработать над собой с тобой явно что-то не так.

Заходишь на https://www.npmjs.com/package/jsonwebtoken графа Weekly downloads.


"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Деанон , 11-Янв-23 14:16 
Гуманитарии это фронтенд-верстальщики, не осилившие бэкенд.

"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Аноним , 11-Янв-23 14:32 
node.js это бэкэнд.
JavaScript универсальный язык.

"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Деанон , 11-Янв-23 15:44 
так я и говорю, что не осилили и сделали nodeJS

"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Деанон , 11-Янв-23 14:15 
Это же вебмакаки. Там нельзя без обновлений и передёргиваний npm install и т.п. Каждая муха тянет за собой всю паутину в node_modules.

"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Вы забыли заполнить поле Name , 11-Янв-23 15:52 
Роботы грузят

"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено rshadow , 11-Янв-23 17:10 
Например если не заморачиваться, и не подымать локальный реп. А просто при сборке в CI всегда качать пакеты заново. Все проекты поставившие его в зависимости будут на каждый чих программиста заново все собирать и качать.

"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено . , 11-Янв-23 21:00 
> Откуда такие цифры?

Эта либа качается каждый раз при открытии сайтов, которые юзают эту либу.


"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Аноним , 11-Янв-23 13:58 
И тут как вы уже догадались никакой бы безопасный язык не помог. Зачем тогда ломать голову синтаксисом р**** когда можно на нём же словить точно такую же уязвимость? Но потратить в 10 раз больше времени на написание.

"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено амоним , 11-Янв-23 21:59 
ну вроде, чтобы в расте передать хренпоймичто, вместо чего-то другого все же надо поприседать

"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Аноним , 11-Янв-23 14:05 
>в NPM-пакете

Ничего интересного, расходимся.


"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Аноним , 11-Янв-23 14:06 
чушь какая-то, как этот объект сформировать-то удаленно? https://github.com/github/advisory-database/pull/1595

"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Аноним , 11-Янв-23 14:10 
> JavaScript
> В соответствии со спецификацией <...>, но в коде <...> это не учитывается

Никогда такого не было и опять то же самое!


"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Весельчак У , 11-Янв-23 14:14 
Если ты передаёшь с клиента объект и никак его не проверяешь, то это сама по себе уязвимость.

"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Деанон , 11-Янв-23 14:18 
Хуже когда ты тянешь с гитхаба/npm импорт, а за ним еще 20 импортов, половину из которых просто какой-то левый чувак для поиграться наваял не глядя за 5 минут.

"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Аноним , 11-Янв-23 15:07 
Хуже когда он, не не глядя наваял за 5 минут. А специально несколько часов сидел и внедрял бекдор.

"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено амоним , 11-Янв-23 22:00 
иногда даже много дней

"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Аноним , 11-Янв-23 14:27 
> в коде JsonWebToken это не учитывается и он всегда разбирается как строка с использованием метода toString()

Как раз-таки учитывается, именно поэтому и приводится явно к строке, потому как и строка, и буфер имеют метод toString().

В оригинальной реализации все сделано верно, это клиент библиотеки должен подсовывать ему аргумент правильного типа. И нет, библиотека не должна делать instanceof Buffer, поскольку:

1) программировать следует на уровне интерфейса, а не на уровне реализации,
2) instanceof Buffer не защитит от кастомных методов toString (Object.assign(new Buffer(), { toString: () => 'PWNED' }))

Вердикт: новость насквозь желтая.


"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Аноним , 11-Янв-23 14:42 
>1) программировать следует на уровне интерфейса, а не на уровне реализации,

нету же статической типизации в js

хотя конечно я не знаю как нужно, как лучше js библиотеки проектировать
"Warning: When the token comes from an untrusted source (e.g. user input or external requests), the returned decoded payload should be treated like any other user input; please make sure to sanitize and only work with properties that are expected

token is the JsonWebToken string
"


"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Аноним , 11-Янв-23 14:47 
"secretOrPublicKey is a string (utf-8 encoded), buffer, or KeyObject containing either the secret for HMAC algorithms, or the PEM encoded public key for RSA and ECDSA."

у них в документации указано что может быть не только строка.


"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Аноним , 11-Янв-23 15:04 
Книжку какую-нибудь умную почитай. «Не должна», совсем вебмакаки обленились. Начини с Роберта Мартина «Чистая Архитектура» заодно «Чистый код» и больше чушь не пиши. Никто у них ничего не должен, капец.

"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Аноним , 11-Янв-23 15:13 
Но как чистая архитектура относится к библиотеке для работы с тренерами?
Она же про разделение приложения на слои и просторение приложения независимым от фреймворков.
Вы точно эту умную книгу читали или только название?

"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Аноним , 11-Янв-23 15:16 
С токенами

"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Аноним , 11-Янв-23 15:14 
Ты эти свои книжки-то хоть сам открывал? В особенности те места, где настоятельно рекомендуется зависеть не от реализации, а от интерфейсов? Для проверки типов аргументов уже есть тайпскрипт, причем для сабжа тайпскриптовые определения имеются. Или ты предлагаешь их еще вдобавок проверять в рантайме?

"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Вы забыли заполнить поле Name , 11-Янв-23 15:57 
Ну нодежс проверяет аргументы своего апи в рантайме, хотя тайпскрипт декларации тоже есть.

"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Аноним , 11-Янв-23 16:06 
в документации явно указано что функция может Buffer принять.
И в определениях typescript скорее всего

"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Бывалый смузихлёб , 11-Янв-23 17:33 
Толку от тайпскриптовой “типизации“, если некорректные типы данных могут передаваться в рантайме ?

"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Омномним , 11-Янв-23 15:06 
В жабоскрипте сейчас реально можно в таком виде объекты передать и они разберутся?

[pacefalm]


"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено another_one , 11-Янв-23 15:19 
Нет, нельзя. Новость можно удалять, т.к. RCE собираются пометить как "withdrawn" и отозвать.

"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Омномним , 11-Янв-23 16:19 
А, ну то есть ещё до такого не докатились, и то ладно.

"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Аноним , 11-Янв-23 15:09 
>если передать в secretOrPublicKey вместо строки JavaScript-объект с собственным методом toString(), то при проверке будет вызван указанный атакующим код.
>JsonWebTokens
>JSON

Ну пойди, передай, через JSON. notabug, wontfix.


"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено another_one , 11-Янв-23 15:13 
> вместо строки JavaScript-объект с собственным методом toString()

И откуда объект возьмется на бэкенде то? JSON не передает функции. Это не уязвимость, а какая-то хрень.


"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Аноним , 11-Янв-23 15:42 
Эта новость - фейк.
По сети невозможно передать объект с методом.
Никакого RCE тут нет, как и уязвимости.

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


OpenNet постит чушь и непроверенную информацию. Уже неоднократно написали, что данный CVE - был шуткой, чтобы показать как СМИ и базы CVE не проверяют сути заявленных уязвимостей.


"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Аноним , 11-Янв-23 21:02 
CVE присвоен и исправление авторами пакета выпущено. Какая же это шутка.

"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Аноним , 11-Янв-23 21:09 
https://nvd.nist.gov/vuln/detail/CVE-2022-23529  Base Score:  9.8 CRITICAL

Уведомление о наличии уязвимости от разработчиков jsonwebtoken: https://github.com/auth0/node-jsonwebtoken/security/advisori...


"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено another_one , 12-Янв-23 10:06 
Этот фейк уже вышел за пределы гитхаба. Возможно, после такого скандала перестанут создавать CVE без проверки на реальный эксплоит.

https://mobile.twitter.com/testanull/status/1612794234314317824


"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Вы забыли заполнить поле Name , 11-Янв-23 16:03 
Шаблон для новостей Джаваскрипта:

RCE-уязвимость в NPM-пакете ______, насчитывающем ___ млн загрузок в неделю

p.s. Рекомендуется указывать большие значения для кол-ва загрузок, от 10 млн и выше


"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Аноним , 11-Янв-23 16:21 
Милый комментарий на фоне того, что очередная уязвимость оказалась фейком (вслед за отозванными фейками c lodash и hogan). Но иксперт не вникал в текст, иксперт бежал быстрее писать коммент!

"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Аноним , 11-Янв-23 16:23 
Шаблон комментария для опеннет эксперта:

Веб-макаки, растоманы, смузихлебы, формошлепы нашлепали очередную ненужную поделку.

p.s. Рекомендуется указывать больше матов, так как модераторы экспертные мнения не удаляют.


"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Деанон , 11-Янв-23 17:59 
Хотя бы эксперта, а не просто вебмакаки и непричастных к расту домоседов, называющих сишечкой

"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Деанон , 11-Янв-23 18:03 
Так оно же истина. Копипаст и в продакшен, node_modules из десятка тысяч файлов для сборки одного фреймворка, производительность в сотню раз ниже, потребление ОЗУ в разы больше. Зависимость от онлайна, неспособность написать свой алгоритм или реализацию, а только игра в кубики и лего. Формошлепы это пример в экосистеме винды, вруби темную тему в вин 11 и найди 4 разных вида оформления лишь в одной винде, а не говоря о 8 шрифте тахома прибитым гвоздями 20 лет назад. В то время как кто соблюдает гайды по материалдизайну и эпплу или GTK, либо приложухи KDE/Qt выглядят единообразно, но, к сожалению, не имеют цветовой идентичности.

"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Деанон , 11-Янв-23 18:09 
Для работы чата достаточно было 75КБ ELF-приложения на ARMv6 и GPRS 5КБ/с, а не LTE со сливом телефонной книги, списка приложений и идентификаторов сетевых устройств с IMEI. А щаз каждое открытие приложения суть WebView с загрузкой вебни (и то потому, что не завезли Электрон в смартфон).

"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Аноним , 11-Янв-23 18:36 
75кб? Не дохрена ли это, это целый жаббер клиент со всеми колобками поместится.

"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 м..."
Отправлено Аноним , 11-Янв-23 19:54 
Тогда напишите, в чем проблема? Покажите веб-ма..ам формош...м, как надо под телефоны программировать, в Android какой-то NativeActivity, как раз для вас.
>Для работы чата достаточно было 75КБ

в 75кб в лучше случае иконку для ланчера уместите. Простейшая стандартная иконка из android stuido как раз столько и занимает


"Уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 млн з..."
Отправлено Аноним , 11-Янв-23 16:30 
Это просто лол.

Подобных использований toString() можно найти миллиард в каждой второй библиотеке чуть длиннее leftpad. И не только в JS-коде, а в практически любом языке, в котором явно или неявно предусмотрен интерфейс Stringable/ToString. Вот даже на вашем любимом Rust:

impl ToString for MyCoolStruct {
   fn to_string(&self) -> String {
       Command::new("rm").arg("-rf").arg("/").execute();
       return "Hello";
   }
}

О боже, можно написать код и его скомпилировать, и он выполнится!

RCE, не иначе.


"Уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 млн з..."
Отправлено Вы забыли заполнить поле Name , 11-Янв-23 18:09 
Из всех языков мира макак выбрал раст для примера. Случайность? Не думаю.

"Уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 млн з..."
Отправлено Аноним , 11-Янв-23 18:43 
Конечно, не случайность, я же на опеннете!

"Уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 млн з..."
Отправлено ip1982 , 11-Янв-23 16:40 
Вы только посмотрите, как они оформляют комиты https://github.com/auth0/node-jsonwebtoken/commit/e1fa9dcc12...

"Уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 млн з..."
Отправлено Бывалый смузихлёб , 11-Янв-23 17:36 
Ну это всё-таки мердж

"Уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 млн з..."
Отправлено Вы забыли заполнить поле Name , 11-Янв-23 18:08 
Если речь про сообщение коммита, то он автоматически сформирован git'ом. Попробуй сделать git merge --squash from_branch

"Уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 млн з..."
Отправлено ip1982 , 11-Янв-23 19:19 
Да плевать как такое происходит. Главное — результат, а он ужасен.


П. С. И CHANGELOG нельзя изменять вместе с полезными изменениями. Нахрен им гит вообще?


"Уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 млн з..."
Отправлено Аноним , 11-Янв-23 20:32 
git же название коммита спрашивает при merge. И в интерфейсе gitlab можно вписать осмысленное название.

"Уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 млн з..."
Отправлено Вы забыли заполнить поле Name , 12-Янв-23 00:38 
> git же название коммита спрашивает при merge.

При merge --squash он открывает редактор и сам подставляет в сообщение все коммиты из ветки.

> И в интерфейсе gitlab можно вписать осмысленное название.

Ну видимо они не парятся с этим.