سؤال كيفية تصحيح علة Heartbleed (CVE-2014-0160) في OpenSSL؟


اعتبارا من اليوم ، أ علة في OpenSSL وقد تم العثور على الإصدارات 1.0.1 عبر 1.0.1f (شامل) و 1.0.2-beta.

منذ أوبونتو 12.04 ، نحن جميعا عرضة لهذا الخطأ. لتصحيح هذه الثغرة الأمنية ، يجب على المستخدمين المتأثرين التحديث إلى OpenSSL 1.0.1g.

كيف يمكن لكل مستخدم متأثر تطبيق هذا التحديث الآن؟


152
2018-04-07 22:17


الأصل


هل لديك نسخة متأثرة من openssl؟ - Braiam
لقد حصلت على نسخة مصححة 1.0.1-4ubuntu5.12 ولقد قمت بإعادة تشغيل خدمة اباتشي ولكن filippo.io/Heartbleed الاختبار على موقعي لا يزال يقول أنا عرضة للخطر أي فكرة لماذا؟
Mat لا أعرف ما يختبره هذا الموقع ، ولكن ربما يكتشف أنك تستخدم مفتاحًا قديمًا. بما أن المفتاح قد يكون قد تسرب ، فأنت تحتاج إلى تجديده. - Gilles
أنت لا تريد تحديث OpenSSL إلى إصدارات جديدة بالجملة ، وهذا ألم لا يصدق. أسهل بكثير هو فقط تثبيت الحزمة المحدثة التي تقوم بتصحيح المشكلة: ubuntu.com/usn/usn-2165-1 - sarnold
هل قمت بإعادة تشغيل خدماتك بعد الترقية؟ - Axel


الأجوبة:


تتوفر تحديثات الأمان لـ 12.04 و 12.10 و 13.10 و 14.04 نرى Ubuntu Security Notice USN-2165-1.

لذلك تحتاج أولاً إلى تطبيق تحديثات الأمان المتاحة ، على سبيل المثال عن طريق التشغيل

sudo apt-get update
sudo apt-get upgrade

من سطر الأوامر.

لا تنسى أن إعادة بدء الخدمات (HTTP ، SMTP ، إلخ) التي تستخدم إصدار OpenSSL المتأثر ، وإلا فإنك لا تزال عرضة للخطر. أنظر أيضا Heartbleed: ما هو وما هي الخيارات للتخفيف من ذلك؟ على Serverfault.com.

يعرض الأمر التالي (بعد الترقية) جميع الخدمات التي تحتاج إلى إعادة التشغيل:

sudo find /proc -maxdepth 2 -name maps -exec grep -HE '/libssl\.so.* \(deleted\)' {} \; | cut -d/ -f3 | sort -u | xargs --no-run-if-empty ps uwwp

بعد ذلك، أنت بحاجه إلى إعادة إنشاء جميع مفاتيح SSL الخادمثم قم بتقييم ما إذا كانت مفاتيحك قد تسربت أم لا ، وفي هذه الحالة قد يكون المهاجمون قد استردوا معلومات سرية من الخوادم الخاصة بك.


141
2018-04-07 22:46



