The OpenNET Project / Index page

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

Обход верификации в библиотеке xml-crypto, насчитывающей миллион загрузок в неделю

03.05.2024 22:49

В JavaScript-библиотеке xml-crypto, используемой в качестве зависимости у 402 проектов и загружаемой из каталога NPM около миллиона раз каждую неделю, выявлена уязвимость (CVE-2024-32962), которой присвоен максимальный уровень опасности (10 из 10). Библиотека предоставляет функции для шифрования и верификации по цифровой подписи XML-документов. Уязвимость даёт возможность атакующему заверить фиктивный документ, который в конфигурации по умолчанию будет успешно верифицирован библиотекой, несмотря на то, что он подписан не тем ключом, что указан для проверки подписей. Проблема проявляется начиная с версии xml-crypto 4.0.0 и без лишней огласки устранена в январском выпуске 6.0.0.

Уязвимость вызвана тем, что в конфигурации по умолчанию библиотека не авторизирует создателя подписи, а проверяет только корректность самой подписи. В частности, библиотека доверяет любому сертификату, размещённому в подписанном документе в XML-элементе KeyInfo, даже если в настройках указано использование конкретного сертификата для проверки цифровых подписей. Таким образом, для успешной верификации модифицированного документа атакующему достаточно заменить оригинальную цифровую подпись на подпись, сформированную своим закрытым ключом, и разместить связанный с этим закрытым ключом сертификат (открытый ключ) в элементе KeyInfo.

  1. Главная ссылка к новости (https://github.com/node-saml/x...)
  2. OpenNews: Уязвимость в NPM, позволяющая изменить произвольные файлы при установке пакета
  3. OpenNews: Уязвимость в NPM-пакете pac-resolver, насчитывающем 3 млн загрузок в неделю
  4. OpenNews: Уязвимость, позволявшая выпустить обновление для любого пакета в репозитории NPM
  5. OpenNews: Уязвимость в репозитории NPM, позволяющая добавить сопровождающего без подтверждения
  6. OpenNews: Уязвимость в NPM-пакете JsonWebToken, насчитывающем 10 млн загрузок в неделю
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/61112-xml-crypto
Ключевые слова: xml-crypto, nmp
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (15) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, penetrator (?), 23:22, 03/05/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    ай хорошо, молодцы малпы, показательно
     
  • 1.2, Герострат (?), 23:25, 03/05/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Миллион дыр в неделю, только вдумайтесь
     
     
  • 2.21, кент кента (?), 21:23, 04/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >Миллион дыр в неделю

    нет, миллион коммитов в корявых CI, которые выкачивают каждый раз эту нишевую либу по-новой.

    не думаю, что на планете много проектов где на жабоскрипте проверяют подписи в XMLях

     

  • 1.3, Аноним (3), 23:49, 03/05/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    > Проблема проявляется начина с версии xml-crypto 4.0.0 и без лишней огласки устранена в январском выпуске 6.0.0.

    Плюсовики не отстают https://github.com/PowerDNS/pdns/issues/12234

    Тихонько прикрыли гигадырень, и решили не упоминать об этом в release notes https://doc.powerdns.com/authoritative/changelog/4.9.html

     
  • 1.6, Аноним (6), 00:47, 04/05/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Все ругали это в C и C++, но видимо скоро вернемся к тому от чего ушли - к подключению зависимостей папочками в проекте. Иначе проблема безопасности публичных репозиториев по-видимому не решаема.
     
     
  • 2.8, Аноним (3), 01:41, 04/05/2024 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Простите, и как бы это помогло от уязвимости в описываемом случае?

    Скорее наоборот, остались бы несколько сотен проектов, авторам которых было недосуг скачивать версию с прикрытой дырой себе в папочку™.

     
  • 2.12, Прадед (?), 02:50, 04/05/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А она и не решаема. Неужели ли непонятно, что каждая зависимость это даже не то чтобы дыра, там лишь бы оно вообще работало. Безопасность там вообще аут оф скоуп. Это вообще отдельный жанр.
     

  • 1.9, анонка (?), 01:46, 04/05/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Судя по коммиту, там даже и не сразу поняли, что это уязвимость). Коммит отправлен в январе, а отчёт о дыре отправлен пару дней назад.
    Там и переменные называются максимально похоже, подозреваю, что автор просто перепутал. Хотя там тесты есть и они вроде как работали. ЧТо тестировали тогда?
     
  • 1.11, Аноним (11), 02:34, 04/05/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >Библиотека предоставляет функции для шифрования и верификации по цифровой подписи XML-документов.

    Лишь бы gpg/ssh не использовать.

     
  • 1.15, vitalif (ok), 09:51, 04/05/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Багофича ) для выявления тех, кто код не тестирует ))) и тех, кто тестирует только успешную валидацию, а неуспешную не проверяет))
     
     
  • 2.17, Аноним (17), 10:29, 04/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Если код компилируется значит работает (tm)
     

  • 1.18, Аноним (17), 10:31, 04/05/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Т.е. по мнению сообщество xz это злонамеренный троян. А тут просто чудовищная ошибка? И у этой ошибки нет ни имени ни адреса? И вообще никто не виноват.
     
     
  • 2.20, Аноним (20), 11:22, 04/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Сравнение с xz было б более уместно, если здесь тоже был удаленный доступ к системе или похожее.
     

  • 1.19, Lui Kang (?), 10:52, 04/05/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Проблема проявляется начина с версии xml-crypto 4.0.0 и без лишней огласки устранена в январском выпуске 6.0.0.

    Хорошо, хоть только сейчас огласили, выждали время.

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

     
  • 1.22, YetAnotherOnanym (ok), 15:11, 05/05/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > загружаемой из каталога NPM

    Пишите заголовки правильно - не "в библиотеке xml-crypto", а "в javascript-библиотеке xml-crypto", чтобы сразу было понятно, из-под какой коровы удобрение.
    И чтоб два раза не вставать - вот это умиляет (https://www.npmjs.com/package/xml-crypto):
    > A pre requisite it to have openssl installed and its /bin to be on the system path

    Ну, то есть, вы поняли - оно не либу дёргает за API, а бинарник запускает.

     

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



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

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