The OpenNET Project / Index page

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



"RCE-уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 млн загрузок в неделю"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

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

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

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от Аноним (1), 11-Янв-23, 13:52   –6 +/
> более 10 млн раз

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

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #2, #9, #31, #41, #55

2. Сообщение от Аноним (2), 11-Янв-23, 13:55   +10 +/
Первый день в интернете? Или гуманитарий? Или  млао витаминов ел? Тебе бы поработать над собой с тобой явно что-то не так.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #10

4. Сообщение от Аноним (2), 11-Янв-23, 13:58   –1 +/
И тут как вы уже догадались никакой бы безопасный язык не помог. Зачем тогда ломать голову синтаксисом р**** когда можно на нём же словить точно такую же уязвимость? Но потратить в 10 раз больше времени на написание.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #58

5. Сообщение от Аноним (5), 11-Янв-23, 14:05   –1 +/
>в NPM-пакете

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

Ответить | Правка | Наверх | Cообщить модератору

6. Сообщение от Аноним (6), 11-Янв-23, 14:06   +5 +/
чушь какая-то, как этот объект сформировать-то удаленно? https://github.com/github/advisory-database/pull/1595
Ответить | Правка | Наверх | Cообщить модератору

7. Сообщение от Аноним (7), 11-Янв-23, 14:10   +/
> JavaScript
> В соответствии со спецификацией <...>, но в коде <...> это не учитывается

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

Ответить | Правка | Наверх | Cообщить модератору

8. Сообщение от Весельчак У (?), 11-Янв-23, 14:14   +2 +/
Если ты передаёшь с клиента объект и никак его не проверяешь, то это сама по себе уязвимость.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #11

9. Сообщение от Деанон (?), 11-Янв-23, 14:15   +2 +/
Это же вебмакаки. Там нельзя без обновлений и передёргиваний npm install и т.п. Каждая муха тянет за собой всю паутину в node_modules.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1

10. Сообщение от Деанон (?), 11-Янв-23, 14:16   +4 +/
Гуманитарии это фронтенд-верстальщики, не осилившие бэкенд.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #14

11. Сообщение от Деанон (?), 11-Янв-23, 14:18   +1 +/
Хуже когда ты тянешь с гитхаба/npm импорт, а за ним еще 20 импортов, половину из которых просто какой-то левый чувак для поиграться наваял не глядя за 5 минут.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8 Ответы: #20

12. Сообщение от Аноним (12), 11-Янв-23, 14:27   +1 +/
> в коде JsonWebToken это не учитывается и он всегда разбирается как строка с использованием метода toString()

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

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

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

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

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #16, #17, #18

14. Сообщение от Аноним (14), 11-Янв-23, 14:32   +1 +/
node.js это бэкэнд.
JavaScript универсальный язык.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10 Ответы: #28

16. Сообщение от Аноним (14), 11-Янв-23, 14:42   –1 +/
>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
"

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #12

17. Сообщение от Аноним (14), 11-Янв-23, 14:47   –1 +/
"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."

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #12

18. Сообщение от Аноним (20), 11-Янв-23, 15:04   –4 +/
Книжку какую-нибудь умную почитай. «Не должна», совсем вебмакаки обленились. Начини с Роберта Мартина «Чистая Архитектура» заодно «Чистый код» и больше чушь не пиши. Никто у них ничего не должен, капец.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #12 Ответы: #23, #24

19. Сообщение от Омномним (?), 11-Янв-23, 15:06   –1 +/
В жабоскрипте сейчас реально можно в таком виде объекты передать и они разберутся?

[pacefalm]

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #26

20. Сообщение от Аноним (20), 11-Янв-23, 15:07   +2 +/
Хуже когда он, не не глядя наваял за 5 минут. А специально несколько часов сидел и внедрял бекдор.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #11 Ответы: #59

21. Сообщение от Аноним (21), 11-Янв-23, 15:09   +1 +/
>если передать в secretOrPublicKey вместо строки JavaScript-объект с собственным методом toString(), то при проверке будет вызван указанный атакующим код.
>JsonWebTokens
>JSON

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

