empty static

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

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

Подробности уязвимости

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

Архитектура библиотеки

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

Ликвидация угрозы

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

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