
رفض الخدمة عن بُعد في OpenSSL DTLS CVE-2014-0221
رفض خدمة OpenSSL DTLS CVE-2014-0221 عن بُعد
أمان طبقة النقل للبيانات. *الطبقة المادية
دعم البيانات في طبقة TCP : TLS
دعم البيانات في طبقة UDP : DTLS : من خلال التعديل المناسب لعملية المصافحة، يعالج تبادل المفاتيح والمصادقة وإعداد معلمات الأمان، ويدعم الاتصال الآمن الموثوق لـ UDP ذي الطابع غير الاتصالي عبر المهلات الزمنية وإعادة الإرسال
DTLS هو اختصار لـ Datagram Transport Layer Security، وهو بروتوكول لتوفير الأمان في الاتصالات القائمة على UDP (User Datagram Protocol). يُستخدم TLS (Transport Layer Security) بشكل أساسي لتوفير الأمان في الاتصالات القائمة على TCP (Transmission Control Protocol)، ولكن نظرًا لأن UDP بروتوكول غير موجه للاتصال وقائم على الحزم، فمن الصعب تطبيق TLS مباشرة عليه. لذلك تم تصميم DTLS لتوفير الأمان في الاتصالات القائمة على UDP.
يشبه DTLS البنية الأساسية لـ TLS إلى حد كبير، لكن هناك بعض الاختلافات الرئيسية:
دعم البيانات: صُمم DTLS ليكون مناسبًا لبروتوكول UDP القائم على البيانات. تم تحسين TLS لبروتوكول TCP الموجه للاتصال، لذلك تم تعديله للعمل بوحدات بيانات (datagrams) لتطبيقه على UDP.
التعديل المناسب لعملية المصافحة: يستخدم DTLS عملية المصافحة مثل TLS للتعامل مع مصادقة الاتصال وتبادل المفاتيح وإعداد معلمات الأمان. ومع ذلك، نظرًا لأن فقدان الحزم أو تغيّر ترتيبها يمكن أن يحدث بسبب طبيعة UDP، فقد أُضيفت آليات إلى DTLS للتعامل مع هذه الحالات.
المهلات الزمنية وإعادة الإرسال: يتضمن DTLS آليات المهلات الزمنية وإعادة الإرسال تحسبًا لفقدان الحزم أو الحاجة إلى إعادة الإرسال. وهذا يعوّض الطابع غير الاتصالي لـ UDP، مما يتيح اتصالًا آمنًا وموثوقًا.
الاعتبارات الأمنية: يستخدم DTLS نفس بروتوكولات الأمان المستخدمة في TLS لضمان سرية البيانات وسلامتها ومصادقتها. وبالتالي يمكن نقل البيانات بأمان حتى في التطبيقات القائمة على UDP.
يُستخدم DTLS بشكل أساسي لتوفير الأمان في البيئات التي تستخدم UDP، مثل VoIP (المكالمات الصوتية)، وبث الوسائط المتعددة، وخوادم الألعاب.
لماذا OpenSSL؟ : DTLS هي TLS قائمة على UDP، وقد تم تنفيذ DTLS 1.0 في OpenSSL.
ثغرة تسمح بفك تشفير بيانات الإرسال والتلاعب بالبيانات المنقولة بين الخادم والعميل عبر هجوم رجل في المنتصف (MITM) عن طريق إرسال مصافحة معدلة (CVE-2014-0224)
ثغرة تسمح بشن هجوم حجب الخدمة عن طريق إرسال مصافحة DTLS غير طبيعية إلى عميل OpenSSL DTLS (CVE-2014-0221)
ثغرة تسمح بتنفيذ كود عشوائي عن طريق إرسال أجزاء DTLS غير طبيعية إلى عميل أو خادم OpenSSL DTLS (CVE-2014-0195)
ثغرة تسمح بتنفيذ كود عشوائي بسبب خلل في دالة do_ssl3_write (CVE-2014-0198)
تحدث هذه الثغرة في OpenSSL 1.0.0 و1.0.1 عند تفعيل خيار SSL_MODE_RELEASE_BUFFERS (وهذا الخيار معطّل افتراضيًا)
ثغرة تسمح للمهاجم بحقن بيانات في الجلسة أو شن هجوم حجب خدمة بسبب حالة سباق (race condition) في دالة ssl3_read_bytes (CVE-2010-5298)
تحدث هذه الثغرة في التطبيقات متعددة الخيوط التي تستخدم OpenSSL 1.0.0 و1.0.1 عند تفعيل خيار SSL_MODE_RELEASE_BUFFERS (وهذا الخيار معطّل افتراضيًا)
ثغرة يمكن أن تؤدي إلى هجوم حجب خدمة على عملاء OpenSSL TLS الذين تم تفعيل مجموعات تشفير ECDH مجهولة لديهم (CVE-2014-3470)
إصدارات سلسلة OpenSSL 0.9.8
إصدارات سلسلة OpenSSL 1.0.0
إصدارات سلسلة OpenSSL 1.0.1
من بين هذه الثغرات، CVE-2014-0221 هي ثغرة تسمح بشن هجوم حجب خدمة عن طريق إرسال مصافحة DTLS غير طبيعية إلى عميل OpenSSL DTLS
< ثغرة حجب الخدمة في DTLS (CVE-2014-0221) >
o DTLS (Datagram Transport Layer Security) هو بروتوكول يعتمد على TLS لنقل بيانات (datagrams) مشفرة.
o عند إرسال رسالة مصافحة DTLS غير طبيعية (رسالة DTLS Hello) إلى عميل DTLS، يمكن أن يدخل OpenSSL في حالة تكرار (recursion)، مما يتيح هجوم حجب الخدمة.
if(!s->server && s->d1->r_msg_hdr.frag_off == 0 && wire[0] == SSL3_MT_HELLO_REQUEST) {
if(wire[1] == 0 && wire[2] == 0 && wire[3] == 0) {
if(s->msg_callback)
s->msg_callback(0, s->version, SSL3_RT_HANDSHAKE,
wire, DTLS1_HM_HEADER_LENGTH, s, s->msg_callback_arg);
s->init_num = 0;
return dtls1_get_message_fragment(s, st1, stn, max, ok);
}
else {
al=SSL_AD_UNEXPECTED_MESSAGE;
SSLerr(SSL_F_DTLS1_GET_MESSAGE_FRAGMENT,SSL_R_UNEXPECTED_MESSAGE);
goto f_err;
}
}