
نسخة مخصصة من sudo 1.8.3p1 مع تطبيق تصحيحات CVE-2021-3156
هذا إصدار مخصص من sudo، مبني على حزمة sudo 1.8.3p1 كما توفّرها Canonical لنظام Ubuntu 12.04 باستخدام الروابط أدناه، مع تطبيق تصحيحات CVE-2021-3156.
(أسهل طريقة لتنزيل هذه الملفات وفك ضغطها هي استخدام apt-get source sudo على جهاز يعمل بنظام Ubuntu 12.04. إذا كنت لا ترغب في العبث بجهاز إنتاج، فقد كانت صورة Vagrant هذه مفيدة لي في إعداد هذا: https://app.vagrantup.com/hashicorp/boxes/precise64)
إذا كان لديك الإصدار غير المُصحَّح مثبّتًا (1.8.3p1-1ubuntu3.7)، فإنه يتصرف عادةً على هذا النحو، مما يشير إلى الثغرة التي قد يُحتمل استغلالها:
vagrant@precise64:~/src$ sudoedit -s '\' `perl -e 'print "A" x 65536'`
Segmentation fault
أما الإصدار المُصحَّح فسيعطيك شيئًا مثل هذا بدلًا من ذلك:
vagrant@precise64:~/src$ sudoedit -s '\' `perl -e 'print "A" x 65536'`
usage: sudoedit [-AknS] [-C fd] [-D level] [-g groupname|#gid] [-p prompt] [-u user name|#uid] file ...
apt-get source sudocd sudo-1.8.3p1، ثم طبّق جميع تصحيحات CVE-2021-3156 من حزمة Xenial. أسهل طريقة للحصول على هذه الحزم هي تشغيل apt-get source sudo على جهاز Xenial، أو بإضافة مصدر حزمة Xenial apt-get مؤقتًا إلى جهاز Precise لديك: deb-src http://security.ubuntu.com/ubuntu xenial-security main.
patch -p1 < debian/patches/CVE-2021-3156-1.patch (3 من أصل 9 مقاطع فشلت)patch -p1 < debian/patches/CVE-2021-3156-2.patch (يشير إلى ملف غير موجود)patch -p1 < debian/patches/CVE-2021-3156-3.patch (1 من أصل 4 مقاطع فشل)patch -p1 < debian/patches/CVE-2021-3156-4.patch (يشير إلى ملف غير موجود)patch -p1 < debian/patches/CVE-2021-3156-5.patch (1 من أصل 1 مقطع فشل)plugins/sudoers) غير الموجودة في إصدار 1.8.3p1. وأعتقد اعتقادًا راسخًا أنه نظرًا لأن هذا الكود غير موجود في ذلك الإصدار، فإن هذه التصحيحات غير قابلة للتطبيق في حالتنا.$ sudo apt-get build-dep sudo
$ dpkg-buildpackage -rsudo -b
إذا سارت الأمور على ما يرام، يجب أن تحصل الآن على حزمة sudo_1.8.3p1-1ubuntu3.8_amd64.deb وحزمة sudo-ldap_1.8.3p1-1ubuntu3.8_amd64.deb في الدليل الأصلي.
لاحظ أنه تم تطبيق تصحيحات CVE-2021-3156 فقط على هذه الشجرة. من المحتمل جدًا أن يكون واحد أو أكثر من تصحيحات Xenial التالية قابلاً للتطبيق أيضًا على هذه الشجرة؛ لقد قمت بمحاولة أولية لتطبيقها لكنها لم تُطبَّق بشكل نظيف، وبالتالي، فهي غير مضمّنة في هذا المستودع. لا يوجد أي ضمان على الإطلاق أن حزمة sudo المقدمة من هذا المستودع لا تحتوي على مشاكل أمنية حرجة.
طلبات السحب التي تطبق أيًا من هذه التصحيحات مرحب بها بشدة! ولراحتك، المجموعة الكاملة من تصحيحات Xenial (حتى sudo 1.8.16-0ubuntu1.10) متاحة في debian/patches في هذه الشجرة. لاحظ أن مصادر حزمة Precise (12.04) (التي يستند إليها هذا المستودع) قد طبّقت بالفعل كل شيء حتى CVE-2014-9680.patch. المجموعة الكاملة من التصحيحات المطبقة بالفعل مدرجة في .pc/applied-patches.
البرنامج مُقدَّم "كما هو"، دون أي ضمان من أي نوع، صريح أو ضمني، بما في ذلك على سبيل المثال لا الحصر ضمانات القابلية للتسويق، والملاءمة لغرض معين وعدم التعدي. في أي حال من الأحوال لن يكون المؤلفون أو أصحاب حقوق الطبع والنشر مسؤولين عن أي مطالبة أو أضرار أو مسؤولية أخرى، سواء في إطار عقد أو ضرر أو غير ذلك، تنشأ عن أو بسبب أو فيما يتعلق بالبرنامج أو استخدامه أو التعاملات الأخرى فيه.
.rej وطبّق التغييرات يدويًا. هذا هو الجزء الصعب، لكنه في بعض الأحيان ليس بتلك الصعوبة. السبب في عدم تطبيق التصحيحات بشكل نظيف هو عادةً أن أرقام الأسطر تختلف كثيرًا (الأسطر المُصحَّحة موجودة، لكن في قسم مختلف من الملف المُصحَّح)، أو أن الكود يبدو مختلفًا في قاعدة كود 1.8.3p1. من الممكن أيضًا حل أخطاء من هذا القبيل؛ فهي تتطلب فقط مزيدًا من التفكير، وتحليل الكود، ومعرفة كيفية تطبيق التغييرات.