Ответить | Правка | Наверх | Cообщить модератору

22. Сообщение от another_one (ok), 11-Янв-23, 15:13   +/
> вместо строки JavaScript-объект с собственным методом toString()

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

Ответить | Правка | Наверх | Cообщить модератору

23. Сообщение от Аноним (14), 11-Янв-23, 15:13   +2 +/
Но как чистая архитектура относится к библиотеке для работы с тренерами?
Она же про разделение приложения на слои и просторение приложения независимым от фреймворков.
Вы точно эту умную книгу читали или только название?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18 Ответы: #25

24. Сообщение от Аноним (12), 11-Янв-23, 15:14   +3 +/
Ты эти свои книжки-то хоть сам открывал? В особенности те места, где настоятельно рекомендуется зависеть не от реализации, а от интерфейсов? Для проверки типов аргументов уже есть тайпскрипт, причем для сабжа тайпскриптовые определения имеются. Или ты предлагаешь их еще вдобавок проверять в рантайме?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18 Ответы: #32, #34, #42

25. Сообщение от Аноним (14), 11-Янв-23, 15:16   +1 +/
С токенами
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #23

26. Сообщение от another_one (ok), 11-Янв-23, 15:19   +/
Нет, нельзя. Новость можно удалять, т.к. RCE собираются пометить как "withdrawn" и отозвать.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #19 Ответы: #36

27. Сообщение от Аноним (27), 11-Янв-23, 15:42   +1 +/
Эта новость - фейк.
По сети невозможно передать объект с методом.
Никакого RCE тут нет, как и уязвимости.

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


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

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #56, #57

28. Сообщение от Деанон (?), 11-Янв-23, 15:44   +2 +/
так я и говорю, что не осилили и сделали nodeJS
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #14

31. Сообщение от Вы забыли заполнить поле Name (?), 11-Янв-23, 15:52   +1 +/
Роботы грузят
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1

32. Сообщение от Вы забыли заполнить поле Name (?), 11-Янв-23, 15:57   +/
Ну нодежс проверяет аргументы своего апи в рантайме, хотя тайпскрипт декларации тоже есть.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #24

33. Сообщение от Вы забыли заполнить поле Name (?), 11-Янв-23, 16:03   +/
Шаблон для новостей Джаваскрипта:

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

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

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #37, #38

34. Сообщение от Аноним (34), 11-Янв-23, 16:06   +/
в документации явно указано что функция может Buffer принять.
И в определениях typescript скорее всего
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #24

36. Сообщение от Омномним (?), 11-Янв-23, 16:19   +/
А, ну то есть ещё до такого не докатились, и то ладно.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #26

37. Сообщение от Аноним (37), 11-Янв-23, 16:21   +3 +/
Милый комментарий на фоне того, что очередная уязвимость оказалась фейком (вслед за отозванными фейками c lodash и hogan). Но иксперт не вникал в текст, иксперт бежал быстрее писать коммент!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #33

38. Сообщение от Аноним (34), 11-Янв-23, 16:23   +3 +/
Шаблон комментария для опеннет эксперта:

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #33 Ответы: #44, #45, #47

39. Сообщение от Аноним (39), 11-Янв-23, 16:30   +2 +/
Это просто лол.

Подобных использований 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, не иначе.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #48

40. Сообщение от ip1982 (ok), 11-Янв-23, 16:40   –3 +/
Вы только посмотрите, как они оформляют комиты https://github.com/auth0/node-jsonwebtoken/commit/e1fa9dcc12...
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #43, #46

41. Сообщение от rshadow (ok), 11-Янв-23, 17:10   +/
Например если не заморачиваться, и не подымать локальный реп. А просто при сборке в CI всегда качать пакеты заново. Все проекты поставившие его в зависимости будут на каждый чих программиста заново все собирать и качать.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1

42. Сообщение от Бывалый смузихлёб (?), 11-Янв-23, 17:33   +/
Толку от тайпскриптовой “типизации“, если некорректные типы данных могут передаваться в рантайме ?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #24

