قامت Microsoft بإعداد تطبيق eBPF لنظام التشغيل Windows

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

يمكن استخدام eBPF لنظام التشغيل Windows مع أدوات eBPF الحالية ويوفر واجهة برمجة تطبيقات عامة تُستخدم لتطبيقات Linux eBPF. من بين أشياء أخرى ، يسمح لك المشروع بترجمة التعليمات البرمجية المكتوبة بلغة C إلى رمز eBPF bytecode باستخدام مترجم eBPF العادي المستند إلى Clang وتشغيل معالجات eBPF التي تم إنشاؤها بالفعل لنظام Linux أعلى نواة Windows ، مما يوفر طبقة توافق خاصة ويدعم Libbpf العادي API للتوافق مع التطبيقات التي تتفاعل مع برامج eBPF. يتضمن ذلك الطبقات التي توفر خطافات تشبه Linux لـ XDP (مسار بيانات eXpress) وربط المقبس ، وإلغاء الوصول إلى مكدس الشبكة وبرامج تشغيل شبكة Windows. من بين الخطط ، لوحظ توفير توافق كامل على مستوى كود المصدر مع معالجات Linux eBPF النموذجية.

قامت Microsoft بإعداد تطبيق eBPF لنظام التشغيل Windows

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

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

بعد التحقق ، يتم تمرير الرمز الثانوي إلى مترجم على مستوى kernel أو تمريره عبر مترجم JIT ، متبوعًا بتنفيذ رمز الجهاز الناتج مع حقوق kernel. لعزل معالجات eBPF على مستوى النواة ، يتم استخدام آلية HVCI (تكامل الشفرة التي يتم فرضها بواسطة HyperVisor) ، والتي تستخدم أدوات المحاكاة الافتراضية لحماية العمليات في النواة وتوفر التحقق من سلامة الكود القابل للتنفيذ عن طريق التوقيع الرقمي. يتمثل الحد من HVCI في القدرة على التحقق من برامج eBPF المفسرة فقط واستحالة استخدامه مع JIT (يتم تقديم خيار - إما الأداء أو الحماية الإضافية).

المصدر: opennet.ru

إضافة تعليق