توزيع نظام التشغيل مفتوح المصدر OpenBSD معروف جيدًا بين مسؤولي النظام ، وخاصة أولئك الذين يديرون الخوادم ، لتركيزه على الأمان فوق السرعة والميزات والواجهات الأمامية الرائعة.
من المناسب ، ربما ، أن شعارها عبارة عن سمكة منتفخة - منتفخة ، مع أشواكها جاهزة لصد أي متسللين ماكرة قد يأتون.
لكن ربما اشتهر فريق OpenBSD ليس بتوزيعه بالكامل ، ولكن لمجموعة أدوات الوصول عن بُعد بينسه تمت كتابته في أواخر التسعينيات لإدراجه في نظام التشغيل نفسه.
SSH ، اختصار لـ صدفه آمنه، تم إنشاؤه في الأصل من قبل عالم الكمبيوتر الفنلندي تاتو يلونين في منتصف التسعينيات على أمل التخلص من مسؤولي النظام عن عادة استخدام بروتوكول Telnet المحفوفة بالمخاطر.
مشكلة Telnet
كان Telnet بسيطًا وفعالًا بشكل ملحوظ: بدلاً من توصيل الأسلاك المادية (أو استخدام مودم عبر خط الهاتف) لإجراء اتصال teletype بالخوادم البعيدة ، استخدمت اتصال TELetype NETwork بدلاً من ذلك.
بشكل أساسي ، البيانات التي تتدفق عادةً ذهابًا وإيابًا عبر اتصال تسلسلي مخصص أو خط هاتف للاتصال الهاتفي تم إرسالها واستلامها عبر الإنترنت ، باستخدام اتصال شبكة TCP بتبديل الحزمة بدلاً من ارتباط نقطة إلى نقطة بتبديل الدائرة .
نفس نظام تسجيل الدخول المألوف ، اتصالات أرخص ، لا حاجة لخطوط بيانات مخصصة!
كان العيب الكبير في Telnet ، بالطبع ، هو افتقاره التام للتشفير ، لذا كان التعرف على جلستك الطرفية الدقيقة أمرًا بسيطًا ، مما سمح للمفرقعات برؤية كل أمر كتبته (حتى الأخطاء التي ارتكبتها ، وكل الأوقات التي قمت فيها بالضغط [Backspace]
) ، ويتم إنتاج كل بايت من المخرجات ...
... وبالطبع اسم المستخدم وكلمة المرور في بداية الجلسة.
لا يستطيع أي شخص على مسار شبكتك إعادة بناء جلسات مسؤول النظام الخاصة بك بسهولة في الوقت الفعلي فقط على شاشته الخاصة ، ولكن من المحتمل أيضًا التلاعب بجلستك عن طريق تعديل الأوامر التي أرسلتها إلى الخادم البعيد وتزييف الردود التي تعود حتى لا تلاحظ الحيلة.
يمكنهم حتى إعداد خادم محتال ، وإغرائك به ، وجعل من الصعب عليك بشكل مفاجئ اكتشاف الخداع.
تشفير قوي FTW
يهدف SSH من Ylönen إلى إضافة طبقة من التشفير القوي والمصادقة لكل نهاية جلسة شبيهة بـ Telnet ، مما يؤدي إلى إنشاء صدفه آمنه (هذا ما يمثله الاسم ، إذا تساءلت يومًا ، على الرغم من أن الجميع تقريبًا يسمونه إس-إس-آيتش هذه الأيام).
لقد كانت ضربة فورية ، وسرعان ما تم اعتماد البروتوكول من قبل مسؤولي النظام في كل مكان.
سرعان ما تبع OpenSSH ، كما ذكرنا أعلاه ، ظهر لأول مرة في أواخر عام 1999 كجزء من OpenBSD 2.6 تحديث الافراج.
أراد فريق OpenBSD إنشاء تطبيق مجاني وموثوق ومفتوح المصدر للبروتوكول الذي هم و يمكن لأي شخص آخر استخدامها، دون أي من التراخيص أو التعقيدات التجارية التي أعاقت تنفيذ Ylönen الأصلي في السنوات التي تلت إصدارها مباشرة.
في الواقع ، إذا قمت بتشغيل خادم Windows SSH والاتصال به من كمبيوتر Linux في الوقت الحالي ، فمن المؤكد أنك ستعتمد على تطبيق OpenSSH في كلا الطرفين.
يستخدم بروتوكول SSH أيضًا في خدمات خادم العميل الشائعة الأخرى بما في ذلك SCP و SFTP ، باختصار نسخة آمنة و بروتوكول نقل الملفات الآمن على التوالى. يعني SSH بشكل فضفاض ، "الاتصال بأمان وتشغيل أمر SHell في الطرف الآخر" ، عادةً لعمليات تسجيل الدخول التفاعلية ، لأن برنامج Unix لقذيفة الأوامر عادةً ما يكون /bin/sh
. SCP مشابه ، لكن لملفات CoPying ، لأن أمر نسخ ملف Unix يسمى بشكل عام /bin/cp
، و SFTP تمت تسميته بنفس الطريقة.
OpenSSH ليست مجموعة أدوات SSH الوحيدة في المدينة.
تشمل التطبيقات الأخرى المعروفة ما يلي: libssh2، للمطورين الذين يرغبون في بناء دعم SSH في تطبيقاتهم الخاصة ؛ دروببير، خادم SSH تم تجريده من المبرمج الأسترالي مات جونستون هذا موجود على نطاق واسع فيما يسمى بأجهزة IoT (إنترنت الأشياء) مثل أجهزة التوجيه والطابعات المنزلية ؛ و المعجون، مجموعة مجانية وشائعة من الأدوات ذات الصلة بـ SSH لنظام التشغيل Windows من مطور مستقل مفتوح المصدر سيمون تاثام في انجلترا.
ولكن إذا كنت من مستخدمي SSH العاديين ، فمن شبه المؤكد أنك متصل بخادم OpenSSH واحد على الأقل اليوم ، لأسباب ليس أقلها أن معظم توزيعات Linux المعاصرة تتضمنه كأداة قياسية للوصول عن بُعد ، وتقدم Microsoft كلاً من عميل OpenSSH و OpenSSH الخادم كمكونات Windows الرسمية هذه الأيام.
إصلاح الخلل مزدوج الخالي
OpenSSH الإصدار 9.2 خرج للتو ، و ملاحظات الإصدار تقرير على النحو التالي:
يحتوي هذا الإصدار على إصلاحات لـ […] مشكلة تتعلق بأمان الذاكرة. لا يُعتقد أن [هذا الخطأ] قابل للاستغلال ، لكننا أبلغنا عن معظم أخطاء الذاكرة التي يمكن الوصول إليها عبر الشبكة كأخطاء أمنية.
يؤثر الخلل sshd
، خادم OpenSSH (ملف -d
اللاحقة لتقف على الخفي، اسم Unix لنوع عملية الخلفية التي يسميها Windows أ الخدمة):
sshd (8): إصلاح خطأ ذاكرة خالية من المصادقة المزدوجة تم تقديمها في OpenSSH 9.1. لا يُعتقد أن هذا يمكن استغلاله ، ويحدث في عملية المصادقة المسبقة غير المحظورة التي تخضع لـ chroot (2) ويتم وضع الحماية بشكل أكبر على معظم المنصات الرئيسية.
يعني الخطأ الخالي من الضعف أن كتلة ذاكرة قمت بإعادتها بالفعل إلى نظام التشغيل لإعادة استخدامها في أجزاء أخرى من برنامجك ...
... سيتم إعادته لاحقًا مرة أخرى بواسطة جزء من البرنامج لم يعد "يمتلك" تلك الذاكرة بالفعل ، لكنه لا يعرف أنه لا يمتلكها.
(أو يتم إعادته عمدًا عند مطالبة الكود الذي يحاول إثارة الخطأ عن قصد من أجل تحويل الضعف إلى استغلال.)
يمكن أن يؤدي هذا إلى أخطاء خفية ويصعب كشفها ، خاصةً إذا كان النظام يميز الكتلة المحررة على أنها متوفرة عند أول free()
يحدث ، يخصصه لاحقًا لجزء آخر من التعليمات البرمجية الخاصة بك عندما يطلب ذاكرة عبر malloc(
) ، ثم يقوم بتمييز الكتلة مجانًا مرة أخرى عند استدعاء غير ضروري إلى free()
يبدو.
هذا يتركك في نوع الموقف الذي تواجهه عندما تسجل دخولك في فندق يقول ، "أوه ، أخبار جيدة! كنا نظن أننا ممتلئون ، لكن ضيفًا آخر قرر تسجيل المغادرة مبكرًا ، حتى تتمكن من الحصول على غرفته ".
حتى إذا تم تنظيف الغرفة جيدًا وإعدادها لشاغليها الجدد عند دخولك ، وبالتالي يبدو أنها قد تم تخصيصها بشكل صحيح لاستخدامك الحصري ، فلا يزال يتعين عليك الوثوق في أن بطاقة المفاتيح الخاصة بالضيف السابق قد تم إلغاؤها بالفعل بشكل صحيح ، وأن " الخروج المبكر "لم يكن حيلة ماكرة للتسلل في وقت لاحق في نفس اليوم وسرقة الكمبيوتر المحمول الخاص بك.
إصلاح الخلل لإصلاح الخلل
ومن المفارقات ، إذا نظرت إلى سجل كود OpenSSH الأخير ، فسترى أن OpenSSH به خلل متواضع في وظيفة تسمى compat_kex_proposal()
، تستخدم للتحقق من نوع خوارزمية تبادل المفاتيح التي يجب استخدامها عند إعداد اتصال.
لكن إصلاح هذا الخطأ المتواضع أدى إلى ظهور ثغرة أمنية أكثر خطورة بدلاً من ذلك.
بالمناسبة ، فإن وجود الخطأ في جزء من البرنامج المستخدم أثناء إعداد الاتصال هو ما يجعل هذا ما يسمى مصادقة مسبقة يمكن الوصول إليها عبر الشبكة الضعف (أو خطأ ما قبل المصادقة لفترة قصيرة).
يحدث الخطأ الخالي من الضعف في التعليمات البرمجية التي يجب تشغيلها بعد بدأ أحد العملاء جلسة عمل عن بُعد ، ولكن قبل تم إجراء أي اتفاقية مفتاح أو مصادقة ، لذلك يمكن ، من الناحية النظرية ، تشغيل الثغرة الأمنية قبل تقديم أي كلمات مرور أو مفاتيح تشفير للتحقق من صحتها.
في OpenSSH 9.0 ، compat_kex_proposal
بدا شيئًا من هذا القبيل (تم تبسيطه هنا إلى حد كبير):
char* compat_kex_proposal(char* suggestion) { if (condition1) { return suggestion; } if (condition2) { suggestion = allocatenewstring1(); } if (condition3) { suggestion = allocatenewstring2(); } if (isblank(suggestion)) { error(); } return suggestion; }
الفكرة هي أن المتصل يمر في كتلة الذاكرة الخاصة به التي تحتوي على سلسلة نصية تقترح إعداد تبادل المفاتيح ، ويستعيد إما الموافقة على استخدام الاقتراح ذاته الذي أرسله ، أو سلسلة نصية مخصصة حديثًا مع اقتراح محدث .
الخطأ هو أنه إذا كان الشرط 1 خطأ ولكن الشرطين 2 و 3 كلاهما صحيح ، فإن الكود يخصص اثنان سلاسل نصية جديدة ، ولكنها ترجع فقط صورة واحدة؟.
كتلة الذاكرة المخصصة من قبل allocatenewstring1()
لا يتم تحريرها أبدًا ، وعندما تعود الوظيفة ، يتم فقد عنوان الذاكرة الخاص بها إلى الأبد ، لذلك لا توجد طريقة لأي رمز free()
في المستقبل.
تم التخلي عن هذه الكتلة بشكل أساسي ، مما تسبب في ما يُعرف باسم a تسريب ذاكرة.
بمرور الوقت ، قد يتسبب ذلك في حدوث مشكلات ، وربما يجبر الخادم على الإغلاق للتعافي من الحمل الزائد للذاكرة.
في OpenSSH 9.1 ، تم تحديث الكود في محاولة لتجنب تخصيص سلسلتين مع التخلي عن أحدهما:
/* Always returns pointer to allocated memory, caller must free. */ char* compat_kex_proposal(char* suggestion){ char* previousone = NULL; if (condition1) { return newcopyof(suggestion); } if (condition2) { suggestion = allocatenewstring1(); } if (condition3) { previousone = suggestion; suggestion = allocatenewstring2(); } free(previousone); } if (isblank(suggestion()) { error(); } return suggestion; }
هذا به خطأ مزدوج ، لأنه إذا كان الشرط 1 والشرط 2 خاطئين ، لكن الشرط 3 صحيح ، فإن الكود يخصص سلسلة جديدة لإرسالها كإجابتها ...
… ولكن بشكل غير صحيح يحرر السلسلة التي مررها المتصل أصلاً ، لأن الوظيفة allocatenewstring1()
لا يتم الاتصال به لتحديث المتغير suggestion
.
سلسلة الاقتراح التي تم تمريرها هي الذاكرة التي تخص المتصل، وأن المتصل سوف يفرغ السمات لاحقًا ، مما يؤدي إلى خطر خالي من الضعف.
في OpenSSH 9.2 ، أصبح الكود أكثر حذرًا ، مع تتبع جميع كتل الذاكرة الثلاثة الممكنة المستخدمة: الأصل suggestion
(ذاكرة مملوكة لشخص آخر) ، وسلسلتان جديدتان محتملتان يمكن تخصيصهما في الطريق:
/* Always returns pointer to allocated memory, caller must free. */ char* compat_kex_proposal(char* suggestion) { char* newone = NULL; char* newtwo = NULL; if (condition1) { return newcopyof(suggestion); } if (condition2) { newone = allocatenewstring1(); } if (condition3) { newtwo = allocatenewstring2(); } free(newone); newone = newtwo; } if (isblank(newone)) { error(); } return newone; }
إذا كان الشرط 1 صحيحًا ، فسيتم استخدام نسخة جديدة من السلسلة التي تم تمريرها ، حتى يتمكن المتصل من ذلك لاحقًا free()
ذاكرة السلسلة التي تم تمريرها وقتما يحلو لهم.
إذا تجاوزنا الشرط 1 ، وكان الشرط 2 صحيحًا ولكن الشرط 3 خاطئ ، فإن الاقتراح البديل الذي تم إنشاؤه بواسطة allocatenewstring1()
يعاد ، وتوفي suggestion
يتم ترك السلسلة وحدها.
إذا كان الشرط 2 خاطئًا وكان الشرط 3 صحيحًا ، فسيتم إنشاء سلسلة جديدة وإرجاعها وتمريرها suggestion
يتم ترك السلسلة وحدها.
إذا كان الشرط 2 والشرط 3 صحيحين ، فسيتم تخصيص سلسلتين جديدتين على طول الطريق ؛ يتم تحرير أول واحد لأنه ليس هناك حاجة إليه ؛ يتم إرجاع الثاني ؛ والمار suggestion
يتم ترك السلسلة وحدها.
اطلع على آر تي إكس إم لتأكيد ذلك إذا اتصلت free(newone)
متى newone
is NULL
، ثم "لم يتم إجراء أي عملية جراحية" ، لأنه من الآمن إجراء ذلك دائمًا free(NULL)
. ومع ذلك ، لا يزال الكثير من المبرمجين يحمونها بقوة باستخدام تعليمات برمجية مثل if (ptr != NULL) { free(ptr); }
.
ماذا ستفعلين.. إذًا؟
كما يقترح فريق OpenSSH ، فإن استغلال هذا الخطأ سيكون صعبًا ، لأسباب ليس أقلها الامتيازات المحدودة التي يتمتع بها ملف sshd
البرنامج أثناء إعداد الاتصال للاستخدام.
ومع ذلك ، فقد أبلغوا عن وجود ثغرة أمنية لأن هذا ما هو عليه ، لذا تأكد من التحديث إلى OpenSSH 9.2.
وإذا كنت تكتب رمزًا بلغة C ، فتذكر أنه بغض النظر عن مدى خبرتك ، فمن السهل أن تخطئ في إدارة الذاكرة ...
... لذا احترس هناك.
(نعم ، رست وأصدقاؤها الحديثون سيفعلون ذلك تساعدك على كتابة التعليمات البرمجية الصحيحة، ولكن في بعض الأحيان ستظل بحاجة إلى استخدام C ، وحتى Rust لا يمكنه ضمان ذلك منعك من كتابة رمز غير صحيح إذا قمت بالبرمجة بطريقة غير حكيمة!)
- محتوى مدعوم من تحسين محركات البحث وتوزيع العلاقات العامة. تضخيم اليوم.
- بلاتوبلوكشين. Web3 Metaverse Intelligence. تضخيم المعرفة. الوصول هنا.
- المصدر https://nakedsecurity.sophos.com/2023/02/03/openssh-fixes-double-free-memory-bug-thats-pokable-over-the-network/
- 1
- 1999
- 9
- a
- فوق
- مطلق
- الوصول
- في الواقع
- العنوان
- اعتمد
- بعد
- ضد
- خوارزمية
- الكل
- تخصيص
- يخصص
- السماح
- وحده
- سابقا
- البديل
- بالرغم ان
- دائما
- وسط
- و
- آخر
- التطبيقات
- موافقة
- الأسترالي
- التحقّق من المُستخدم
- المؤلفة
- السيارات
- متاح
- تجنب
- الى الخلف
- خلفية
- خلفية الصورة
- لان
- أصبح
- قبل
- يعتقد
- أفضل
- حظر
- Blocks
- الحدود
- الملابس السفلية
- علة
- البق
- نساعدك في بناء
- دعوة
- تسمى
- المتصل
- دعوات
- يهمني
- سبب
- مما تسبب في
- حذر
- مركز
- بالتأكيد
- أرخص
- التحقق
- زبون
- الكود
- المبرمج
- مجموعة شتاء XNUMX
- اللون
- COM
- تأتي
- آت
- تجاري
- مكونات
- الكمبيوتر
- حالة
- الشروط
- أكد
- التواصل
- متصل
- الرابط
- صلة
- التواصل
- يحتوي
- معاصر
- تقليد
- استطاع
- الدورة
- بهيكل
- خلق
- خلق
- خلق
- التشفير
- DANGER
- البيانات
- يوم
- أيام
- قررت
- مخصصة
- المطور
- المطورين
- الأجهزة
- فعل
- مات
- صعبة
- العرض
- توزيع
- التوزيعات
- لا
- مزدوج مجاني
- إلى أسفل
- أثناء
- كل
- في وقت مبكر
- بسهولة
- الطُرق الفعّالة
- إما
- التشفير
- ينتهي
- إنكلترا
- كامل
- خاصة
- أساسيا
- حتى
- EVER
- كل
- كل شخص
- حصري
- الخبره في مجال الغطس
- تمكنت
- مألوف
- المميزات
- ملفات
- الاسم الأول
- سمك
- حل
- عيب
- تدفق
- تركز
- يتبع
- متابعات
- إلى الأبد
- وجدت
- مجانًا
- الاصدقاء
- تبدأ من
- بالإضافة إلى
- وظيفة
- إضافي
- مستقبل
- على العموم
- ولدت
- دولار فقط واحصل على خصم XNUMX% على جميع
- عملاق
- Go
- خير
- جدا
- ضمان
- الحرس
- ضيف
- قراصنة
- يحدث
- الثابت
- ارتفاع
- هنا
- تاريخ
- ضرب
- حفرة
- الصفحة الرئيسية
- أمل
- الفندق
- تحوم
- كيفية
- HTML
- HTTPS
- فكرة
- فورا
- التنفيذ
- in
- في أخرى
- تتضمن
- بما فيه
- إدراجه
- غير صحيح
- الهند
- لحظة
- بدلًا من ذلك
- التفاعلية
- Internet
- إنترنت الأشياء
- أدخلت
- قام المحفل
- IOT (إنترنت الأشياء)
- IT
- نفسها
- حفظ
- مفاتيح
- علم
- معروف
- نقص
- كمبيوتر محمول
- متأخر
- طبقة
- قيادة
- قيادة
- الترخيص
- محدود
- خط
- LINK
- لينكس
- شعار
- يعد
- بحث
- بدا
- تبدو
- صنع
- رائد
- جعل
- يصنع
- إدارة
- إدارة
- هامش
- أمر
- ماكس العرض
- يعني
- مكبر الصوت : يدعم، مع دعم ميكروفون مدمج لمنع الضوضاء
- المذكورة
- مایکروسافت
- ربما
- الأخطاء
- تقدم
- الأكثر من ذلك
- أكثر
- الاسم
- عين
- حاجة
- بحاجة
- إحتياجات
- شبكة
- مع ذلك
- جديد
- عادي
- عروض
- رسمي
- ONE
- جاكيت
- المصدر المفتوح
- تعمل
- نظام التشغيل
- عملية
- طلب
- أصلي
- في الأصل
- أخرى
- الخاصة
- مملوكة
- جزء
- أجزاء
- مرت
- يمر
- كلمة المرور
- كلمات السر
- الماضي
- مسار
- بول
- ربما
- للهواتف
- مادي
- المكان
- منصات التداول
- أفلاطون
- الذكاء افلاطون البيانات
- أفلاطون داتا
- أكثر الاستفسارات
- ان يرتفع المركز
- ممكن
- المنشورات
- أعدت
- وجود
- قدم
- سابق
- الامتيازات
- المحتمل
- المشكلة
- عملية المعالجة
- البرنامج
- المبرمجين
- بصورة صحيحة
- بروتوكول
- غرض
- بسرعة
- استعداد
- حقيقي
- في الوقت الحقيقي
- تلقى
- الأخيرة
- استعادة
- منتظم
- الافراج عن
- الخدمة الموثوقة
- تذكر
- عن بعد
- الوصول عن بعد
- تقرير
- وذكرت
- عائد أعلى
- عائدات
- محفوف بالمخاطر
- غرفة
- يجري
- Rust
- خزنة
- السلامة
- نفسه
- عالم
- شاشة
- الثاني
- آمن
- أمن
- مسلسل
- خدمات
- الجلسة
- دورات
- طقم
- ضبط
- الإعداد
- حاد
- قذيفة
- قصير
- غلق
- مماثل
- الاشارات
- مبسط
- حالة
- تسلل
- So
- تطبيقات الكمبيوتر
- الصلبة
- شخص ما
- شيء
- قريبا
- مصدر
- سرعة
- التموج
- بقعة
- معيار
- المدرجات
- بداية
- لا يزال
- قوي
- موضوع
- هذه
- وتقترح
- الدعم
- SVG
- نظام
- أخذ
- فريق
- محطة
- •
- كتلة
- من مشاركة
- هناك.
- وبالتالي
- الأشياء
- فكر
- ثلاثة
- الوقت
- مرات
- عنوان الاعلان
- إلى
- اليوم
- أداة
- أدوات
- أدوات
- تيشرت
- الإجمالي
- مسار
- انتقال
- شفاف
- أثار
- مشكلة
- صحيح
- الثقة
- منعطف أو دور
- عادة
- يونيكس
- تحديث
- تحديث
- URL
- تستخدم
- مستخدم
- عادة
- التحقق من صحة
- الإصدار
- بواسطة
- الضعف
- مطلوب
- معروف
- ابحث عن
- في حين
- من الذى
- على نحو واسع
- سوف
- نوافذ
- بدون
- سوف
- اكتب
- جاري الكتابة
- مكتوب
- سنوات
- حل متجر العقارات الشامل الخاص بك في جورجيا
- زفيرنت