غير متأكد من أن هذا يعمل على Ubuntu 12.04.4 LTS. بعد التحديث الكامل ، openssl version يعطي OpenSSL 1.0.1 14 Mar 2012. هذه ليست النسخة المصححة ، أليس كذلك؟ أو هل أخطأت في قراءة ذلك؟ - Paul Cantrell
ما العمل مع Ubuntu 13.04؟ لا يوجد ترقية openssl المتاحة :-( - Frodik
على Ubuntu 12.04 حتى يعرض OpenSSL الثابتة الإصدار 1.0.1 14 Mar 2012. اقرأ جواب كريمي لمعرفة ما إذا كان التثبيت الخاص بك يتضمن الإصلاح. - dan
شكرا،dan! resummarizing @ crimi الإجابة هنا: إذا قمت بتشغيل dpkg -l | grep ' openssl ' وتحصل 1.0.1-4ubuntu5.12 إذاً أنت على ما يرام - Paul Cantrell
الترقيع وإعادة التشغيل ليست كافية. تحتاج إلى إعادة توليد المفاتيح وتقييم ما إذا كان قد تم تسريب مفاتيحك بالإضافة إلى مواد سرية أخرى. انظر على سبيل المثال لا يعني Heartbleed شهادات جديدة لكل خادم SSL؟ - Gilles


ومن المعروف أن علة هارتبليد.

هل أنا ضعيف؟

بشكل عام ، أنت متأثر إذا قمت بتشغيل بعض الملقمات التي قمت بإنشاء مفتاح SSL لها في مرحلة ما. معظم المستخدمين النهائيين لا يتأثرون (بشكل مباشر) ؛ على الأقل لا يستخدم كل من Firefox و Chrome OpenSSL. لا يتأثر SSH. لا يتأثر توزيع حزم أوبونتو (يعتمد على توقيعات GPG).

أنت ضعيف إذا قمت بتشغيل أي نوع من الخوادم التي تستخدم إصدارات OpenSSL 1.0–1.0.1f (باستثناء إصدارات الدورة التي تم تصحيحها منذ اكتشاف الخطأ). إصدارات أوبونتو المتأثرة هي 11.10 وحيدة من خلال 14.04 إصدارات مسبقة مضمونة. إنه خطأ تنفيذ ، وليس خطأ في البروتوكول ، لذلك تتأثر فقط البرامج التي تستخدم مكتبة OpenSSL. إذا كان لديك برنامج مرتبط بالإصدار 0.9.x القديم من OpenSSL ، فلن يتأثر بذلك. تتأثر فقط البرامج التي تستخدم مكتبة OpenSSL لتطبيق بروتوكول SSL ؛ لا تتأثر البرامج التي تستخدم OpenSSL لأشياء أخرى.

إذا قمت بتشغيل خادم ضعيف معرّض للإنترنت ، فكر في أنه تم اختراقه ما لم تظهر سجلاتك أي اتصال منذ الإعلان على 2014-04-07. (هذا يفترض أن الثغرة لم تستغل قبل إعلانها). إذا كان الخادم الخاص بك معرضًا للداخل فقط ، فستحتاج تغيير المفتاح إلى إجراءات الأمان الأخرى.

ما هو التأثير؟

الحشرة تسمح أي عميل الذين يمكنهم الاتصال بخادم SSL الخاص بك لاسترداد حوالي 64 كيلو بايت من الذاكرة من الخادم. لا يحتاج العميل إلى المصادقة بأي شكل من الأشكال. من خلال تكرار الهجوم ، يمكن للعميل تفريغ أجزاء مختلفة من الذاكرة في المحاولات المتتالية.

أحد الأجزاء الهامة من البيانات التي قد يتمكن المهاجم من استردادها هو المفتاح الخاص SSL الخاص بالخادم. باستخدام هذه البيانات ، يمكن للمهاجم انتحال صفة الخادم الخاص بك.

كيف يمكنني الاسترداد على الخادم؟

  1. خذ جميع الخوادم المتضررة حاليا. طالما أنها تعمل ، فمن المحتمل أنها تسرّب البيانات المهمة.

  2. ترقية libssl1.0.0 صفقة، وتأكد من إعادة تشغيل جميع الخوادم المتأثرة.
    يمكنك التحقق مما إذا كانت العمليات المتأثرة لا تزال قيد التشغيل مع libssl `` grep '.(محذوف) '/ proc // maps`

  3. توليد مفاتيح جديدة. يعد ذلك ضروريًا نظرًا لأن الخطأ قد يسمح للمهاجم بالحصول على المفتاح الخاص القديم. اتبع نفس الإجراء الذي استخدمته في البداية.

    • إذا كنت تستخدم شهادات موقعة من قِبل مرجع مصدق ، فأرسل مفاتيحك العامة الجديدة إلى المرجع المصدق. عندما تحصل على الشهادة الجديدة ، ثبتها على الخادم الخاص بك.
    • إذا كنت تستخدم شهادات موقعة ذاتيًا ، فقم بتثبيتها على الخادم الخاص بك.
    • في كلتا الحالتين ، انقل المفاتيح القديمة والشهادات إلى خارج الطريق (لكن لا تحذفها ، فقط تأكد من عدم استخدامها مرة أخرى).
  4. الآن بعد أن أصبح لديك مفاتيح جديدة غير منقوصة ، يمكنك ذلك اعادة خادمك على الانترنت.

  5. سحب الشهادات القديمة.

  6. تقييم الأضرار: من المحتمل أن تكون قد تسربت أي بيانات موجودة في ذاكرة عملية تخدم اتصالات SSL. يمكن أن يشمل ذلك كلمات مرور المستخدم وغيرها من البيانات السرية. تحتاج إلى تقييم ما قد تكون هذه البيانات.

    • إذا كنت تقوم بتشغيل خدمة تسمح بمصادقة كلمة المرور ، فيجب اعتبار كلمات المرور للمستخدمين الذين تم الاتصال بهم منذ فترة قصيرة قبل الإعلان عن الثغرة الأمنية مخترقة. (قبل قليل ، لأن كلمة المرور ربما ظلت غير مستخدمة في الذاكرة لفترة.) تحقق من سجلاتك وقم بتغيير كلمات المرور لأي مستخدم متأثر.
    • يمكنك أيضًا إبطال جميع ملفات تعريف الارتباط للجلسة ، لأنها ربما تعرضت للاختراق.
    • شهادات العميل لا يتم اختراقها.
    • قد تبقى أي بيانات تم تبادلها منذ قليل قبل الضعف في ذاكرة الخادم ومن المحتمل أن تكون قد تسربت إلى مهاجم.
    • إذا قام شخص ما بتسجيل اتصال SSL قديم واسترد مفاتيح الخادم الخاص بك ، فيمكنه الآن فك تشفير نصه. (ما لم PFS تم ضمان - إذا كنت لا تعرف ، لم يكن.)

كيف يمكنني استرداد على العميل؟

هناك حالات قليلة فقط تتأثر فيها تطبيقات العميل. المشكلة على جانب الخادم هو أن أي شخص يمكن الاتصال بخادم واستغلال الخلل. لاستغلال عميل ، يجب استيفاء ثلاثة شروط:

  • استخدم برنامج العميل إصدار عربات التي تجرها الدواب مكتبة OpenSSL لتنفيذ بروتوكول SSL.
  • العميل متصل بخادم ضار. (على سبيل المثال ، إذا كنت متصلاً بموفر بريد إلكتروني ، فهذا ليس مصدر قلق). كان يجب أن يحدث ذلك بعد أن أصبح مالك الخادم على دراية بالثغرة الأمنية ، ومن المفترض أن يكون ذلك بعد 2014-04-07.
  • كانت عملية العميل تحتوي على بيانات سرية في الذاكرة لم تتم مشاركتها مع الخادم. (إذا ركضت للتو wget لتنزيل ملف ، لم تكن هناك بيانات تسرب.)

إذا كنت قد فعلت ذلك بين UTC-07 مساء UTC وترقية مكتبة OpenSSL ، فكر في أي بيانات كانت في ذاكرة عملية العميل يتم اختراقها.

المراجع


71
2018-04-08 10:02



لا أعتقد أن "جانب الخادم فقط من اتصالات SSL / TLS متأثر" صحيح. openssl.org/news/secadv_20140407.txt يقول أنه يمكن أن تكشف أسرار من أي عميل أو خادم. ubuntu.com/usn/usn-2165-1 يوافق. تعتبر فرص استخدام شهادات العميل أثناء الاتصال بخادم ضار صغيرة ، ولكن يوجد احتمال لذلك. - armb
armb أنت تجعل نقطة جيدة. لا يهم حتى ما إذا كانت شهادات العميل مستخدمة ، فإن تسرب البيانات غير مرتبط باستخدام الشهادات. لدي جند مساعدة من المهنيين. - Gilles
شهادات العميل هي الحالة التي يمكنك فيها تسريب المفاتيح الخاصة ، ولكن نعم ، يمكن أن تتسرب كلمات المرور ، وملفات تعريف الارتباط ، وما إلى ذلك ، على أي حال. ومع ذلك ، باستخدام عميل OpenSSL مثل curl أو wget في الاستخدام النموذجي ، لن يكون لديك أسرار لمواقع أخرى في الذاكرة أثناء الاتصال بخادم ضار ، لذلك في هذه الحالة أعتقد أن التسرب الوحيد سيكون إذا أعطيت أسرار العميل توقعت منحهم موقعًا شرعيًا ، وتسربهم Heartbleed أثناء المصافحة قبل التحقق من الشهادة ، مما يدل على أنك غير متصل بالموقع الصحيح. - armb
Gilles ربما تكون مهتمًا بالإجابات على ما هي العوامل التي ثبت أن عملاءها معرضين لخطر الإصابة بهارتبيليد؟. تمكنت من الحصول على ذاكرة "مثيرة للاهتمام" على nginx (وضع الوكيل) ، wget ، روابط وغيرها. - Lekensteyn
@ MuhamedHuseinbašić الحزمة openssl يحتوي على أدوات سطر الأوامر. لا يتم استخدامه من قبل التطبيقات التي تستخدم مكتبة OpenSSL لتطبيق بروتوكول SSL (مثل Apache). ولكن يجب عليك فقط تطبيق التحديثات الأمنية للتوزيع. - Gilles


لمعرفة إصدار OpenSSL المثبت على تشغيل Ubuntu:

dpkg -l | grep openssl

إذا كنت ترى إخراج الإصدار التالي ، يجب تضمين تصحيح CVE-2014-0160.

ii  openssl      1.0.1-4ubuntu5.12      Secure Socket Layer (SSL)...

انظر الى https://launchpad.net/ubuntu/+source/openssl/1.0.1-4ubuntu5.12يُظهر نوع الأخطاء التي تم إصلاحها:

...
 SECURITY UPDATE: memory disclosure in TLS heartbeat extension
    - debian/patches/CVE-2014-0160.patch: use correct lengths in
      ssl/d1_both.c, ssl/t1_lib.c.
    - CVE-2014-0160
 -- Marc Deslauriers <email address hidden>   Mon, 07 Apr 2014 15:45:14 -0400
...

40
2018-04-08 06:40



لقد قمت بالترقية والحصول على الإصدار 5.12 ولكن هذه الأداة لا تزال تخبرني بأنني معرضة للخطر filippo.io/Heartbleed أفكار؟ - toxaq
لقد اختبرت خوادمنا المحدثة على هذا الجانب وأخبرتني بأنني لست متأثراً. هل قمت بإعادة تشغيل النظام الخاص بك ، أو على الأقل أنت متأكد من أن جميع العمليات الضرورية قد تم إعادة تشغيلها؟ - crimi
بعد تحديث OPENSSL ، كل ما كان علي فعله هو إعادة تشغيل خدمة apache ، ولكن رشيق لم يساعد. اضطررت للذهاب وإعادة تشغيل باستخدام sudo service apache2 restart - Tom Hert
لقد اكتشفت سبب ثغابي: تم تثبيت mod-spy-beta. بعد إزالته وإعادة تشغيل apache ، تصبح جميع الاختبارات خضراء الآن. - Andreas Roth
تحديث openssl لا يصلح تطبيقات مثل Apache أو Nginx أو postfix. يجب عليك التحديث libssl1.0.0 وإعادة تشغيلها كما هو موضح في المشاركات الأخرى. - tnj


إذا كان لديك apt-get المستودعات لا يحتوي على أي مترجم مسبقا 1.0.1g OpenSSL الإصدار ، لذلك مجرد تحميل مصادر من الموقع الرسمي وتجميعها.

أسفل سطر الأوامر المفردة لتجميع وتثبيت آخر إصدار openssl.

curl https://www.openssl.org/source/openssl-1.0.1g.tar.gz | tar xz && cd openssl-1.0.1g && sudo ./config && sudo make && sudo make install

استبدل الملف الثنائي قديم openssl من خلال واحد جديد عبر symlink.

sudo ln -sf /usr/local/ssl/bin/openssl `which openssl`

أنت كل شيء جيد!

# openssl version should return
openssl version
OpenSSL 1.0.1g 7 Apr 2014

هذا Cf مشاركة مدونة.

NB: كما ورد في مشاركة المدونة ، لن يصلح هذا الحل البديل "خادم Nginx و Apache اللذين يجب إعادة تجميعهما بمصادر openSSL 1.0.1g."


17
2018-04-08 02:18



كما هو معتاد ، لا يوفر Ubuntu إصدارًا جديدًا من المنبع ، ولكنه يصدّق الإصدارات لجميع الإصدارات المدعومة للحفاظ على التغييرات في الحد الأدنى. - Florian Diesch
ملاحظة: تأكد من إعادة تشغيل الخادم بعد تحديث OpenSSL. التقط Apache و Nginx في lib الجديد وتم إغلاق الثغرة الأمنية. - dAngelov
هيه ، الآن بعد أن أخذ الوقت الكافي لقراءة تفاصيل من نشر هذا ، أنا أكثر مذعور - تحميل تاربول من مكان عشوائي خارج الإنترنت ، تفريغ ، وتنفيذ أجزاء منه كجذر هو مجرد السلوك المتهور. سيكون من الأفضل قليلاً إذا تم تحميل توقيعات tarball والتحقق منها ، ولكن التأكد من أنك قمت بالتوقيع على التواقيع التي وقع عليها المفتاح الصحيح هو بحد ذاته سؤال صعب. وقد ذهبت التوزيعات بالفعل إلى الجهود المبذولة لضمان مصدر آمن من الكرات والجرافات. شكر. - sarnold
قد تكون فكرة جيدة أن تقوم بالتجميع من المصدر الآن ، وأن تقوم بتثبيت أحدث في وقت لاحق من apt ، وبهذه الطريقة أكثر أمنا من دون توقع على الإصدارات القديمة من أوبونتو على أي حال فقط بلدي سنتا - nwgat
sarnold openssl.org لا يبدو وكأنه مكان عشوائي لتنزيل المصدر لـ openssl. يجب أن تجعل Canonical هذا غير ضروري ، لكن openssl.org ينبغي يكون المنبع موثوقا للعمل من. - Rustavore


بالنسبة لأولئك الذين لا يريدون القيام بترقية حزمة serverwide. قرأت حفنة من هذه الأدلة اليوم و apt-get upgrade openssl === apt-get upgrade سيطبق هذا جميع الإصلاحات الأمنية المطلوبة من قبل جهازك. رائع ، إلا إذا كنت تميل صراحة على إصدار الحزمة القديمة في مكان ما.

هذا هو الحد الأدنى من الإجراءات المطلوبة على Ubuntu 12.04 LTS بنظام التشغيل Apache 2:

  • اذهب إلى هذا العنوان ويثبت أن لديك الضعف. يجب عليك استخدام العنوان الخارجي المباشر لخادم الويب الخاص بك. إذا كنت تستخدم loadbalancer (على سبيل المثال ELB) فقد لا تتصل بخادم الويب الخاص بك مباشرةً.

  • قم بتشغيل بطانة 1 التالية لترقية الحزم وإعادة تشغيلها. نعم ، رأيت جميع المرشدين يقولون أنه يجب أن يكون لديك طابع زمني في وقت لاحق من 4 أبريل 2014 ، وهذا لا يبدو لي.

    apt-get update && apt-get install openssl libssl1.0.0 && /etc/init.d/apache2 restart

  • تأكد من تثبيت إصدارات الحزمة المناسبة والتحقق من خادم الويب الخاص بك من أجل نقطة الضعف مرة أخرى.

الحزم الرئيسية هي على النحو التالي ، أنا حددت هذه المعلومات باستخدام الأمر أدناه ثم حررت بعيداً (لا تحتاج إلى معرفة الكثير عن حالة الأجهزة الخاصة بي).

$ dpkg -l | grep ssl

ii  libssl-dev                       1.0.1-4ubuntu5.12          SSL development libraries, header files and documentation
ii  libssl1.0.0                      1.0.1-4ubuntu5.12          SSL shared libraries
ii  openssl                          1.0.1-4ubuntu5.12          Secure Socket Layer (SSL)* binary and related cryptographic tools

1.0.1-4ubuntu5.12 يجب ألا يحتوي على الثغرة الأمنية. تأكد من أن هذه هي الحالة من خلال الانتقال مرة أخرى إلى موقع الويب أدناه واختبار خادم الويب الخاص بك.

http://filippo.io/Heartbleed/


12
2018-04-08 21:56



يبدو أن استخدام موقع خارجي لإثبات وجود ثغرة في الخادم هو النهج الخاطئ بالنسبة لي. - Rinzwind
أصبحت مخطوطات اختبار الضعف الخارجية أكثر شيوعًا هذه الأيام. إنه يفعل بالضبط ما يفعله البرنامج النصي الداخلي ، يتم بدء الاتصال فقط من خادم ويب خارجي. يمكنك البحث عن مواقع مثل WhiteHatSecurity.com كمثال على برنامج يقوم ببدء كافة الاتصالات عن بُعد. هناك حالات لن يحدث فيها هذا ، على سبيل المثال اختبار الضعف في الشبكة ولكن لاختبار خادم ويب أمامي (والذي سيكون خادم SSL بشكل عام) مثاليًا تقريبًا. - Adrian
لماذا تثبيت الحزمة إذا كان يجري ترقيتها؟ - Braiam
apt-get install openssl libssl1.0.0 فعلت ذلك بالنسبة لي. جري openssl version -a يظهر الآن: built on: Mon Apr 7 20:33:29 UTC 2014 - topher
"أصبحت البرامج النصية لاختبار الثغرات الخارجية أكثر شيوعًا هذه الأيام." وهذا يفتح إمكانية استخدام هذا الموقع الخارجي لإساءة استخدام نظامي: كل ما يحتاجون إلى معرفته فشله واختراق نظامي قبل أن أقوم بتصحيحه. لا هذه ليست الطريقة الصحيحة. (ونعم أستضيف مواقعي الخاصة مع apache و openssl). - Rinzwind


لقد لاحظت العديد من المعلقين هنا الذين يحتاجون إلى مساعدة عاجلة. إنهم يتابعون التعليمات ، والترقية ، وإعادة التشغيل ، ولا يزالون ضعفاء عند استخدام بعض مواقع الاختبار.

يجب عليك التحقق للتأكد من عدم وجود حزم قيد الانتظار مثل libssl.

:~$ sudo apt-get upgrade -V
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages have been kept back:
  libssl-dev (1.0.1-4ubuntu5.10 => 1.0.1-4ubuntu5.12)
  libssl1.0.0 (1.0.1-4ubuntu5.10 => 1.0.1-4ubuntu5.12)
  linux-image-virtual (3.2.0.31.34 => 3.2.0.60.71)
  linux-virtual (3.2.0.31.34 => 3.2.0.60.71)
0 upgraded, 0 newly installed, 0 to remove and 4 not upgraded.

لترقية تلك apt-mark unhold libssl1.0.0 (فمثلا). ثم الترقية: apt-get upgrade -V. ثم أعد تشغيل الخدمات المتأثرة.


11
2018-04-08 17:51