GnuPG

یک محقق امنیتی یک آسیب‌پذیری حیاتی را در بعضی از مشهورترین و پراستفاده‌ترین سرویس‌گیرند‌ه‌های رمزنگاری پست الکترونیک کشف کرد. این سرویس‌گیرنده‌ها از استاندارد OpenPGP استفاده می‌کنند و به GnuPG برای رمزنگاری و امضای دیجیتالی پیام‌ها وابسته هستند.

این افشاسازی تقریباً یک ماه پس‌ازاینکه محققان مجموعه‌ای از نقص‌ها را به نام eFail آشکار کردند[۱]، در اختیار عموم قرار گرفت. نقص‌های eFail در ابزارهای رمزنگاری PGP و S/Mime قرار داشتند که به مهاجمان اجازه می‌دادند که پست‌های الکترونیک رمزنگاری‌شده را به‌صورت متن واضح منتشر کنند که بر روی چندین نوع از برنامه‌های پست الکترونیک مانند Thunderbird، Apple Mail و Outlook تأثیرگذار بودند[۲].

Marcus Brinkmann که یک توسعه‌دهنده نرم‌افزار است، کشف کرد[۳] که یک آسیب‌پذیری sanitization ورودی، که او آن را SigSpoof نامیده است، به مهاجمان اجازه می‌دهد که امضای دیجیتال را با کلید عمومی یا شناسه کلید شخصی بدون نیاز به هیچ‌‌یک از کلیدهای خصوصی یا عمومی جعل کند.

این آسیب‌پذیری که با عنوان CVE-2018-12020 شناخته می‌شود[۴]، بر روی برنامه‌های پست الکترونیک محبوب مانند GnuPG ،Enigmail ،GPGTools و python-gnupg تأثیر می‌گذارد و هم‌اکنون در آخرین به‌روزرسانی‌های نرم‌افزاری موجود برطرف شده است.

همان‌طور که توسط این محقق توضیح داده شده است، پروتکل OpenPGP اجازه می‌دهد که پارامتر filename فایل ورودی اصلی را در پیام‌های امضاشده یا رمز شده وارد کنید، و آن را با پیام‌های وضعیت GnuPG (ازجمله اطلاعات امضا) در یک pipe داده واحد (بسته‌های داده literal) توسط اضافه کردن یک کلمه کلیدی از پیش تعریف‌شده برای جدا کردن آن‌ها، ترکیب کنید.

Werner Koch، مدیر خدمات GnuPG در یک گزارش که در تاریخ ۱۴ ژوئن ۲۰۱۸ منتشر شده است[۵] دراین‌باره گفته است: “این پیام‌های وضعیتی توسط برنامه‌ها تجزیه می‌شوند تا اطلاعات موردنظر را از gpg درباره اعتبار یک امضا و سایر پارامترها دریافت کنند.”

در هنگام رمزگشایی پیام در پایانِ دریافت‌کننده، برنامه سرویس‌گیرنده اطلاعات را با استفاده از این کلمه کلیدی تجزیه می‌کند و پیام را با یک امضای معتبر نمایش می‌دهد، درصورتی‌که کاربر گزینه verbose را در فایل gpg.conf فعال کرده باشد.

OpenPGP

بااین‌حال این محقق متوجه شد که نام فایل موردنظر که می‌تواند تا ۲۵۵ کاراکتر باشد، به‌درستی توسط ابزارهای آسیب‌دیده sanitize نشده است و به‌طور بالقوه به مهاجم اجازه می‌دهد “line feedها و یا سایر کاراکتر‌های کنترل را به آن اضافه کنند.”

Brinkmann نشان می‌دهد که چگونه این loophole می‌تواند برای تزریق پیام‌های وضعیت دلخواه (جعلی) GnuPG به برنامه تجزیه‌کننده در تلاش برای جعل تأیید امضا و نتایج رمزگشایی پیام استفاده شود.

Brinkmann دراین‌باره می‌گوید: “این حمله بسیار قدرتمند است و پیام حتی نباید رمزگذاری شود. یک بسته اطلاعات literal (یا متن واضح) یک پیام OpenPGP کاملاً معتبر است و در حال حاضر نام پرونده رمزگذاری شده که در این حمله استفاده می‌شود را شامل می‌شود، حتی اگر رمزگذاری وجود نداشته باشد.”

این محقق همچنین معتقد است که این نقص توانایی اثرگذاری بر روی بخش بزرگی از زیرساخت اصلی ما را دارد که بیش از پست‎های الکترونیک رمزگذاری شده‌اند؛ زیرا GnuPG نه‌تنها برای امنیت پست الکترونیک استفاده می‌شود، بلکه همچنین برای محافظت از پشتیبان، به‌روزرسانی نرم‌افزارها در توزیع‌ها و منبع کد در سیستم‌های کنترل نسخه مانند GIT مورداستفاده قرار می‌گیرد.”

Brinkmann همچنین سه اثبات ادعا را منتشر کرد که نشان می‌دهد چگونه امضاها و رمزنگاری‌ها در Enigmail و GPGTools جعل می‌شوند و همچنین نحوه جعل امضا در یک command line را نیز نشان داده است.

ازآنجایی‌که سازندگان هر سه سرویس‌گیرنده پست الکترونیک محبوب این مشکل را برطرف کرده‌اند، به کاربران توصیه می‌شود که نرم‌افزارهای خود را به آخرین نسخه ارتقاء دهند[۶-۸]:

  • به‌روزرسانی به نسخه ۲٫۲٫۸ یا ۱٫۴٫۲۳ برنامهGnuPG
  • به‌روزرسانی به نسخه ۲٫۰٫۷ برنامه Enigmail
  • به‌روزرسانی به نسخه ۲۰۱۸٫۳ برنامه GPGTools

اگر شما یک توسعه‌دهنده هستید، به شما توصیه می‌شود که –no-verbose” را به تمام دعوت‌نامه‌های(۱) GPG اضافه کنید و نرم‌افزار خود را به python-gnupg 0.4.3 ارتقا دهید[۹].

برنامه‌های کاربردی که از GPGME به‌عنوان موتور رمزنگاری استفاده می‌کنند، ایمن هستند. همچنین، GnuPGهایی که در آن‌ها –status-fd compilation flag تنظیم شده و –verbose flag تنظیم نشده، ایمن هستند.

منابع

[۱] https://thehackernews.com/2018/05/pgp-smime-email-encryption.html

[۲] https://apa.aut.ac.ir/?p=4441

[۳] https://neopg.io/blog/gpg-signature-spoof/#proof-of-concept-ii-signature-and-encryption-spoof-enigmail

[۴] https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-12020

[۵] https://lists.gnupg.org/pipermail/gnupg-announce/2018q2/000425.html

[۶] https://lists.gnupg.org/pipermail/gnupg-announce/2018q2/000425.html

[۷] https://sourceforge.net/p/enigmail/forum/announce/thread/b948279f

[۸] https://gpgtools.org

[۹] https://groups.google.com/forum/#!topic/python-gnupg/2yAlj_F2S1g

[۱۰] https://thehackernews.com/2018/06/google-chrome-csp.html


(۱) invocations