مدت ها قبل باگ مهمی بنام HeartBleed (هارتبلید) همان حملهی قلبی، در دنیای اینترنت مطرح شد که اکثر سایت های مهم مانند گوگل و فیسبوک و تویتر و … به کاربران خود هشدار دادند در اولین فرصت رمز ورود خود را عوض کنند! باگ HeartBleed چه چیزی بود که این همه صدا کرد و همه را به تکاپو واداشت؟ در این مقاله می خواهیم با مقدمه ای در مورد OpenSSL و بعد از آن در مورد HeratBleed بیشتر بدانیم و چندین سوال و جواب هم در مورد آن داشته باشیم. برای مطالعه این مقاله می توانید به ادامه همین مطلب مراجعه نمایید.
HeartBleed چیست؟
اولین چیزی که باید در مورد آن بدانیم اوپناساسال (OpenSSL) میباشد که ویکیپدیا برای این مورد تعریف زیر را بیان کرده است که توضیحات شخصی را که در متن اصلی نیست در کروشه بیان کردهایم:
اپناساسال (به انگلیسی: OpenSSL) یک پیادهسازی متنباز پروتکل اساسال [SSL] و تیالاس [TLS] است. این کتابخانه به زبان برنامهنویسی سی [C] نوشتهشده که توابع پایهای رمزنگاری و توابع کاربردی مختلفی را پیادهسازی میکند. هرچند که این کتابخانه در اصل برای زبان برنامهنویسی سی نوشته شده است، اما تعدادی جلد-کتابخانه برای آن وجود دارد که از طریق آنها میتوان در زبانهای برنامهنویسی دیگری به غیر از سی هم به رابطهای کتابخانه اپناساسال دسترسی داشت. کتابخانه اپناساسال برای بیشتر سیستمعاملهای شبه یونیکس [Unix] نظیر سولاریس [Solaris]، لینوکس [Linux]، مک اواس ده [MacOS 10] و گونههای مختلف بیاسدی [BSD] و همچنین اوپنویاماس [OpenVMS] و مایکروسافت ویندوز هم در دسترس است. اوپناساسال مبتنی بر کتابخانه دیگری به نام SSLeay که توسط Eric A. Young و Tim Hudson توسعه مییافت، است. وقتی که یونگ و هودسون در دسامبر سال ۱۹۹۸ شروع به کار در آیاسای سکیوریتی کردند، توسعه پروژه SSLeay متوقف شد. اوپناساسال از انواع مختلف الگوریتمهای زمرنگاری نظیر AES, Blowfish, Camellia, SEED و همینطور انواع مختلف توابع درهمسازی رمزنگاری نظیر MD5, MD2, SHA-1, SHA-2 و الگوریتمهای رمزنگاری کلید عمومی مانند RSA, DSA پشتیبانی میکند.
اپناساسال یک نرمافزار دو-پروانهای است که تحت پروانههای اوپناساسال و SSLeay عرضه میشود. پروانه اپناساسال در اصل همان پروانه آپاچی ۱٫۰ است و پروانه SSLeay هم همان پروانه چهار-بنده بیاسدی است. اصطلاح دوپردانهای معمولاً به این معنیست که کاربر میتواند به انتخاب خود هر پروانهای که مایل بود را انتخاب کند. اما در مستندات اپناساسال اینطور عنوان شده که هر دو پروانه باید به صورت همزمان بکار برده شود.
اگر متن بالا برای شما گنگ بود بطور خلاصه می توان گفت سایتهای مهم برای اینکه اطلاعات آنها توسط رابط های شبکهای دزدیده نشود (یا به اصطلاح هکرها، Sniff نشود) از الگوریتم رمزگذاری برای این ارتباط ها استفاده میکردند و در آدرس آنها بجای http ما https مشاهده میکردیم و اگر در مرورگر موزیلا روی علامت قفل کنار همین https کلیک کنید نوع مجوز و اطلاعات آن نمایش داده میشود که سایتهای مشهوری که در ابتدای مقاله عنوان شدند از OpenSSL استفاده میکردند که در باگ HeartBleed که خود سازندگان و دارندگان OpenSSL متوجه آن شدند را در ادامه از ویکیپدیا به مختصر بیان میکنیم.
هارتبلید (به انگلیسی HeartBleed) در سال ۲۰۱۴ یک آسیبپذیری خطرناک در این کتابخانه کشف شد که به یک مهاجم اجازه میداد بتواند اطلاعات موجود در حافظه قربانی را به شکل غیرقانونی بخواند. معلوم نیست که آیا قبل از این کشف مهاجمی توانسته باشد آن را شناسایی کرده و مورد استفاده قرار داده باشد. به دنبال کشف این حفره، در آوریل ۲۰۱۴، توسعهدهندگان اوپنبیاسدی با منشعب کردن اوپناساسال، پروژه دیگری تحت عنوان لیبرهاساسال را بنیان نهادند که هدف آن فراهم کردن یک جایگزین ایمن، جدیدتر و تمیزتر برای اوپناساسال است.
حال پس از کشف این موضوع تمامی سرورهای مجهز شده به این گواهی و الگوریتم سیستم خود را Patch کردند و امروزه دیگر این باگ در سیستم OpenSSL موجود نیست ولی در این بین شرکتهایی مثل Apple اعلام کرده بودند سیستم های آنها به هیچ وجه دچار باگ HeartBleed نیست و کلا سیستم های این شرکت به دور از هرگونه باگ میباشند! حال می رسیم به سوالات متداولی که اکثر دوستان حضوری یا بصورت ایمیل و PM از من پرسیده بودند و اینها را جمع آوری کرده و در یک مقاله گردآوری کردهام.
.
چرا اسم این باگ HeartBleed یا “خونریزی قلبی” نامگذاری شده و این باگ چگونه اطلاعات را بیرون می دهد؟
در بحث سرور و کارکرد آن یک عمل اولیه برای فهمیدن اینکه سرور Up هست یا نه وجود دارد بنام “ضربان قلبی” یا Heartbeat که منظور مانند ضربان قبل از طرف بیرون یک سوال ساده برای سرور ارسال می شود و منتظر جواب خاص می ماند تا بداند سرور سالم هست یا نه! باگ Heart Bleed هم بر اساس همین عمل می باشد ولی این عمل را می خواهیم با یک مثال ساده به شما نشان دهیم که باگ را خود شما می توانید کشف کنید در این مثال. میزبان (Client) به سرور پیغام می دهد “سرور آیا اینجا هستی؟ اگر هستی بگو سیب (۳ حرف)” سرور در بین انبوه اطلاعاتی که باید به میزبانهای دیگر هم بدهد ولی مجبور است به این سوال هم جواب دهد در بین آنها و در لیست موجود خود که اطلاعات سایر میزبان ها هم می باشد کلمه “سیب” را هم می گذارد و در درخواست گفته شده ۳ کلمه و سرور ۳ کلمه موجود در آن ردیف را برای این میزبان قرار می دهد. حال که موقع پاسخ گویی به میزبان رسیده است کلمه سیب را برای تایید سالم بودن خود به میزبان می گوید. دقت کنید که این کارها همگی در کمتر از ثانیه انجام می شود و دلیل این سرعت بالا بودن سیستم سرورها می باشد. حال ممکن هست این سوال برای شما پیش بیاید که اگر میزبان کمی شلوغ باشد و بگوید: “سرور آیا هستی؟ اگر هستی کلمه سیب را بگو (۵۰۰حرف)” بله! سرور چون این را پیشبینی نکرده بود که میزبان می تواند تعداد جواب خواسته شده خود را با جواب خاص یکی نکند چه اتفاق میافتد! چون جواب سیب در بین جوابهای هزاران میزبان می باشد هم کلمه سیب ارسال می شود و هم تا ۴۹۷ حرف دیگر! هکر هم می تواند از بخشی از این اطلاعات استفاده لازم را ببرد. اگر متوجه نشدید این کامیک را مشاهده کنید (به زبان انگلیسی میباشد).
.
چه کسی این باگ را کشف کرد؟
باید بگوییم چه کسانی! و جالب است بدانید ۲ سال پیش دو فرد بصورت هم زمان این مورد را به OpenSSL اطلاع دادند. یکی از آنها Neel Mehta محقق امنیتی شرکت Google می باشد که در اولین لحظه ای که متوجه باگ HeartBleed شد ۱۰۰هزار دلار کنار دستش دقیقا کنار ماوس خود برای درست کردن این باگ گذاشت و دلیل آن Open Source بودن OpenSSL است که هیچ مبلغی این شرکت بابت سیستم خود از کسی نمی گیرد و مبالغ آن از افراد بصورت داوطلبانه دریافت می شود. و شرکت OpenSSL هم بعدها برای تشکر از کشف مهم جایزه ۱۵ هزار دلاری برای این شخص ارائه می کند! فرد دیگر هم یک محقق از شرکت Codenomicon می باشد که برای این مورد کمپینی تهیه کرده و سایتی هم برای آن تدارک دیدند با نام HeratBleed.com که می توانید موارد بیشتر در این مورد را در سایت خود آن که توسط شرکت عنوان شده ساخته شده است را مطالعه کنید. بعد از این کمپین و فشارهای محققان اینترنت و تهدید برای فاش کردن عمومی آن بالاخره شرکت OpenSSL مجبورا بعد از دو سال این باگ را رفع کرده و عموما آن را مطرح می کند و خواستار عوض کردن رمزهای کاربران شده بود.
.
در مقابل این باگ بزرگ ما باید چه کارهایی را انجام دهیم؟
بصورت دوستانه اگر بیان کنیم هیچ کار! سرورهایی که به این سیستم مجهز بودند باید خود را با Patchهایی که OpenSSL آنها را معرفی کرده بود درست نمایند ولی شما برای محکم کاری هم شده همه رمزهای مربوط به گوگل، یاهو، تویتر و حتی فیسبوک خودتان را در اولین فرصت عوض کنید. چون معلوم نیست در عرض این دو سال چه کسانی از این باگ استفاده های لازم را کردهاند.
.
تمامی این مطالب توسط نویسنده از سایتهای معتبر و دانش شخصی خود تهیه و گردآوری شده و امید هست در صورتی که در جایی از آن استفاده شد نام مرجع آن حتما در زیر مطلب با لینک به خود مقاله در دانش کامپیوتری به همین صورت که بنده نوشتهام بماند تا اگر دوستان سوال دیگری داشتند همین جا مطرح کنند تا باهم به آن جواب دهیم. اگر در متن مقاله جایی اشتباهی وجود داشت خوشحال می شوم آن را از شما بشنوم.