آسیب‌پذیری در کتابخانه OpenPGP.js که امکان دور زدن تأیید پیام را فراهم می‌کند

یک آسیب‌پذیری (CVE-2025-47934) در کتابخانه OpenPGP.js شناسایی شده است که به مهاجم اجازه می‌دهد یک پیام اصلاح‌شده ارسال کند که توسط گیرنده به عنوان پیام تأیید شده تلقی می‌شود (توابع openpgp.verify و openpgp.decrypt نشانه‌ای از تأیید موفقیت‌آمیز امضای دیجیتال را برمی‌گردانند، علیرغم اینکه محتوا جایگزین شده است و با داده‌هایی که امضا برای آنها ایجاد شده است متفاوت است). این آسیب‌پذیری در نسخه‌های ۵.۱۱.۳ و ۶.۱.۱ از OpenPGP.js برطرف شد. این مشکل فقط شاخه‌های OpenPGP.js نسخه ۵.x و ۶.x را تحت تأثیر قرار می‌دهد و OpenPGP.js نسخه ۴.x را تحت تأثیر قرار نمی‌دهد.

کتابخانه OpenPGP.js یک پیاده‌سازی مستقل جاوا اسکریپت از پروتکل OpenPGP ارائه می‌دهد که به شما امکان می‌دهد عملیات رمزگذاری را انجام دهید و با امضاهای دیجیتال مبتنی بر کلید عمومی در مرورگر کار کنید. این پروژه توسط توسعه‌دهندگان Proton Mail در حال توسعه است و علاوه بر سازماندهی رمزگذاری سرتاسری پیام‌ها در Proton Mail، در پروژه‌هایی مانند FlowCrypt، Mymail-Crypt، UDC، Encrypt.to، PGP Anywhere و Passbolt نیز استفاده می‌شود.

این آسیب‌پذیری، رویه‌های تأیید امضاهای متنی جاسازی‌شده (openpgp.verify) و پیام‌های امضاشده و رمزگذاری‌شده (penpgp.decrypt) را تحت تأثیر قرار می‌دهد. یک مهاجم می‌تواند از پیام‌های امضا شده موجود برای ایجاد پیام‌های جدید استفاده کند که وقتی توسط یک نسخه آسیب‌پذیر OpenPGP.js از حالت فشرده خارج می‌شوند، محتوای جایگزینی را استخراج می‌کنند که با محتوای پیام امضا شده اصلی متفاوت است. این آسیب‌پذیری روی امضاهایی که جدا از متن توزیع شده‌اند، تأثیری ندارد (مشکل فقط زمانی ظاهر می‌شود که امضا به همراه متن به عنوان یک بلوک داده واحد ارسال شود).

برای ایجاد یک پیام جعلی، مهاجم فقط باید یک پیام با امضای جاسازی‌شده یا جداگانه و همچنین اطلاعات اصلی امضا شده در این پیام را داشته باشد. یک مهاجم می‌تواند پیام را طوری تغییر دهد که نسخه اصلاح‌شده امضا همچنان صحیح در نظر گرفته شود. به طور مشابه، پیام‌های رمزگذاری شده با امضا می‌توانند طوری تغییر داده شوند که هنگام باز کردن، داده‌های اضافه شده توسط مهاجم بازگردانده شوند.

منبع: opennet.ru

اضافه کردن نظر