یک آسیبپذیری (CVE-2021-4122) در بسته Cryptsetup شناسایی شده است که برای رمزگذاری پارتیشنهای دیسک در لینوکس استفاده میشود، که اجازه میدهد تا رمزگذاری روی پارتیشنهایی با فرمت 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