در بعد از ظهر روز دوشنبه ۸ آوریل ۲۰۱۴ جامعه آیتی با یک شوک امنیتی عظیم روبرو شد. در این روز باگی با نام Heartbleed توسط تیم امنیتی گوگل و شرکت امنیتی Codenomicon کشف شد که سرورهایی که تحت پروتکل امنیتی OpenSSL قرار دارند همچون Airbnb, پینترست، ناسا و بسیاری دیگر را در معرض خطر امنیتی جدی قرار داد.
این باگ ظاهرا تنها در اثر یک اشتباه در کدنویسی OpenSSL ایجاد شده است. به دلیل محبوبیت پروتکل متن باز OpenSSL بسیاری از وب سایتها (حدود ۵۶٪ کل وبسایتها) برای حفظ امنیت خود از این پروتکل استفاده میکنند و با وجود باگ هارتبلید احتمالا حدود نصف آنها مبتلا باشند که در این صورت با وارد شدن به حساب کاربری خود در یکی از این سایتها تمام اطلاعات شما همچون پسوردها، اطلاعات کارت اعتباری، ایمیلها و حتی متن چت خود را در معرض دزدیده شدن قرار داده اید.
خبر بد این است که به احتمال بسیار زیاد شما نیز به طور مستقیم یا غیر مستقیم در معرض خطر این باگ امنیتی خطرناک قرار دارید متاسفانه در حال حاضر کار زیادی از دست شما برای حفظ امنیت برنمیآید. چرا که در ابتدا باید شرکتهای آلوده به این باگ اقدام به رفع باگ مربوطه کند. چیزی که هنوز به طور قطع مشخص نشده است. و سپس سریعا نسبت به تغییر کلمات عبور خود اقدام نمایید. اما خوشبختانه هنوز هیچ هکری موفق به نفوذ در این حفره امنیتی نشده است.
اجازه دهید کمی عمیقتر در مورد مفهوم امنیت در اینترنت، حفره امنیتی هارتبلید و خطر جدی آن صحبت کنیم.
تامین امنیت در اینترنت حال حاضر به وسیله رمزگذاری به روی اطلاعات تامین شده است. این بدین معناست که اطلاعات ارسالی توسط شما به شخص یا یک سرور دیگر محفوظ و غیر قابل خواندن توسط شخص سوم باشد. با رشد روز افزون جمعیت کاربران در اینترنت، حفظ امنیت اطلاعات شخصی اهمیت بیشتری پیدا کرده است. رمز نگاری اطلاعات مانند این است که ۲ شخص به زبان رمزی خاصی با یکدیگر صحبت میکنند و با توجه به راهنمای رمزگشایی که فقط نزد این ۲ نفر است، اقدام به ترجمه صحبتها میکنند. در فضای اینترنت نیز این رمزنگاریها توسط پروتکلهای امنیتی SSL/TLS انجام میگردد.
OpenSSL یکی از سرویسهای رایگان و متن باز محبوب است که وب سرورهایی همچون Apache و Nginx نیز از آن استفاده میکنند. نه تنها اپلیکیشنها و وبسایتها بلکه بسیاری از سرویسهای ایمیل، کلاینتهای گفتگوی مستقیم کاربران، روترهای شبکه و حتی پرینترها نیز از OpenSSL استفاده میکنند. حدود ۶۶ درصد کل دنیای اینترنت تحت امنیت OpenSSL قرار دارد و این یعنی تمام اطلاعات رد و بدل شده از جمله متن، عکس، کلمات عبور و غیره و غیره تحت سایه OpenSSL عبور میکند.
تا اینجای کار متوجه اهمیت و فراگیر بودن OpenSSL شدیم. حالا تصور کنید این غول امنیتی به طور ناگهانی دارای یک حفره امنیتی شده است. ایرادی که به افراد اجازه دسترسی به کلید رمزگشایی اطلاعات امن در حال عبور از OpenSSL را میدهد. با استفاده از این حفره امنیتی شخص خرابکار میتواند از تمام اطلاعات یک نسخه کپی برای خود تهیه کند و یا آنها را منتشر کند.
این همان Heartbleed است. حفره امنیتی خطرناکی که متاسفانه از حوالی دسامبر ۲۰۱۱ وجود داشته و حتی در نسخه ۲۰۱۲ OpenSSL نیز برطرف نشد. بنابراین هرگونه اپلیکیشن، وبسایت، بانک و هرگونه سرویس دیگر که طی این ۲ سال از OpenSSL استفاده کرده باشد دچار این حفره امنیتی است. ضمن اینکه ۲ سال زمان بسیاری برای سواستفاده از این حفره امنیتی است و معلوم نیست چه مقدار از اطلاعات در دسترس بوده است. دلیل نامیدن این حفره امنیتی به عنوان یک کابوس نیز همین است.
اما نکته مهم این است که تمام سرویسهای اینترنتی از OpenSSL استفاده نمیکنند و همچنین این احتمال وجود دارد که نسخههای ماقبل ۲۰۱۱ OpenSSL دارای این حفره امنیتی نیستند. اما متاسفانه تا اینجای کار بسیاری از سرویسهای محبوب اینترنتی از نسخه آسیب پذیر آن استفاده میکنند.
در ابتدا توصیه شده در صورتی که امنیت برای شما اهمیت فوق العادهایی دارد در این هفته اینترنت را ترک کنید تا تمام وب سایتها اقدام به رفع این باگ کنند. اما در غیر این صورت در این لینک لیست سایتهای آلوده را مشاهده کرده و یا از طریق سرویس Heartbleed Checker شرکت لستپس وب سایت مورد استفاده خود را کنترل نمایید. با وارد کردن آدرس سایت و مشاهده پیغام سبز رنگ Now Safe که مربوط به امنیت کامل سایت است، سریعا اقدام به تغییر تمام پسوردها و اطلاعات امنیتی موجود در آن سرویس نمایید. در غیر اینصورت از تغییر هرگونه اطلاعاتی دست نگه دارید و ترجیحا هیچ استفاده ایی از وب سایت مربوطه نکنید تا تعمیرات SSL اعمال شود.
سایتهایی نظیر یاهو و OKCupid که حاوی اطلاعات شخصی بسیاری از کاربران هستند سریعا اقدام به رفع این حفره امنیتی کردهاند پس کاربران تمام سرویسهای این دو سایت (مانند فلیکر، ایمیل یاهو و غیره) اقدام به تغییر کلمه کاربری خود نمایند. سایتهای گوگل، توییتر و فیسبوک به طور قطع مشخص نشد که آلوده به این حفره امنیتی هستند یا خیر ولی برای امنیت بیشتر، پروتکل امنیتی SSL خود را به روز کردند و از کاربران خواستند کلمه عبور خود را تغییر دهند.
Bug (حفره) امنیتی در هسته کتابخانه های مورد نیاز SSL منتشر شده است که باعث می شود تا اطلاعات ذخیره شده در Memory سرویس دهنده و سرویس گیرنده با حجم۶۴ کیلوبایت و یا بیشتر فاش شود. اطلاعاتی که در Memory سرویس دهنده و گیرنده ذخیره میشوند عبارتند از:
۱- Primary Key: اطلاعات موجود در Primary key عبارتند از: «کلید محرمانه SSL» که دسترسی به این کلید به نفوذگر امکان رمز گشایی ترافیکهای گذشته و آینده ارسالی به سمت سرویس گیرنده را میدهد.
۲- Secondary Key: اطلاعات ذخیره شده در Secondary key عبارتند از: «اطلاعات مربوطه به اعتبارسنجیها»، میتوان نامهای کاربری و رمزهای عبور را در این دست اطلاعات قرار داد.
۳- Protected Content: اطلاعات موجود در Protected content عبارتند از: «محتوای ایمیلها، عکسها و مطالب تبادل شده بین سرویس گیرنده و سرویس دهنده»، در حالت عادی فقط مالک ایمیل میتواند به این اطلاعات دسترسی داشته باشد.
۴- Collateral: اطلاعات ذخیره شده در Collateral عبارتند از: «اطلاعات مربوط به Memory» که میتوان جزییات فنی نظیر آدرس حافظه، مکانیزمهای امنیتی جهت جلوگیری از حملات buffer overflow (حملات سریز حافظه) و غیره را در این قسمت مشاهده نمود.
جدول
Debian Wheezy (stable), OpenSSL 1.0.1e-2+deb7u4 Ubuntu 12.04.4 LTS, OpenSSL 1.0.1-4ubuntu5.11 CentOS 6.5, OpenSSL 1.0.1e-15 Fedora 18, OpenSSL 1.0.1e-4 OpenBSD 5.3 (OpenSSL 1.0.1c 10 May 2012) and 5.4 (OpenSSL 1.0.1c 10 May 2012) FreeBSD 8.4 (OpenSSL 1.0.1e) and 9.1 (OpenSSL 1.0.1c) NetBSD 5.0.2 (OpenSSL 1.0.1e) OpenSUSE 12.2 (OpenSSL 1.0.1c)
Debian Squeeze (oldstable), OpenSSL 0.9.8o-4squeeze14 SUSE Linux Enterprise Server
این باگ ابتدا در December 2011 شناسایی و اعلام شد. در نسخه ۱.۰.۱ مشکل برطرف گردید، اما در تاریخ April 7, 2014 توسط Neel Mehta از تیم امنیتی گوگل مجددا شناسایی و کشف شد.
باتوجه به این که این مشکل در Extension های اصلی SSL به نام HEARTBEATS به وجود آمده و در نسخهی ۱٫۰٫۱g و جدیدتر برطرف شدهاست، بهتر است نسخههای قدیمیتر OpenSSL را بروزرسانی کنید. همچنین برای برطرف نمودن مشکل باید OpenSSL را با قابلیت -DOPENSSL_NO_HEARTBEATS کامپایل کنید.
۱- نسخه جدید را از سایت OpenSSL دانلود نمایید.
۲- سپس از حالت فشرده خارج نموده و تنظیم نمایید.
۳- سپس به کمک دستورات زیر نصب نمایید.
cd /usr/src wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz tar -xvzf openssl-1.0.1g.tar.gz cd openssl-1.0.1g/ ./config -DOPENSSL_NO_HEARTBEATS make make test make install
برای بروزرسانی میتوانید از دستورات زیر نیز استفاده نمایید :
yum clean all yum update openssl