حذف گواهی ریشه AddTrust باعث خرابی سیستم های OpenSSL و GnuTLS می شود

در 30 می، مدت اعتبار 20 ساله گواهی ریشه به پایان رسید AddTrustکه کاربردی برای ایجاد گواهی های متقاطع در یکی از بزرگترین مراجع صدور گواهینامه Sectigo (Comodo). امضای متقاطع امکان سازگاری با دستگاه‌های قدیمی را فراهم می‌آورد که گواهینامه ریشه USERTRust جدید به فروشگاه گواهی ریشه خود اضافه نشده است.

حذف گواهی ریشه AddTrust باعث خرابی سیستم های OpenSSL و GnuTLS می شود

از نظر تئوری، خاتمه گواهی ریشه AddTrust فقط باید منجر به نقض سازگاری با سیستم های قدیمی (Android 2.3، Windows XP، Mac OS X 10.11، iOS 9، و غیره) شود، زیرا دومین گواهی ریشه مورد استفاده در امضای متقابل باقی می ماند. مرورگرهای معتبر و مدرن هنگام بررسی زنجیره اعتماد آن را در نظر می گیرند. در تمرین نشان داد مشکلات مربوط به تأیید امضای متقابل در کلاینت‌های TLS غیر مرورگر، از جمله موارد مبتنی بر OpenSSL 1.0.x و GnuTLS. اگر سرور از گواهی Sectigo استفاده می کند که توسط یک زنجیره اعتماد به گواهی ریشه AddTrust مرتبط شده است، دیگر اتصال ایمن با خطایی که نشان می دهد گواهی قدیمی است برقرار نمی شود.

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

مثلا وجود داشت مشکلات با دسترسی به برخی از مخازن بسته در دبیان و اوبونتو (apt شروع به ایجاد یک خطای تأیید گواهی کرد)، درخواست‌های اسکریپت‌ها با استفاده از ابزارهای «curl» و «wget» شروع به شکست کردند، خطاهایی هنگام استفاده از Git مشاهده شد. نقض شده است پلت فرم استریم Roku کار می کند، کنترل کننده ها دیگر فراخوانی نمی شوند خط خطی и DataDog، آغاز شده تصادفات رخ می دهد در برنامه های Heroku، متوقف شد کلاینت های OpenLDAP متصل می شوند، مشکلات ارسال نامه به سرورهای SMTPS و SMTP با STARTTLS شناسایی می شوند. علاوه بر این، مشکلاتی در اسکریپت های مختلف Ruby، PHP و Python مشاهده می شود که از یک ماژول با مشتری http استفاده می کنند. مشکل مرورگر تاثیر می گذارد Epiphany، که بارگیری لیست های مسدودکننده تبلیغات را متوقف کرد.

برنامه های Go تحت تأثیر این مشکل قرار نمی گیرند زیرا Go ارائه می دهد پیاده سازی خود TLS.

قرار بودکه این مشکل بر نسخه‌های توزیع قدیمی‌تر (از جمله Debian 9، Ubuntu 16.04)، RHEL 6/7) که از شاخه های مشکل ساز OpenSSL استفاده می کنند، اما مشکل خود را نشان داد همچنین زمانی که مدیر بسته APT در نسخه های فعلی Debian 10 و Ubuntu 18.04/20.04 در حال اجرا است، زیرا APT از کتابخانه GnuTLS استفاده می کند. اصل مشکل این است که بسیاری از کتابخانه های TLS/SSL یک گواهی را به عنوان یک زنجیره خطی تجزیه می کنند، در حالی که طبق RFC 4158، یک گواهی می تواند یک نمودار دایره ای توزیع شده جهت دار با چندین لنگر اعتماد را نشان دهد که باید در نظر گرفته شوند. درباره این نقص در OpenSSL و GnuTLS بود شناخته شده است برای چندین سال. در OpenSSL مشکل در شاخه 1.1.1 رفع شد و در gnuTLS باقی اصلاح نشده.

به عنوان یک راه حل، پیشنهاد می شود گواهی «AddTrust External CA Root» را از ذخیره سیستم حذف کنید (به عنوان مثال، از /etc/ca-certificates.conf و /etc/ssl/certs حذف کنید، و سپس «update-ca» را اجرا کنید. -certificates -f -v")، پس از آن OpenSSL شروع به پردازش گواهینامه های متقاطع با مشارکت خود می کند. هنگام استفاده از مدیر بسته APT، می توانید تأیید گواهی را برای درخواست های فردی با مسئولیت خود غیرفعال کنید (به عنوان مثال، "apt-get update -o Acquire::https::download.jitsi.org::Verify-Peer=false") .

برای مسدود کردن مشکل در کلاه نمدی مردانه и ریل پیشنهاد می شود گواهی AddTrust را به لیست سیاه اضافه کنید:

trust dump —filter «pkcs11:id=%AD%BD%98%7A%34%B4%26%F7%FA%C4%26%54%EF%03%BD%E0%24%CB%54%1A;type=cert» \
> /etc/pki/ca-trust/source/blacklist/addtrust-external-root.p11-kit
استخراج به روز رسانی ca-trust

اما این روش کار نمی کند برای GnuTLS (به عنوان مثال، یک خطای تأیید گواهی همچنان هنگام اجرای ابزار wget ظاهر می شود).

در سمت سرور شما می توانید تغییر کردن سفارش لیست کردن گواهینامه ها در زنجیره اعتماد ارسال شده توسط سرور به مشتری (اگر گواهی مرتبط با "AddTrust External CA Root" از لیست حذف شود، تأیید مشتری با موفقیت انجام می شود). برای بررسی و ایجاد یک زنجیره اعتماد جدید، می توانید از این سرویس استفاده کنید whatsmychaincert.com. Sectigo نیز ارائه شده است گواهی میانی با امضای متقاطع جایگزین "خدمات گواهینامه AAA"، که تا سال 2028 معتبر خواهد بود و سازگاری با نسخه های قدیمی سیستم عامل را حفظ می کند.

اضافه: مشکل نیز ظاهر شد در LibreSSL

منبع: opennet.ru

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