بررسیهای مرکز ماهر درباره میزان استفاده سایتهای داخلی از پروتکل ایمن HTTPS نشان میدهد
آسیبپذیری وبسایتهای کشور در برابر حملات شناخته شده SSL
تاریخ انتشار
شنبه ۲۱ ارديبهشت ۱۳۹۸ ساعت ۲۱:۲۶
آیتیمن- متن کامل گزارش مرکز ماهر به این شرح است است:
در سالهای اخیر، پایش دائمی فضای اینترنت کشور به منظور شناسایی تهدیدات و آسیبپذیریها یکی از فعالیتهای مرکز ماهر بوده است. یکی از حوزههای این پایشها، وبسایتهای میزبانی شده در کشور هستند. پایش فضای وب توسط سامانه جمعآوری و تحلیل وبسایتهای این مرکز با استفاده از تکنیکهای مختلف مانند Crawl،Web Scrape، Reverse DNS lookup و غیره جهت جمعآوری دادهها صورت میگیرد. سامانه فوق در طی مدت سه ماه زمستان ۱۳۹۷، بیش از 470 هزار نام دامنه که در داخل کشور میزبانی میشوند را شناسایی کرده است.
در این گزارش ارزیابی امنیت گواهی SSL این وبسایتها میزان آسیبپذیری آنها به حملات SSL مورد بررسی قرار خواهد گرفت. برای این منظور، با استفاده از ابزارهای ایجاد شده اقدام به ارزیابی امنیتی گواهی SSL کردیم. همچنین در ادامه با ارزیابی آسیبپذیریها یا همانCVEهای کشف شده برای گواهیهای مختلف، نسبت به ارزیابی امنیتی وبسایتهای مختلف از نگاه امنیت گواهی SSL و پیاده سازی آن، پرداختهایم.
در ارزیابیهای اولیه، مشخص شد که تقریبا 162 هزار از این وبسایتها غیرفعال هستند. از این رو تمامی ارزیابیهای بعدی تنها بر روی 308 هزار وبسایت فعال در سطح کشور انجام شد. از این تعداد، تقریبا 148 هزار دامنه مربوط به وبلاگهای مختلف هستند. از آنجاییکه وبلاگها ذاتا دارای ماهیت نوشتههای شخصی هستند و زیرساخت و سیستم مدیریت محتوای آنها نیز توسط سرویسدهنده تامین میشود، تمامی وبلاگهای متعلق به یک سیستم مدیریت محتوا را یک وبسایت در نظر گرفته و از بررسی جداگانه آنها خودداری کردیم. لذا ارزیابیهای مختلف تنها بر روی 160 هزار وبسایت باقیمانده انجام شد.
فراوانی نامهای دامنه اصلی کشور
در بین نامهای دامنه متعلق به وبسایتهای شناسایی شده، بیشترین فراوانی متعلق به دامنههای ir و com است.
استفاده از پروتکل ایمن HTTPS
اطلاعاتی که به طور معمول در صفحات وب رد و بدل میشوند در بستر پروتکل HTTP (مخفف Hyper Text Transfer Protocol) انتقال مییابند، این پروتکل استانداردی تعریف شده است که با آن متن و سایر اطلاعات چندرسانهای در وب منتقل میگردد. این دادهها به دلیل عدم رمزگذاری برای سایرین (در صورت وجود دسترسی به ترافیک شبکه) نیز قابل خواندن هستند، لذا استفاده از پروتکل HTTP از لحاظ امنیتی برای انجام کارهایی که با اطلاعات حساس سر و کار دارند به هیچ وجه شیوه مناسبی نیست. به منظور رفع این ضعف، پروتکل دیگری به نام HTTPS (مخفف Hyper Text Transfer Protocol Secure) جهت انتقال دادههای رمزگذاری شده توسط پروتکل SSL/TLS مورد استفاده قرار میگیرد.
در زمان تدوین این گزارش بر اساس آمار وبسایت w3tech، تقریبا 46 درصد از وبسایتهای جهان از این پروتکل HTTPS استفاده میکنند. این درحالی است که تنها 14 درصد از وبسایتهای کشور از پروتکل ایمن HTTPS استفاده میکنند.
مورد مهم قابل بررسی دیگر در ارزیابی مکانیزم HTTPS بررسی قابلیت Force SSL است. در صورتی که این قابلیت در یک وبسایت فراهم باشد، تمامی درخواستها، به صورت ایمن و از طریق HTTPS پاسخ داده خواهند شد. با انجام ارزیابی اولیه بر روی وبسایتهایی که از HTTPS استفاده میکنند مشخص گردید که از این بین 59 درصد Force SSL را بر روی میزبان خود فعال نمودهاند.
پیادهسازی و استفاده ایمن از این پروتکل دارای جزئیات فنی متعددی است که میبایست بهدرستی رعایت شود. در صورت عدم رعایت ملاحظات و نکات امنیتی در پیادهسازی این پروتکل، محرمانگی و یکپارچگی دادههای مبادله شده به خطر میافتد.
اعتبار گواهیSSL
گواهی SSL جهت استفاده در وبسایتها در سه دسته ارائه میشوند:
گواهینامهDomain Validation : در این نوع از گواهینامه SSL صادر کننده گواهینامه بر اساس نام دامنه اعتبار سنجی را انجام میدهد و به بررسی صحت یا اعتبار سازمان یا صاحب دامنه نمیپردازد.
گواهینامهOrganization Validation : این نوع گواهینامه SSLعلاوه بر تامین امنیت در صدد تایید اعتبار یک کسب و کار و تجارت اینترنتی است و سطح اعتبار بسیار بالاتری نسبت به گواهینامه SSL DV را داراست و بازدید کنندگان وب سایت مربوطه با مشاهده نام سازمان در بخش جزئیات گواهینامه با اطمینان از این وب سایتها سرویس میگیرند.
گواهینامهExtended Validation : مشخصه اصلی این نوع گواهینامه نشان سبز رنگ در مرورگر است و روند دریافت آن بسیار شبیه گواهینامه OV ولی با اعتبار و ارزشی بالاتر است. این نوع گواهی نامه SSL فقط برای سازمانهای دولتی، شرکتها، بانکها، وزارتخانهها و به طور کل اشخاص حقوقی صادر میگردد. در دامنههای بررسی شده تنها 68 مورد ازآنها دارای گواهی SSL EV هستند. متاسفانه پیکربندی اشتباه در این سایتها نیز قابل مشاهده است.
طول کلید SSL
گواهی SSL دو کلید عمومی و اختصاصی دارد. این کلیدها برای برقراری یک ارتباط رمزگذاری شده مشترکا استفاده میشوند. طول کلیدها میتواند از ۵۱۲ تا ۴۰۹۶ بیت باشد معمولا جهت برقراری ارتباط امن از کلیدهایی با طول ۲۰۴۸ تا ۴۰۹۶ بیت استفاده میشود. البته امکان ساخت کلیدهای بزرگتر از ۴۰۹۶ بیت هم وجود دارد، با این وجود این نوع کلیدها به دلیل بار محاسباتی زیادی که دارند به ندرت استفاده میشوند.طول کلیدهای استفاده شده در وبسایتهای مورد بررسی مناسب است و تنها 45 وبسایت از کلیدهایی با سایز کوچک استفاده میکنند.
فراوانی طول کلید استفاده شده در گواهی SSL
وضعیت طول کلید استفاده شده در گواهی SSL که کشف شده، مناسب است و تنها در 45 مورد امکان سواستفاده از طول کلید وجود دارد.
اعتبار صادر کننده کلید
مهمترین بخش گواهی SSL، امضای الکترونیکی آن توسط یک صادرکننده معتبر گواهی است. هرکسی میتواند این گواهینامه را صادر کند، اما مرورگرها فقط به گواهینامههایی اعتماد میکنند که از سوی CAهای مورد تایید صادر شده باشند. برای حفظ محرمانگی امضای گواهی دیجیتال این امضا رمزگذاری میشود. 23.150 وبسایت از الگوریتم رمزگذاری SHA256 with RSA استفاده میکنند.
دو راه برای دریافت گواهینامه SSL وجود دارد. راه حل اول این است که شما به عنوان یک مدیر وبسایت گواهینامه صادر کرده و آن را امضا کنید و کلیدهای رمزگذاری ایجاد کنید. به چنین گواهینامههایی خود امضا (self-signed certificate) گفته میشود. وقتی کاربران میخواهند وارد چنین وبسایتهایی شوند توسط مرورگر هشداری در خصوص غیر قابل اعتماد بودن امضای دیجیتال را متذکر میشود. گواهی خود امضا با گواهیهای دیگر SSL تفاوت چندانی از نظر میزان ایجاد امنیت ندارد. این گواهی نیز مانند گواهیهای دیگر رمز شده و امن است. تنها تفاوت این گواهی با گواهیهای صادر شده توسط CAهای معتبر این است که مرورگر یا سیستمعامل نمیتواند مستقلا اعتبار آنها را تایید کند.
راه حل دوم خریداری گواهینامه معتبر از یک مرکز صدور گواهی Certificate Authority یا CA معتبر است. در واقع کاری که این مراکز انجام میدهند این است که اسناد صاحب سایت و حق مالکیت دامنه را بررسی و تایید میکنند. البته در حال حاضر برخی شرکتها اقدام به ارائه SSL رایگان برای سایتها میکنند که امکان استفاده از آنها برای اکثر دامنههای .ir نیز فراهم است.
دو نوع مرکز صدور گواهی ریشه (root CA) و میانی(intermediate CA) وجود دارد. برای اینکه گواهی قابل اعتماد تشخیص داده شود باید در فهرست مراکز صدور گواهیهای مورد اعتماد سیستمعامل یا مرورگر قرار داشته باشد. اگر مرکز صدور گواهی در فهرست دستگاه وجود نداشته باشد، دستگاه به بررسی گواهی مرکز صدور گواهی میانی میپردازد. و اینکار تا زمان رسیدن به مرکز صدورگواهی ریشه یا یک گواهی قابل اعتماد برای دستگاه ادامه مییابد. اگر هیچ مرکز صدور گواهی قابل اعتمادی شناسایی نشود، آنگاه گواهی SSL غیر قابل اعتماد تلقی میشود. بیش از 95 درصد گواهیهای شناسایی شده در این بررسی قابل اعتماد بوده و زنجیره معتبر است.
طی این بررسی مشخص شد ۴۳ درصد از وب سایتهای کشور گواهی خود را از مرکز صدور گواهی Let’s Encrypt تهیه کردهاند.
هزینه صدور گواهی SSL
استفاده از گواهیها همیشه رایگان نیست و برای تهیه گواهی با کیفیت بهتر و دارای ضمانت مالی و اعتبار کافی باید هزینه پرداخت کرد. هزینه خرید یک گواهی معتبر به عوامل مختلفی بستگی دارد:
• مرکز صدور گواهی
• نوع گواهی(OV،EV و DV)
• مدت اعتبار گواهی
• چند دامنه بودن گواهیSingle Domain) یا(Multi Domain
زنجیره اعتماد گواهی SSL
علاوه بر مرکز صدور گواهی، عواملی مانند تاریخ انقضای گواهی و زنجیره ناقص موجب غیر قابل اعتماد بودن گواهی میشود. در 95 درصد از وبسایتهای مورد بررسی، گواهی قابل اعتماد تشخیص داده شده است.
یکی از دلایل اصلی عدم اعتبار زنجیره گواهی SSL، گذشت تاریخ انقضای گواهی SSL است. هر گواهی SSL برای بازه زمانی مشخصی معتبر است و میتواند برای ایجاد ارتباط امن مورد استفاده قرار گیرد. زمانیکه این بازه زمانی مشخص به اتمام میرسد گواهی منقضی شده و مرورگر و برنامههای دیگر از پذیرش گواهی منقضی شده خودداری میکنند.
زمانی که شما یک گواهی را از مراکز صدور گواهی معتبر درخواست میکنید. در واقع مراحلی طی میشود و مالکیت دامنهای که برای آن درخواست گواهی دارید بررسی شده و اطمینان حاصل میشود که شما نتوانید گواهیSSL را برای دامنهای که مالکیت آن را در اختیار ندارید تهیه کنید. در واقع مراکز صدور گواهی، در گواهی که به شما ارائه میدهند اعتبار وبسایت شما را تایید میکنند و تاریخ انقضا مدت اعتبار این اطلاعات را مشخص میکند. مدت اعتبار گواهی-های مرکزLetsEncrypt معمولا سه ماه باشد. تعداد 10،493 وبسایت دارای مدت اعتبار گواهی 3 ماهه هستند که این عدد به صورت مشخصی با تعداد وبسایتهای که از مرکز صدور گواهی LetsEncrypt تهیه شده بودند قرابت دارد. در 1،003 وبسایت زنجیره گواهی غیر قابل اعتماد است که در بیش از 50 درصد دلیل عدم موفقیت زنجیره گواهی، گذشت تاریخ انقضای سایت است.
بررسی میزان آسیبپذیری تنظیمات گواهی SSL
پروتکل SSL توسط کمپانی Netscape ابداع شد SSLv2و SSLv3دو نسخه از این پروتکل هستند. بعد از SSLv3 این پروتکل به TLS تغییر نام یافت. TLS مخفف Transport Layer Security و به معنای پروتکل امنیتی لایه انتقال است. TLSاز TLSv1.0 که نسخه بهروز شده SSLv3 است، شروع شده است.
پروتکل SSLv2 آسیبپذیر است و توصیه میشود که این پروتکل غیرفعال شود. همچنین پروتکل SSLv3 به دلیل وجود آسیبپذیری POODLE در آن ناامن است و برای جلوگیری از سواستفاده نفوذگران باید غیرفعال شود. در حال حاضر متخصصین امنیت فقط دو پروتکل SSLv2و SSLv3 را منسوخ شده در نظر میگیرند. استفاده از پروتکل TLS 1.1 نیز به دلیل آسیبپذیر بودن در برابر حملاتی نظیرFREAK, POODLE, BEAST و CRIME نامناسب است. تقریبا در همه وبسایتهای مورد بررسی از پروتکلTLS1.2 پشتیبانی میشود، لذا در صورت غیر فعالسازی پروتکلهای منسوخ شده و استفاده از دنباله رمزهای قوی در پروتکل TLS1.2، امنیت گواهی SSL وبسایتها به صورت چشمگیری افزایش خواهد یافت. در حال حاضر در 2999 گواهی SSL از پروتکلهای منسوخ شده پشتیبانی میکنند میشود. همچنین 17،953 وبسایت نیز از پروتکل TLS1.0 پشتیبانی میکنند که استفاده از آن موجب بروز آسیبپذیری در گواهی SSL میشود.
مقایسه وضعیت دامنههای با پروتکل TLS1.2
میزان آسیبپذیری گواهی در هنگامی که در گواهی فقط از پروتکل TLS1.2 استفاده میشود به صورت چشمگیری کاهش مییابد.
بررسی وضعیت دنباله رمز
زمانی که ارتباط HTTPS از طریق پروتکل TLSبرقرار میشود، دنباله رمزگذاری (Cipher Suite)، تعیین میکند که امنیت هر بخش از ارتباط سرور و مشتری چگونه تامین شود. در واقع نام هر مجموعه نشان دهنده الگوریتمهای استفاده شده در آن است. البته برای نمایش هر کدام از الگوریتمها از عبارت اختصاری همان الگوریتم استفاده میشود. از جمله الگوریتمهای که در یک دنباله رمز گذاری وجود دارد عبارت است از:
Key exchange Algorithm: روشی که با آن کلیدهای متقارن تعویض میشوند
Authentication Algorithm: روشی که با آن نحوه اطلاعات تعین هویت سرور و (در صورت نیاز) اطلاعات تعین هویت کاربر انتقال مییابد
Bulk Encryption Algorithm: روشی که الگوریتم متقارنی را که برای رمزگذاری داده اصلی استفاده میشود مشخص میکند.
Message Authentication Algorithm: روشی که برای بازرسی یکپارچگی اطلاعات استفاده میشود.
وضعیت دنبالههای رمز استفاده شده
در فصل قبل گزارش نشان داده شد که چگونه استفاده از پروتکلهای آسیب پذیر امنیت ارتباطات SSL/TLS را به خطر میاندازد. در ادامه باید بیان کرد که بسیاری از بردارهای حمله از نقصهای خود TLSمانندProtocol downgrades :، connection Renegotiation و Session resumption استفاده میکنند. معروفترین حمله علیه دنبالههای رمز Downgrade Attack است.
Downgrade در TLS زمانی رخ میدهد که یک مرورگر مدرن به سرور که از نسخههای قدیمیTLS و SSL استفاده میکند وصل میشود. هدف از ایجاد قابلیت Downgrade سازگاری با نسخههای قدیمیTLS بوده است. با این حال امکان سواستفاده از این ویژگی توسط نفوذگران وجود دارد به نحوی که مرورگر به صورت خودکار مجبور به استفاده از نسخههای پایین پروتکلها شود. پروتکلهای قدیمیتر از دنباله رمز ضعیفتر استفاده میکنند و دارای آسیبپذیریهای شناخته شده مانند POODLE هستند. یکی از بهترین روشها برای جلوگیری از این نقص، غیر فعال سازی امکان Downgrade است.
میزان استفاده از رمزهای 128 بیتی ضعیف
بررسی میزان استفاده از رمزهای ضعیف 3DES
دنباله رمز 3DES که یک الگوریتم کلید متقارن بلوکی است. الگوریتم DES را سه بار به هر بلوکی داده اعمال میکند. در این الگوریتم به دلیل استفاده از بلوکها با اندازه کوچک 64 بیتی امکان تداخل و درنتیجه افشای کلید وجود دارد. در حال حاضر در بیش نیمیاز دامنههای دارای HTTPS این الگوریتم ضعیف رمزگذاری استفاده میشود که این رمزگذاری موجب آسیبپذیری سیستم در مقابل حملات شناخته شده مانند SWEET32 میشود. در واقع حمله SWEET32 بر اساس دنباله رمز 3DES طراحی شده است و همه وبسایتهایی که از این رمزگذاری استفاده میکنند آسیبپذیر هستند. همچنین میزان آسیبپذیری به حمله BEAST نیز در زمان استفاده از این رمزگذاری به صورت قابل ملاحظهای افزایش مییابد.
جمعبندی
گواهیSSL ستون اصلی در امنیت وب است. در واقع این پروتکل از اطلاعات حساس ما در زمان انتقال در شبکه محافظت میکند. استفاده ازSSL برای حفاظت از وبسایتها ضروری است. حتی اگر اطلاعات حساسی مانند اطلاعات حسابهای بانکی را منتقل نمیکنیمSSL اصالتسنجی وبسایت، حفاظت از حریم خصوصی و یکپارچگی دادههای انتقالی وبسایت را فراهم میآورد. این در حالی است که در ایران بسیاری از وبسایتها هنوز از پروتکل HTTP برای انتقال اطلاعات استفاده میکنند و تنها 14 درصد از وبسایتها از HTTPS استفاده میکنند که بسیار کمتر از سطح جهانی است.
استفاده ازSSL به تنهایی نمیتواند تامین کننده امنیت باشد زیرا مانند هر تکنولوژی دیگری پیکربندی غلط این پروتکلها یا آسیبپذیریهای موجود در آن میتواند توسط نفوذگران مورد سواستفاده قرار گیرد. طی این بررسی مشخص شد آسیبپذیری وبسایتهای کشور نسبت به حملات شناخته شده SSL در سطح بالایی است. هر چند سواستفاده از بیشتر این آسیبپذیریها به سهولت امکان پذیر نیست. استفاده از الگوریتمهای رمزگذاری ضعیف مانند CBC mode و RC4 باعث شده است تا ۶،۳۷۱ سایت دارای دنباله ضعف RC4 بوده و به ترتیب ۱۷،۷۶۶ و ۱۳،۶۵۵ وبسایت نسبت به حمله BEAST و SWEET32 آسیبپذیر باشند. همچنین استفاده از پروتکلهای منسوخ شدهSSLv3 و SSLv2 باعث شده است تا 2،955 وبسایت نسبت به حمله POODLE آسیبپذیر باشد.
دلیل اصلی این آسیبپذیریها استفاده از پروتکلهای ضعیف یا دنباله رمزهای نا کارآمد است که میتوان با انجام تنظیمات ساده از وقوع بسیاری از این حملات جلوگیری کرد. در بیشتر وبسایتهای مورد بررسی از پروتکلها و دنبالههای قوی نیز پشتیبانی شده اما از آنجاییکه دنبالهها و پروتکلهای ضعیف نیز فعال هستند، مهاجمان با حملاتی نظیر Downgrade مرورگرها را وادار به برقراری ارتباط با پروتکلهای ضعیف میکنند. برای انجام یک پیکربندی صحیح باید مواردی مختلفی در نظر گرفته شود که در سرویس دهندههای وب مختلف متفاون است، اما رعایت برخی از قوانین کلی میتواند گام مهمی در افزایش امنیت وبسایتهای کشور باشد، از جمله:
• غیر فعالسازیSSLv2 و SSLv3 برای جلوگیری از POODLE
• غیر فعالسازی TLS1.0 compression برای جلوگیری از CRIME
• غیر فعالسازی رمزهای ضعیف مانند: DES/3DES و RC4 و استفاده از رمزهای مدرن مانند AES ، modes (GCM) ،ChaCha20 و پروتکلهای TLS1.2
• بهروز رسانی مرورگر به نسخه نهایی و استفاده از دنباله رمز TLS_FALLBACK_SCSV در صورت نیاز
• بهروزرسانی نسخه OpenSSl و در صورت که ممکن نباشد کامپایل مجدد آن با OPENSSL_NO_HEARTBEATS
مرجع : مرکز ماهر