The OpenNET Project / Index page

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

Уязвимость в библиотеке OpenPGP.js, позволяющая обойти верификацию сообщений

21.05.2025 11:24

В библиотеке OpenPGP.js выявлена уязвимость (CVE-2025-47934), позволяющая злоумышленнику отправить модифицированное сообщение, которое будет воспринято получателем как верифицированное (функции openpgp.verify и openpgp.decrypt вернут признак успешной проверки цифровой подписи, несмотря на то, что содержимое заменено и отличается от данных, для которых создавалась подпись). Уязвимость устранена в выпусках OpenPGP.js 5.11.3 и 6.1.1. Проблема проявляется только в ветках OpenPGP.js 5.x и 6.x, и не затрагивает OpenPGP.js 4.x.

Библиотека OpenPGP.js предоставляет самодостаточную реализацию протокола OpenPGP на языке JavaScript, позволяющую выполнять в браузере операции шифрования и работать с цифровыми подписями на основе открытых ключей. Проект развивается разработчиками Proton Mail и помимо организации сквозного шифрования сообщений в Proton Mail применяется в таких проектах, как FlowCrypt, Mymail-Crypt, UDC, Encrypt.to, PGP Anywhere и Passbolt.

Уязвимость затрагивает процедуры верификации встроенной в текст подписи (openpgp.verify) и подписанных и зашифрованных сообщений (penpgp.decrypt). Атакующий может использовать имеющиеся подписанные сообщения для формирования новых сообщений, при распаковке которых уязвимой версией OpenPGP.js будет извлечено подставленное содержимое, отличающееся от содержимого исходного подписанного сообщения. Уязвимость не затрагивает подписи, распространяемые отдельно от текста (проблема проявляется только при передаче подписи вместе с текстом единым блоком данных).

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

  1. Главная ссылка к новости (https://github.com/openpgpjs/o...)
  2. OpenNews: Автор GnuPG основал LibrePGP, форк стандарта OpenPGP
  3. OpenNews: GPG4Browsers - открытая реализация OpenPGP на языке JavaScript
  4. OpenNews: Уязвимость в LibKSBA, приводящая к выполнению кода при обработке S/MIME в GnuPG
  5. OpenNews: Критическая уязвимость в системах шифрования email на основе PGP/GPG и S/MIME
  6. OpenNews: Proton Mail представил высокопроизводительную IMAP-библиотеку Gluon
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/63278-openpgp.js
Ключевые слова: openpgp.js
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (19) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 12:43, 21/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Красивое...
     
  • 1.5, Смузихлеб забывший пароль (?), 12:53, 21/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Что-то подобное было в реализациях JWT в своё время
    Получается, системой выдавался jwt-ключ, содержащий открытый ключ асимметричного шифрования
    Достаточно было в полученном jwt-ключе поменять тип на симметричный, проставить туда тот же открытый ключ, им же "подписать" и... всё норм. Меняй параметры ключа как хочешь - заходи под любым пользователем с любыми правами итд итп
     
  • 1.8, Аноним (8), 13:13, 21/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Протонмайл спалился
     
     
  • 2.19, Аноним (19), 19:21, 21/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Я с самого начало этому протону не доверял. Мутная контора какая-то.
     

  • 1.14, Сосиска в кармане (?), 14:37, 21/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Зашёл я в код посмотреть, а там ужас что на***верчено. Даже по сообщению коммита 'Don't mutate message during verification' видно квалификацию.
     
  • 1.16, Аноним (-), 16:17, 21/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Интересно, смотрели ли, кто это коммитил, когда и, главное, не упало ли ему на счет большая сумма денег.
    Пример ХЗ показал, что опесорсные проекты супер уязвимы к внедрению васянов без имени и фамилии.
     
  • 1.20, Аноним (20), 20:49, 21/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Так и запишем: в безопасных системах структуры данных организованы в иерархические структуры, где если только одна запись имеет силу - то исключительно её можно поместить в родительскую структуру.


    Пакетная структура OpenPGP - хлам. От неё пора избавляться.

     
     
  • 2.23, Аноним (23), 23:15, 21/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    в пользу чего?
     
     
  • 3.28, OpenEcho (?), 11:33, 22/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    openssl, age?
     

  • 1.22, Кошкажена (?), 22:43, 21/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Зачем такое писать на жс не ясно, когда есть васм.
     
     
  • 2.25, Карлос Сношайтилис (ok), 00:23, 22/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Wasm не спасёт от мамкиных криптогрофов.

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

     
     
  • 3.26, Кошкажена (?), 00:25, 22/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Wasm не спасёт от мамкиных криптогрофов.
    > Даже проверенные алгоритмы могут иметь уязвимости в конкретной имплементации, и это не
    > сильно зависит от языка.

    Только взять готовую библиотеку лучше, чем реализовывать криптографию самому на жс.

     
     
  • 4.31, Карлос Сношайтилис (ok), 23:30, 22/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Согласен. Реализация криптолибы это отдельный челендж, обычно провальный. А уж на js – тем паче.
     
  • 2.29, OpenEcho (?), 11:36, 22/05/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > когда есть васм

    WASM - есть **is not constant time = side channel attacks !**

     
     
  • 3.30, Кошкажена (?), 22:33, 22/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >> когда есть васм
    > WASM - есть **is not constant time = side channel attacks !**

    Как связаны timing attack и WASM? Они возможны в любом яп.

     
     
  • 4.32, OpenEcho (?), 09:56, 23/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >>> когда есть васм
    >> WASM - есть **is not constant time = side channel attacks !**
    > Как связаны timing attack и WASM? Они возможны в любом яп.

    - Во первых, WASM - не язык на котором програмируют, это ближе к байткоду.
    - Во вторых, компиляторы в УАСМ, трансформируют код в быстродействующий non-constant-time код, заменяющие лукапы в брэнчи причем в зависимости от инпута (спасибо JIT)
    - УАСМ который скармливается  браузерам добавляют временные изменения на низком уровне, тайминг в доступе к памяти, кэш и брэнч предикторы которые раскрывают информацию и УАСМ не предоставляет низко уровневого котроля кэша и памяти по сравнению с нативным кодом
    - ctgrind и dudect в помощь для иследования WASM в криптографии (мы ж про субж всё еще, правда?)

     
     
  • 5.33, Кошкажена (?), 15:42, 23/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >[оверквотинг удален]
    > к байткоду.
    > - Во вторых, компиляторы в УАСМ, трансформируют код в быстродействующий non-constant-time
    > код, заменяющие лукапы в брэнчи причем в зависимости от инпута (спасибо
    > JIT)
    > - УАСМ который скармливается  браузерам добавляют временные изменения на низком уровне,
    > тайминг в доступе к памяти, кэш и брэнч предикторы которые раскрывают
    > информацию и УАСМ не предоставляет низко уровневого котроля кэша и памяти
    > по сравнению с нативным кодом
    > - ctgrind и dudect в помощь для иследования WASM в криптографии (мы
    > ж про субж всё еще, правда?)

    Ничего не понятно. Если хочешь сказать, что после компиляции в wasm можно получить timing attack, то хочу увидеть пруфы.

     
     
  • 6.34, OpenEcho (?), 20:27, 23/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > то хочу увидеть пруфы.

    Дал ключевые слова, даже кратко разьяснил, но нет, таки надо еще и лекцию и с пруфами, в гугле наверно бан?

    Может еще яблочко  пожевать?

    :)

     
     
  • 7.35, Кошкажена (?), 23:00, 23/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >> то хочу увидеть пруфы.
    > Дал ключевые слова, даже кратко разьяснил, но нет, таки надо еще и лекцию и с пруфами, в гугле наверно бан?

    Бредовый поток сознания - это не краткое разъяснение. Нужны пруфы или не было. Дешевый трюк иди поищи не сработает.


     

  • 1.27, OpenEcho (?), 11:31, 22/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Интерсно, а mailvelope тоже субж юзает?
     

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



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

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