Instalike
Instagram

تبلیغات ارزان در دانش کامپیوتری - اندازه 468 در 60

همه چیز درمورد باگ HeartBleed به همراه سوال و جواب درمورد آن

مدت ها قبل باگ مهمی بنام هارت‌بلید در دنیای اینترنت مطرح شد که اکثر سایت های مهم مانند گوگل و فیس بوک و تویتر و … به کاربران خود هشدار دادند در اولین فرصت رمز ورود خود را عوض کنند! این باگ چه چیزی بود که این همه صدا کرد و همه را به تکاپو واداشت؟ در این مقاله می خواهیم با مقدمه ای در مورد OpenSSL و بعد از آن درمورد HeratBleed بیشتر بدانیم و چندین سوال و جواب هم در مورد آن داشته باشیم. برای مطالعه این مقاله می توانید به ادامه همین مطلب مراجعه نمایید.

مقدمه:

اولین چیزی که باید در مورد آن بدانیم اوپن‌اس‌اس‌ال (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 استفاده می کردند که در باگی که خود سازندگان و دارندگان OpenSSL متوجه آن شدند را در ادامه از وی‌کی‌پدیا به مختصر بیان می کنیم.

هارت‌بلید (به انگلیسی HeartBleed) در سال ۲۰۱۴ یک آسیب‌پذیری خطرناک در این کتابخانه کشف شد که به یک مهاجم اجازه می‌داد بتواند اطلاعات موجود در حافظه قربانی را به شکل غیرقانونی بخواند. معلوم نیست که آیا قبل از این کشف مهاجمی توانسته باشد آن را شناسایی کرده و مورد استفاده قرار داده باشد. به دنبال کشف این حفره، در آوریل ۲۰۱۴، توسعه‌دهندگان اوپن‌بی‌اس‌دی با منشعب کردن اوپن‌اس‌اس‌ال، پروژه دیگری تحت عنوان لیبره‌اس‌اس‌ال را بنیان نهادند که هدف آن فراهم کردن یک جایگزین ایمن، جدیدتر و تمیزتر برای اوپن‌اس‌اس‌ال است.

حال پس از کشف این موضوع تمامی سرورهای مجهز شده به این گواهی و الگوریتم سیستم خود را پچ کردند و امروزه دیگر این باگ در سیستم OpenSSL موجود نیست ولی در این بین شرکت هایی مثل Apple اعلام کرده بودند سیستم های آنها به هیچ وجه دچار این باگ نیست و کلا سیستم های این شرکت به دور از هرگونه باگ می باشند! حال می رسیم به سوالات متداولی که اکثر دوستان حضوری یا بصورت ایمیل و PM از من پرسیده بودند و این ها را جمع آوری کرده و در یک مقاله گردآوری کرده ام.

.

چرا اسم این باگ “خونریزی قلبی” نامگذاری شده و این باگ چگونه اطلاعات را بیرون می دهد؟

در بحث سرور و کارکرد آن یک عمل اولیه برای فهمیدن اینکه سرور Up هست یا نه وجود دارد بنام “ضربان قلبی” یا Heartbeat که منظور مانند ضربان قبل از طرف بیرون یک سوال ساده برای سرور ارسال می شود و منتظر جواب خاص می ماند تا بداند سرور سالم هست یا نه! باگ Heart Bleed هم بر اساس همین عمل می باشد ولی این عمل را می خواییم با یک مثال ساده به شما نشان دهیم که باگ را خود شما می توانید کشف کنید در این مثال. میزبان (Client) به سرور پیغام می دهد “سرور آیا اینجا هستی؟ اگر هستی بگو سیب (۳ حرف)” سرور در بین انبوه اطلاعاتی که باید به میزبانهای دیگر هم بدهد ولی مجبور است به این سوال هم جواب دهد در بین آنها و در لیست موجود خود که اطلاعات سایر میزبان ها هم می باشد کلمه “سیب” را هم می گذارد و در درخواست گفته شده ۳ کلمه و سرور ۳ کلمه موجود در آن ردیف را برای این میزبان قرار می دهد. حال که موقع پاسخ گویی به میزبان رسیده است کلمه سیب را برای تایید سالم بودن خود به میزبان می گوید. دقت کنید که این کارها همگی در کمتر از ثانیه انجام می شود و دلیل این سرعت بالا بودن سیستم سرورها می باشد. حال ممکن هست این سوال برای شما پیش بیاید که اگر میزبان کمی شلوغ باشد و بگوید: “سرور آیا هستی؟ اگر هستی کلمه سیب را بگو (۵۰۰حرف)”  بله! سرور چون این را پیش بینی نکرده بود که میزبان می تواند تعداد جواب خواسته شده خود را با جواب خاص یکی نکند چه اتفاق می افند! چون جواب سیب در بین جواب های هزاران میزبان می باشد هم کلمه سیب ارسال می شود و هم تا ۴۹۷ حرف دیگر! هکر هم می تواند از بخشی از این اطلاعات استفاده لازم را ببرد. اگر متوجه نشدید این کامیک را مشاهده کنید (به زبان انگلیسی می باشد).

.

چه کسی این باگ را کشف کرد؟

باید بگوییم چه کسانی! و جالب است بدانید ۲ سال پیش دو فرد بصورت هم زمان این مورد را به OpenSSL اطلاع دادند. یکی از آنها Neel Mehta محقق امنیتی شرکت Google می باشد که در اولین لحظه ای که متوجه این باگ شد ۱۰۰هزار دلار کنار دستش دقیقا کنار ماوس خود برای درست کردن این باگ گذاشت و دلیل آن Open Source بودن OpenSSL است که هیچ مبلغی این شرکت بابت سیستم خود از کسی نمی گیرد و مبالغ آن از افراد بصورت داوطلبانه دریافت می شود. و شرکت OpenSSL هم بعدها برای تشکر از کشف مهم جایزه ۱۵ هزار دلاری برای این شخص ارائه می کند! فرد دیگر هم یک محقق از شرکت Codenomicon می باشد که برای این مورد کمپینی تهیه کرده و سایتی هم برای آن تدارک دیدند با نام HeratBleed.com که می توانید موارد بیشتر در این مورد را در سایت خود آن که توسط شرکت عنوان شده ساخته شده است را مطالعه کنید. بعد از این کمپین و فشارهای محققان اینترنت و تهدید برای فاش کردن عمومی آن بلاخره شرکت OpenSSL مجبورا بعد از دوسال این باگ را رفع کرده و عموما آن را مطرح می کند و خواستار عوض کردن رمزهای کاربران شده بود.

.

در مقابل این باگ بزرگ ما باید چه کارهایی را انجام دهیم؟

بصورت دوستانه اگر بیان کنیم هیچ کار! سرورهایی که به این سیستم مجهز بودند باید خود را با پچ هایی که OpenSSL آنها را معرفی کرده بود درست نمایند ولی شما برای محکم کاری هم شده همه رمزهای مربوط به گوگل، یاهو، تویتر و حتی فیس بوک خودتان را در اولین فرصت عوض کنید. چون معلوم نیست در عرض این دوسال چه کسانی از این باگ استفاده های لازم را کرده اند.

.

تمامی این مطالب توسط این جانب “مهرداد مهاجر” از سایت های معتبر و دانش شخصی خود تهیه و گردآوری شده و امید هست درصورتی که درجایی از آن استفاده شد نام مرجع آن حتما در زیر مطلب با لینک به خود مقاله در دانش کامپیوتری به همین صورت که بنده نوشته ام بماند تا اگر دوستان سوال دیگری داشتند همین جا مطرح کنند تا باهم به آن جواب دهیم. اگر در متن مقاله جایی اشتباهی وجود داشت خوشحال می شوم آن را از شما بشنوم.



این مطلب را با دوستان خود به اشتراک بگذارید.
(برای ذخیره در قالب PDF روی دکمه Print در انتها کلیک نمایید)
Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInEmail this to someonePrint this page

درباره ی مهرداد مهاجر

مهرداد مهاجر هستم، مدیر و نویسنده‌ی سایت دانش‌کامپیوتری. کارشناس نرم‌افزار کامپیوتر و علاقه‌مند به برنامه‌نویسی و اینترنت در کنار مباحث امنیت و علوم روز. از آنجایی که همه آموزش‌ها و مطالب را تنها خودم تهیه کرده‌ام و نویسنده آنها تنها شخص خودم می‌باشم از شما دوستان فهیم و با فرهنگ خواستارم که در صورت استفاده از این مطالب در هرجایی حتما نام نویسنده و لینک به مطلب در دانش‌کامپیوتری را هم درج نمایید تا زحمات شبانه روزی اینجانب که بصورت رایگان در اینجا ارائه می‌شود بی نتیجه نماند. همچنین ارائه دیدگاه از جانب شما در مورد مطالب سایت نقش مهمی در ادامه فعالیت و بهبود مطالب آن دارد. همیشه موفق و پیروز باشید.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *