ثغرة أمنية في cryptsetup تسمح لك بتعطيل التشفير في أقسام LUKS2

تم التعرف على ثغرة أمنية (CVE-2021-4122) في حزمة Cryptsetup، المستخدمة لتشفير أقسام القرص في Linux، والتي تسمح بتعطيل التشفير على الأقسام بتنسيق LUKS2 (Linux Unified Key Setup) عن طريق تعديل البيانات التعريفية. لاستغلال الثغرة الأمنية، يجب أن يتمتع المهاجم بإمكانية الوصول الفعلي إلى الوسائط المشفرة، أي الوسائط المشفرة. تعتبر هذه الطريقة منطقية بشكل أساسي لمهاجمة أجهزة التخزين الخارجية المشفرة، مثل محركات الأقراص المحمولة، والتي يمكن للمهاجم الوصول إليها ولكنه لا يعرف كلمة المرور لفك تشفير البيانات.

لا ينطبق الهجوم إلا على تنسيق LUKS2 ويرتبط بالتلاعب بالبيانات الوصفية المسؤولة عن تفعيل ملحق "إعادة التشفير عبر الإنترنت"، والذي يسمح، إذا كان من الضروري تغيير مفتاح الوصول، ببدء عملية إعادة تشفير البيانات بسرعة دون التوقف عن العمل مع القسم. نظرًا لأن عملية فك التشفير والتشفير باستخدام مفتاح جديد تستغرق وقتًا طويلاً، فإن "إعادة التشفير عبر الإنترنت" يجعل من الممكن عدم مقاطعة العمل مع القسم وإجراء إعادة التشفير في الخلفية، وإعادة تشفير البيانات تدريجيًا من مفتاح إلى آخر . من الممكن أيضًا تحديد مفتاح هدف فارغ، مما يسمح لك بتحويل القسم إلى نموذج غير مشفر.

يمكن للمهاجم إجراء تغييرات على بيانات تعريف LUKS2 التي تحاكي إجهاض عملية فك التشفير نتيجة للفشل وتحقيق فك تشفير جزء من القسم بعد تنشيط واستخدام محرك الأقراص المعدل من قبل المالك. في هذه الحالة، لا يتلقى المستخدم الذي قام بتوصيل محرك الأقراص المعدل وفتحه بكلمة المرور الصحيحة أي تحذير حول عملية استعادة عملية إعادة التشفير المتقطعة ولا يمكنه معرفة تقدم هذه العملية إلا باستخدام "luks Dump" يأمر. تعتمد كمية البيانات التي يمكن للمهاجم فك تشفيرها على حجم رأس LUKS2، ولكن بالحجم الافتراضي (16 ميجابايت) يمكن أن يتجاوز 3 جيجابايت.

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

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

تم التعرف على المشكلة بواسطة مشرف مشروع cryptsetup وتم إصلاحها في تحديثات cryptsetup 2.4.3 و2.3.7. يمكن تتبع حالة التحديثات التي يتم إنشاؤها لإصلاح المشكلة في التوزيعات على هذه الصفحات: Debian، RHEL، SUSE، Fedora، Ubuntu، Arch. تظهر الثغرة الأمنية فقط منذ إصدار cryptsetup 2.2.0، الذي قدم دعمًا لعملية "إعادة التشفير عبر الإنترنت". كحل بديل للحماية، يمكن استخدام التشغيل باستخدام خيار "--disable-luks2-reencryption".

المصدر: opennet.ru

إضافة تعليق