ترجمة آلية لم تُراجَع بعد. النص الإنجليزي هو المرجع في حال الاختلاف.
الملخص
في نواة Linux، تم حل الثغرة التالية: tracing: حفظ ملف الأحداث بدلاً من الرسم البياني المتوافق. تقوم الدالة create_field_var_hist() بإنشاء رسم بياني على الحدث المتطابق لتوفير متغيّر حقل، وتقوم بتسجيله على الهدف بحيث يمكن إزالته لاحقًا: hist_data = find_compatible_hist(target_hist_data, file); ... /* Save the compatible histogram information */ var_hist->hist_data = hist_data; hist_data ليس الرسم البياني الذي تنشئه. إنه رسم بياني كان موجودًا بالفعل، وتنسخ الرسم البياني الجديد مفاتيحه. المؤشر المحفوظ له مستخدم واحد هو unregister_field_var_hists()، والذي يتم تشغيله عند إزالة الهدف: file = hist_data->field_var_hists[i]->hist_data->event_file; تطابق الدالة find_compatible_hist() المفاتيح وحدها، لذا يمكنها اختيار واحد ليس له متغيّرات خاصة به. ثم تُرجع check_var_refs() القيمة false ويمكن للمستخدم إزالته بينما لا يزال الهدف يشير إليه: BUG: KASAN: slab-use-after-free in event_hist_trigger_free+0x2b2/0x320 Read of size 8 at addr ffff8880093b90e0 by task init/1 Freed by task 1: kfree+0x154/0x420 event_hist_trigger_free+0x1d5/0x320 event_hist_trigger_parse+0x35f3/0x69e0 trigger_process_regex+0x1a6/0x250. احفظ ملف الأحداث بدلاً من ذلك. هذا هو كل ما تحتاجه عملية إلغاء الإشارة (dereference)، ولا يختفي عندما يقوم المستخدم بإزالة مشغل (trigger).
المعالجة
المراجع
- مرجعhttps://git.kernel.org/stable/c/a6165126b1a1b26342b55be6eb6ee23af8756aba
- مرجعhttps://git.kernel.org/stable/c/173914501b97236d7ea7dc2af7f30feddd4e1436
- مرجعhttps://git.kernel.org/stable/c/ac815a379644b2ad5008a009a3516ada31b5dd82
- مرجعhttps://git.kernel.org/stable/c/8b307d64a60548e4a74cb746f74d7ed4bd49965e
- مرجعhttps://git.kernel.org/stable/c/7a111ba0d1b74c99bc8f096565dc71945f694254
- مرجعhttps://git.kernel.org/stable/c/3609ada3c12cecfb0ae5ee82ef4f86c5f18a2dea
- مرجعhttps://git.kernel.org/stable/c/9631dbccd3c649b567a5aafffea6b00634183997
- مرجعhttps://git.kernel.org/stable/c/7cafc82e6153f05a221be678cd649d02e06ba909
- مرجعhttps://git.kernel.org/stable/c/d5c42664fc094899af9aae5300b27fe8fdb658ef