في مدير النظام systemd
سبب الثغرة الأمنية هو الوصول إلى منطقة الذاكرة المحررة بالفعل (الاستخدام بعد الاستخدام)، والذي يحدث عند تنفيذ الطلبات بشكل غير متزامن إلى Polkit أثناء معالجة رسائل DBus. تستخدم بعض واجهات DBus ذاكرة تخزين مؤقت لتخزين الكائنات لفترة قصيرة ومسح إدخالات ذاكرة التخزين المؤقت بمجرد أن يصبح ناقل DBus حرًا لمعالجة الطلبات الأخرى. إذا كان معالج أسلوب DBus يستخدم bus_verify_polkit_async()، فقد يحتاج إلى الانتظار حتى يكتمل إجراء Polkit. بعد أن يصبح Polkit جاهزًا، يتم استدعاء المعالج مرة أخرى والوصول إلى البيانات الموزعة بالفعل في الذاكرة. إذا استغرق الطلب إلى Polkit وقتًا طويلاً، فسيتم مسح العناصر الموجودة في ذاكرة التخزين المؤقت قبل استدعاء معالج أسلوب DBus مرة أخرى.
من بين الخدمات التي تسمح باستغلال الثغرة الأمنية، يُشار إلى خدمة systemd-machined، التي توفر واجهة برمجة تطبيقات DBus org.freedesktop.machine1.Image.Clone، مما يؤدي إلى تخزين مؤقت للبيانات في ذاكرة التخزين المؤقت والوصول غير المتزامن إلى Polkit. واجهه المستخدم
org.freedesktop.machine1.Image.Clone متاح لجميع مستخدمي النظام غير المميزين، مما قد يؤدي إلى تعطل خدمات systemd أو يحتمل أن يتسبب في تنفيذ التعليمات البرمجية كجذر (لم يتم عرض النموذج الأولي للاستغلال بعد). الكود الذي سمح باستغلال الثغرة كان
المصدر: opennet.ru