بررسی آسیب پذیری Heartbleed در شبکه های بیسیم

بر اساس گزارش محقق پروژه، Cupid به دو وصله ای که می تواند به برنامه های hostapd و wpa_supplicant در لینوکس اعمال شود نامگذاری شده است. این وصله رفتار دو برنامه ذکر شده را جهت سواستفاده از نقص heartbleed در ارتباطات TLS که در انواع خاصی از شبکه های بی سیم با رمز عبور محافظت شده اتفاق می افتد تغییر می دهد.
Hostapd برنامه ایست که یک Access Point قابل تنظیم را بر روی لینوکس نصب می کند و قادر است تا تقریبا هر نوع پیکر بندی از شبکه های بی سیم را ایجاد نموده و به کاربران اجازه اتصال به آن را بدهد.
Wpa_supplicant برنامه ایست که جهت اتصال به شبکه های بی سیم در لینوکس و اندروید مورد استفاده قرار می گیرد.
نکته جالب این است که، هر دو برنامه توسط یک شخص نوشته شده است و کدهای شبیه به یکدیگر دارد.

نحوه انجام حمله:

این نوع از حمله اساسا شبیه حمله heartbleed است که بر اساس یک بسته heartbeat مخرب پایه ریزی شده است. همانند حمله heartbleed که در ارتباطات TLS مبتنی بر پروتکل TCP اتفاق می افتد، در اینجا نیز کلاینت و سرور هر دو ممکن است مورد سوء استفاده قرار گرفته و فرآیندهای حافظه در هر دو سمت ارتباط خوانده شود.
تفاوتی که در این سناریو وجود دارد این است که در این حالت ارتباط TLS بر مبنای EAP می باشد که یک مکانیزم اعتبار سنجی مورد استفاده در شبکه های بی سیم است. EAP یک چارچوب مورد استفاده در مکانیزم های تایید هویت مختلف است و چند نمونه از آن که از TLS‌ استفاده می کنند شامل EAP-PEAP، EAP-TLS، EAP-TTLS می باشند. EAP همچنین در تایید هویت ارتباطات ۸۰۲.۱x و peer 2 peer مورد استفاده قرار می گیرد.
به منظور سواستفاده از کلاینت های آسیب پذیر، hostapd ( همراه با وصله cupid ) می تواند جهت راه اندازی یک شبکه مخرب مورد استفاده قرار گیرد به نحوی که هر زمان که کلاینت آسیب پذیر سعی در اتصال و درخواست ارتباط TLS را می کند، hostapd درخواست های heartbeat مخرب را ارسال می نماید.
در این حالت حتی پیغام “Server Hello” نیز برای کلاینت ارسال نمی گردد و به محض اینکه کلاینت آسیب پذیر، درخواست ارتباط TLS را داده و پیغام “Client Hello” را ارسال می کند، درخواست های heartbeat برایش فرستاده می شود. در حالی که کلاینت از دریافت پاسخ خشنود می باشد، بیشتر از ۶۴ کیلوبایت از حافظه خوانده می شود. از جمله مواردی که به احتمال زیاد از حافظه خوانده خواهد شد کلید خصوصی گواهینامه مورد استفاده در ارتباط TLS و همچنین اطلاعات کاربر جهت تصدیق هویت می باشد.
به منظور سواستفاده از سرورهای آسیب پذیر می توان wpa_supplicant (همراه با وصله cupid) را بدین شکل مورد استفاده قرار داد که یک درخواست ارتباط به یک شبکه آسیب پذیر ارسال و درست بعد از اینکه ارتباط TLS برقرار شد درخواست مخرب heartbeat ارسال گردد.
برای این منظور ابتدا یک نام کاربری(EAP Identity) فراهم شده و سپس یک اتصال TLS بر مبنای EAP جهت تصدیق هویت (با استفاده از EAP-PEAP) ایجاد می گردد. در ادامه cupid درخواست های heartbeat را درست بعد از پیغام “Client Hello” برای شبکه آسیب پذیر ارسال می نماید بدون اینکه نیازی به برقراری کامل ارتباط TLS (handshake) باشد و در نهایت موجب می شود تا به ازای هر درخواست heartbeat حدود بیشتر از ۶۴ کیلو بایت از حافظه خوانده شود.
نکته مهم اینست که نیازی به برقراری کامل ارتباط TLS جهت حمله heartbleed نمی باشد. همچنین نیازی به رد و بدل شدن کلیدهای واقعی و گواهی نیز نمی باشد. در واقع امکان ارسال و دریافت پاسخ های heartbeat درست بعد از پیغام “Client Hello” (قبل از اینکه گواهینامه ها ارائه شوند یا کلید های نشست رد و بدل شوند) وجود دارد.
به منظور بهره برداری از این آسیب پذیری نیازی به ارائه نام کاربری و رمز عبور معتبر هم نمی باشد. بعضی اوقات جهت سوء استفاده از یک سرور آسیب پذیر فقط باید یک نام کاربری معتبر(بدون رمز عبور) ارائه گردد تا EAP کاربر را به سرور احراز هویت مناسب هدایت کند که این را به راحتی می توان از طریق شنود کردن زمانی که کاربر حقیقی سعی در برقراری ارتباط دارد بدست آورد.

چه نرم افزارهایی تحت تاثیر این آسیب پذیری قرار دارند؟

بر روی سیستم عامل Ubuntu ، اگر یک نسخه آسیب پذیر OpenSSL مورد استفاده قرار گیرد، wpa_supplicant، hostapd و freeradius که به صورت پیش فرض بر روی آن نصب شده، ممکن است مورد سوء استفاده قرار گیرد.
سیستم عامل آندروید، نسخه های ۴.۱.۰ و ۴.۱.۱ از نسخه آسیب پذیر OpenSSL استفاده می کنند. همچنین تمام نسخه های آندروید از wpa_supplicant برای اتصال به شبکه های بی سیم استفاده می کنند، به همین خاطر فرض بر این است که احتمالا آسیب پذیر هستند.
اگر از دستگاهی با سیستم عامل آندروید، نسخه ۴.۱.۰ یا ۴.۱.۱ استفاده می شود باید از اتصال به شبکه های بی سیم ناشناس اجتناب شود مگر اینکه ROM دستگاه ارتقاء داده شود.
اگر از سیستم عامل لینوکس جهت اتصال به شبکه های بی سیم استفاده شود، باید از ارتقاء کتابخانه های OpenSSL اطمینان حاصل کرد. بدین منظور می بایست توصیه های heartbleed مورد توجه قرار گیرد.
اگر از یک روتر خانگی استفاده می شود، احتمالا در برابر چنین حمله ای امن می باشد زیرا بیشتر روترهای خانگی از یک تک کلید برای امنیت بی سیم استفاده می کنند و مکانیزم احراز هویت EAP را مورد استفاده قرار نمی دهند.
ولی در صورتیکه از راهکارهای سازمانی برای اتصال به شبکه بی سیم استفاده می نمایید، می بایست آسیب پذیری را بررسی نموده زیرا اکثر راهکارهای سازمانی قابل مدیریت، از مکانیزم تایید هویت EAP استفاده می نمایند و همچنین بسیاری از تجهیزات از OpenSSL استفاده می کنند.
به خاطر داشته باشید، EAP در تایید هویت ارتباطات ۸۰۲.۱x و peer 2 peer نیز مورد استفاده قرار می گیرد. که می بایست بررسی و به روزرسانی های مربوطه صورت گیرد.

منبع: it-sec.ir

پاسخ دهید

پاسخ به سوالات امنیتی

برای پاسخگویی به سوالات امنیتی، با ما تماس بگیرید.