43. Сообщение от Бывалый смузихлёб (?), 11-Янв-23, 17:36   +/
Ну это всё-таки мердж
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #40

44. Сообщение от Деанон (?), 11-Янв-23, 17:59   –1 +/
Хотя бы эксперта, а не просто вебмакаки и непричастных к расту домоседов, называющих сишечкой
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #38

45. Сообщение от Деанон (?), 11-Янв-23, 18:03   +/
Так оно же истина. Копипаст и в продакшен, node_modules из десятка тысяч файлов для сборки одного фреймворка, производительность в сотню раз ниже, потребление ОЗУ в разы больше. Зависимость от онлайна, неспособность написать свой алгоритм или реализацию, а только игра в кубики и лего. Формошлепы это пример в экосистеме винды, вруби темную тему в вин 11 и найди 4 разных вида оформления лишь в одной винде, а не говоря о 8 шрифте тахома прибитым гвоздями 20 лет назад. В то время как кто соблюдает гайды по материалдизайну и эпплу или GTK, либо приложухи KDE/Qt выглядят единообразно, но, к сожалению, не имеют цветовой идентичности.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #38

46. Сообщение от Вы забыли заполнить поле Name (?), 11-Янв-23, 18:08   +/
Если речь про сообщение коммита, то он автоматически сформирован git'ом. Попробуй сделать git merge --squash from_branch
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #40 Ответы: #51, #54

47. Сообщение от Деанон (?), 11-Янв-23, 18:09   +/
Для работы чата достаточно было 75КБ ELF-приложения на ARMv6 и GPRS 5КБ/с, а не LTE со сливом телефонной книги, списка приложений и идентификаторов сетевых устройств с IMEI. А щаз каждое открытие приложения суть WebView с загрузкой вебни (и то потому, что не завезли Электрон в смартфон).
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #38 Ответы: #49, #52

48. Сообщение от Вы забыли заполнить поле Name (?), 11-Янв-23, 18:09   +/
Из всех языков мира макак выбрал раст для примера. Случайность? Не думаю.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #39 Ответы: #50

49. Сообщение от Аноним (49), 11-Янв-23, 18:36   +/
75кб? Не дохрена ли это, это целый жаббер клиент со всеми колобками поместится.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #47

50. Сообщение от Аноним (50), 11-Янв-23, 18:43   +/
Конечно, не случайность, я же на опеннете!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #48

51. Сообщение от ip1982 (ok), 11-Янв-23, 19:19   –1 +/
Да плевать как такое происходит. Главное — результат, а он ужасен.


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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #46

52. Сообщение от Аноним (34), 11-Янв-23, 19:54   +1 +/
Тогда напишите, в чем проблема? Покажите веб-ма..ам формош...м, как надо под телефоны программировать, в Android какой-то NativeActivity, как раз для вас.
>Для работы чата достаточно было 75КБ

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #47

54. Сообщение от Аноним (14), 11-Янв-23, 20:32   +/
git же название коммита спрашивает при merge. И в интерфейсе gitlab можно вписать осмысленное название.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #46 Ответы: #60

55. Сообщение от . (?), 11-Янв-23, 21:00   +/
> Откуда такие цифры?

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1

56. Сообщение от Аноним (56), 11-Янв-23, 21:02   +/
CVE присвоен и исправление авторами пакета выпущено. Какая же это шутка.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #27

57. Сообщение от Аноним (56), 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...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #27 Ответы: #61

58. Сообщение от амоним (?), 11-Янв-23, 21:59   +/
ну вроде, чтобы в расте передать хренпоймичто, вместо чего-то другого все же надо поприседать
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4

59. Сообщение от амоним (?), 11-Янв-23, 22:00   +/
иногда даже много дней
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #20

60. Сообщение от Вы забыли заполнить поле Name (?), 12-Янв-23, 00:38   +/
> git же название коммита спрашивает при merge.

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

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #54

61. Сообщение от another_one (ok), 12-Янв-23, 10:06   +/
Этот фейк уже вышел за пределы гитхаба. Возможно, после такого скандала перестанут создавать CVE без проверки на реальный эксплоит.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #57


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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