This article is an automated machine-translation of an article in English. We know the translation isn't perfect, but we hope it's useful for people who don't read English.

التشريح لوجود ثغرة أمنية - الضفيرة أدوات شبكة الويب تحميل يتحصن من الشوائب المصادقة

Filed Under: Featured, Vulnerability

قد لا يكون سمع من الضفيرة، ولكن ربما كنت قد استخدمت البرامج التي يستخدمها.

انها مجموعة أدوات البرمجة مفتوحة المصدر التي تساعدك على التعامل مع كتابة تعليمات برمجية من جانب العميل الذي يتعامل مع عناوين URL.

على حد تعبير المشروع نفسه، "الضفيرة groks تلك عناوين المواقع."

انها شعبية لانها سكين الجيش السويسري URL، مما يجعل من السهل التعامل مع بروتوكولات HTTP الشعبية مثل، SMTP، POP3 وغيرها الكثير. كما أنها تدعم تحميل، تنزيل، والتوثيق، وكلاء، الكوكيز وSSL / TLS.

حتى أنها تدعم غوفر ، إذا كنت تتذكر أن يعود.

احد المخاطر مع مكتبة كل الغناء، كل الرقص، بطبيعة الحال، هو أن هناك المزيد من رمز على غير ما يرام.

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

هذا هو المشكلة مجعد هنا.

و رمز الضعيفة وقدم في الإصدار 7.26.0، وأضاف عندما لدعم DIGEST_MD5 المصادقة على البرنامج حليقة.

DIGEST_MD5 هو وسيلة بدائية من يسمح لك لتسجيل الدخول عبر اتصال غير مشفر، على سبيل المثال HTTP أو إلى خادم POP3، دون إرسال كلمة السر الفعلي.

يرسل الملقم سلسلة التحدي عشوائي، أو مناسبة حالية، جنبا إلى جنب مع مجموعة من البيانات الأخرى ذات الصلة المصادقة ؛ الرد مع تجزئة التشفير كلمة المرور الخاصة بك مختلطة مع أن بيانات الملقم الموفر:

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

بوصفها جانبا: تجنب استخدام DIGEST_MD5 المصادقة. تشفير الدورة بأكملها باستخدام TLS بدلا من ذلك.

ويمكن لتكسير الذين الشمة الرد DIGEST_MD5 لا إعادة استخدامها مباشرة، لكنه يمكن استخدامه لمحاولة استعادة كلمة السر الخاصة بك باستخدام متواجد حاليا هجوم القاموس.

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

هنا هو رمز عربات التي تجرها الدواب من إصدار الضعيفة من الضفيرة:

لا تقلق إذا كنت لم تكن مألوفة مع C. ساوضح.

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

أعلاه، قامت هذه الأخيرة مبرمج.

أولا، انه يخصص سلسلة من كتل الذاكرة ذات طول ثابت على المكدس.

ثم نسخ السلاسل النصية المقدمة من المستدعي من وظيفة إلى تلك الكتل، ولكن أن يستخدم strcpy وظائف النظام () وstrcat ()، التي تقف ل "نسخة السلسلة" و "concatentate السلسلة" (تك سلسلة واحدة على نهاية آخر) على التوالي.

في التعليمات البرمجية الحديثة، يجب أن لا تستخدم تلك الوظائف، لأنه لا يمكن تحديد مقدار البيانات التي نسخها.

انهم ببساطة تكرار كل بايت من سلسلة الإدخال في سلسلة الانتاج، حتى تم العثور على NUL (صفر) بايت. A NUL هي الطريقة التي يتم تدل على نهاية سلسلة نصية في C.

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

وسوف يؤدي تجاوز سعة المخزن المؤقت، وفي هذه الحالة، منذ تم تخصيص كتل البيانات الوجهة تلقائيا على المكدس، وظيفة سوف تعطل عندما تنتهي.

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

تم إصدار الإصلاح واحد بسيط.

تم استبدال strcpy لا يمكن السيطرة عليها () وظائف strcat () مع وظيفة snprintf ()، والتي تقف على "تنسيق الطباعة من السلسلة في معظم بايت في ن":

يمكنك جعل تزال الأخطاء مع snprintf، لأنه متروك لكم لتحديد ن، وإذا كنت غير دقيق، قد نخطئ.

ولكن النقطة المهمة هي أن يتم على الأقل ممكن لتقييد إخراج snprintf إلى حجم المخزن المؤقت المعروف، والتي ببساطة لا تستطيع أن تفعل مع strcpy من الطراز القديم () وstrcat ().

→ رمز الضفيرة تحديث أعلاه لا تزال غير مثالية. ينبغي أن تحقق حقا مبرمج القيمة المرجعة من snprintf ()، التي تقدم تقاريرها عدد البايتات انها تريد الكتابة. إذا كان لديك عازلة يست كبيرة بما يكفي، فإن الناتج يكون غير مكتمل وغير صحيح لذلك. يجب عليك عدم استخدام ما يلي: زيادة حجم المخزن المؤقت الخاص بك وحاول مرة أخرى، أو إرسال تقارير الخطأ بدلا من ذلك.

كنت أفكر ربما، في هذه المرحلة، أن استغلال هذه الثغرة الأمنية سيكون من الصعب لأن معظم البرامج التي تستخدم الضفيرة تفعل ذلك في الخلفية. فهي ليست تفاعلية.

Autoupdating البرمجيات، والتي قد تستخدم مكتبة الضفيرة (المعروف باسم يبكورل) عادة ما تأتي تهيئتها مسبقا مع قائمة من عناوين المواقع المعروفة جيدا، أو يطلب منك إدخال URL في وقت التثبيت، وهذا هو ذلك.

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

هذا صحيح، ولكن لا يزال هناك خطر.

إذا يمكن للمهاجم إعادة توجيه طلبات من autoupdater أو العميل POP3، على سبيل المثال، تافه مع إعدادات DNS الخاصة بك، أو عن طريق القرصنة ملقم على حافة شبكة مزود الخدمة الخاص بك، يمكن أن نرسل لك من على موقع النصاب ومحاولة استغلال لكم من هناك.

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

الدروس؟

  • لا تستخدم strcpy () strcat أو ().
  • من أي وقت مضى.
  • استخدام snprintf (أو strlcpy () وstrlcat () ، أو ما شابه ذلك) بدلا من ذلك.
  • دائما التحقق من القيمة المرجعة من سلسلة معالجة المهام حتى لا ينتهي بك الأمر باستخدام نتائج غير صحيحة.

مشكلتك التالية هي معرفة ما إذا كان، أو التي، البرنامج الذي تستخدمه يتضمن رمز الضفيرة مع هذه الأخطاء. (تتأثر إصدارات الضفيرة من 7.26.0 إلى 7.28.1 شاملة.)

أفضل بداية أسأل من حولي ...

NB. على الرغم من أن العديد من المنتجات سوفوس استخدام يبكورل، فإن أيا منها استخدام التعليمات البرمجية من الإصدارات الضعيفة.

You might like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

About the author

Paul Ducklin is a passionate security proselytiser. (That's like an evangelist, but more so!) He lives and breathes computer security, and would be happy for you to do so, too. Paul won the inaugural AusCERT Director's Award for Individual Excellence in Computer Security in 2009. Follow him on Twitter: @duckblog