В OpenPGP.js знайшли критичний баг, що дає змогу підробляти повідомлення📤
Розробники OpenPGP.js випустили виправлення для критичної вразливості, яка могла використовуватися для спуфінгу. Баг давав змогу підробляти як підписані, так і зашифровані повідомлення.
OpenPGP.js – це JavaScript-імплементація опенсорсної бібліотеки шифрування електронної пошти OpenPGP, яку можна використовувати на будь-якому пристрої. Розробники проєкту пояснюють, що ідея полягала в тому, щоб реалізувати всю необхідну функціональність OpenPGP у бібліотеці JavaScript, яку можна було б повторно використовувати в інших проєктах для браузерних розширень або серверних застосунків.
OpenPGP.js використовується в таких проектах, як FlowCrypt, Mymail-Crypt, UDC, Encrypt.to, PGP Anywhere і Passbolt.
Нещодавно експерти компанії Codean Labs виявили, що OpenPGP.js схильна до критичної уразливості. Ця проблема дає змогу зловмиснику здійснити спуфінг перевірки підпису за допомогою спеціально створеного повідомлення, що передається openpgp.verify або openpgp.decrypt. У результаті вони повертають «успішний результат перевірки підпису, хоча насправді дані, що повертаються, не були підписані».
Вразливість отримала ідентифікатор CVE-2025-47934 (8,7 бала за шкалою CVSS) і зачіпає OpenPGP.js версій 5 і 6. Версії 4.x не зачеплені.
Розробники усунули баг із виходом версій 5.11.3 і 6.1.1.
Деніел Хьюгенс (Daniel Huigens), керівник команди криптографів у Proton і головний мейнтейнер OpenPGP.js, повідомляє, що користувачам слід якомога швидше встановити оновлення. А до цього рекомендується уважно вивчати всі нібито підписані повідомлення і перевіряти кожен підпис як окремий.
Для підписаних і зашифрованих повідомлень Х’югенс пропонує перевіряти справжність у два етапи. Спочатку викликати openpgp.decrypt без verificationKeys, а потім передавати підписи, що повертаються, і розшифровані дані в openpgp.verify для явної перевірки.