تم تحديد ثغرة أمنية (CVE-2025-47934) في مكتبة OpenPGP.js، مما يسمح للمهاجم بإرسال رسالة معدلة سيعتبرها المتلقي بمثابة رسالة تم التحقق منها (ستعيد الوظيفتان openpgp.verify وopenpgp.decrypt مؤشرًا على التحقق الناجح من التوقيع الرقمي، على الرغم من حقيقة أن المحتوى تم استبداله ويختلف عن البيانات التي تم إنشاء التوقيع من أجلها). تم إصلاح الثغرة الأمنية في إصدارات OpenPGP.js 5.11.3 و6.1.1. تؤثر المشكلة فقط على فروع OpenPGP.js 5.x و6.x، ولا تؤثر على OpenPGP.js 4.x.
توفر مكتبة OpenPGP.js تنفيذ JavaScript مستقلاً لبروتوكول OpenPGP، مما يسمح لك بإجراء عمليات التشفير والعمل مع التوقيعات الرقمية القائمة على المفتاح العام في المتصفح. يتم تطوير المشروع من قبل مطوري Proton Mail، وبالإضافة إلى تنظيم التشفير الشامل للرسائل في Proton Mail، يتم استخدامه في مشاريع مثل FlowCrypt، وMymail-Crypt، وUDC، وEncrypt.to، وPGP Anywhere، وPassbolt.
تؤثر الثغرة الأمنية على إجراءات التحقق الخاصة بتوقيعات النصوص المضمنة (openpgp.verify) والرسائل الموقعة والمشفرة (penpgp.decrypt). يمكن للمهاجم استخدام الرسائل الموقعة الموجودة لتشكيل رسائل جديدة، وعندما يتم فك ضغطها بواسطة إصدار ضعيف من OpenPGP.js، فسوف تستخرج محتوى بديلاً يختلف عن محتوى الرسالة الموقعة الأصلية. لا تؤثر الثغرة الأمنية على التوقيعات الموزعة بشكل منفصل عن النص (تظهر المشكلة فقط عندما يتم نقل التوقيع مع النص ككتلة بيانات واحدة).
لإنشاء رسالة مزيفة، يحتاج المهاجم فقط إلى رسالة واحدة تحتوي على توقيع مضمن أو منفصل، بالإضافة إلى معرفة البيانات الأصلية الموقعة في هذه الرسالة. يمكن للمهاجم تعديل الرسالة بحيث تظل النسخة المعدلة من التوقيع تعتبر صحيحة. وبالمثل، يمكن تعديل الرسائل المشفرة ذات التوقيع بحيث يتم إرجاع البيانات التي أضافها المهاجم عند فك ضغطها.
المصدر: opennet.ru
