Microsoft เปิดตัว เมื่อเร็ว ๆ นี้ผ่านโพสต์ การใช้งานระบบย่อย eBPF สำหรับ Windows ซึ่งช่วยให้คุณสามารถเรียกใช้ไดรเวอร์โดยพลการที่ทำงานในระดับเคอร์เนลของระบบปฏิบัติการ
eGMP มีตัวแปล bytecode ในตัว ในเคอร์เนลเพื่อสร้างไดรเวอร์เครือข่ายที่โหลดพื้นที่ผู้ใช้การควบคุมการเข้าถึงและการตรวจสอบระบบ eBPF ถูกรวมไว้ในเคอร์เนล Linux ตั้งแต่เวอร์ชัน 3.18 และ ช่วยให้คุณสามารถประมวลผลแพ็กเก็ตเครือข่ายขาเข้า / ขาออกแพ็คเก็ตส่งต่อควบคุมแบนด์วิดท์สกัดกั้นการโทรของระบบควบคุมการเข้าถึงและติดตาม
ด้วยการคอมไพล์ JIT bytecode จะถูกแปลเป็นคำสั่งของเครื่องได้ทันทีและทำงานด้วยประสิทธิภาพของโค้ดที่คอมไพล์ EBPF สำหรับ Windows เป็นโอเพ่นซอร์สภายใต้ใบอนุญาต MIT
วันนี้เรามีความยินดีที่จะประกาศโครงการโอเพ่นซอร์สใหม่จาก Microsoft เพื่อให้ eBPF ทำงานบน Windows 10 และ Windows Server 2016 และใหม่กว่า โครงการ ebpf-for-windows มีจุดมุ่งหมายเพื่อให้นักพัฒนาสามารถใช้ห่วงโซ่เครื่องมือ eBPF และอินเตอร์เฟสการเขียนโปรแกรมแอปพลิเคชัน (API) ที่คุ้นเคยกับ Windows เวอร์ชันที่มีอยู่ จากผลงานของผู้อื่นโครงการนี้ใช้โครงการ eBPF แบบโอเพนซอร์สที่มีอยู่หลายโครงการและเพิ่ม "กาว" เพื่อให้ทำงานบน Windows
eBPF สำหรับ Windows สามารถใช้กับเครื่องมือ eBPF ที่มีอยู่ได้ และจัดเตรียม API ทั่วไปที่ใช้สำหรับแอปพลิเคชัน eBPF บน Linux
โดยเฉพาะอย่างยิ่ง โครงการช่วยให้คุณสามารถรวบรวมโค้ดที่เขียนด้วยภาษา C เป็น bytecode eBPF โดยใช้คอมไพเลอร์ eBPF ที่ใช้เสียงดังมาตรฐาน และเรียกใช้ไดรเวอร์ eBPF ที่สร้างขึ้นสำหรับ Linux ที่ด้านบนของเคอร์เนล Windowsซึ่งมีเลเยอร์ความเข้ากันได้พิเศษและรองรับ Libbpf API มาตรฐานสำหรับความเข้ากันได้กับแอปพลิเคชันที่โต้ตอบกับโปรแกรม eBPF
ซึ่งรวมถึงเลเยอร์กลางที่มีการเชื่อมโยงแบบ Linux สำหรับ XDP (eXpress Data Path) และการเชื่อมต่อซ็อกเก็ตที่สรุปการเข้าถึงสแตกเครือข่าย Windows และไดรเวอร์เครือข่าย แผนมุ่งหวังที่จะให้การสนับสนุนระดับซอร์สเต็มรูปแบบสำหรับไดรเวอร์ Linux eBPF ทั่วไป
ความแตกต่างที่สำคัญในการใช้ eBPF สำหรับ Windows คือการใช้ตัวตรวจสอบรหัสไบต์ทางเลือกซึ่งเดิมเสนอโดยพนักงานและนักวิจัยของ VMware จากมหาวิทยาลัยในแคนาดาและอิสราเอล
ตัวตรวจสอบจะเริ่มต้นในกระบวนการแยกต่างหากในพื้นที่ผู้ใช้และใช้ก่อนดำเนินการโปรแกรม BPF เพื่อตรวจหาข้อผิดพลาดและบล็อกกิจกรรมที่อาจเป็นอันตราย
สำหรับการตรวจสอบความถูกต้อง eBPF สำหรับ Windows ใช้วิธีการวิเคราะห์แบบคงที่ในการตีความนามธรรม, อะไร, เมื่อเทียบกับ eBPF verifier สำหรับ Linux แสดงให้เห็นถึงอัตราผลบวกปลอมที่ต่ำกว่ารองรับการวิเคราะห์แบบวนซ้ำและให้ความสามารถในการปรับขนาดได้ดี วิธีนี้คำนึงถึงรูปแบบประสิทธิภาพโดยทั่วไปจำนวนมากที่ได้จากการวิเคราะห์โปรแกรม eBPF ที่มีอยู่
eBPF เป็นเทคโนโลยีที่มีชื่อเสียง แต่ปฏิวัติวงการที่ให้ความสามารถในการเขียนโปรแกรมความสามารถในการขยายและความคล่องตัว eBPF ถูกนำไปใช้กับกรณีการใช้งานเช่นการปฏิเสธการคุ้มครองบริการและการสังเกต
เมื่อเวลาผ่านไประบบนิเวศที่สำคัญของเครื่องมือผลิตภัณฑ์และความเชี่ยวชาญได้สร้างขึ้นจาก eBPF แม้ว่าการสนับสนุน eBPF จะถูกนำมาใช้ครั้งแรกในเคอร์เนล Linux แต่ก็มีความสนใจเพิ่มขึ้นในการอนุญาตให้ใช้ eBPF ในระบบปฏิบัติการอื่นและยังขยาย daemons และบริการโหมดผู้ใช้นอกเหนือจากเคอร์เนล
หลังจากตรวจสอบแล้ว bytecode ถูกส่งผ่านไปยังตัวแปลระดับเคอร์เนล หรือส่งผ่านคอมไพเลอร์ JIT ตามด้วยการรันโค้ดเครื่องที่เป็นผลลัพธ์ด้วยสิทธิ์เคอร์เนล ในการแยกไดรเวอร์ eBPF ที่ระดับเคอร์เนลจะใช้กลไก HVCI (HyperVisor Enhanced Code Integrity) ซึ่งใช้เครื่องมือการจำลองเสมือนเพื่อปกป้องกระบวนการในเคอร์เนลและทำให้แน่ใจว่าความสมบูรณ์ของโค้ดที่ดำเนินการนั้นได้รับการเซ็นชื่อแบบดิจิทัล
ข้อ จำกัด ประการหนึ่งของ HVCI คือความสามารถในการตรวจสอบเฉพาะโปรแกรม eBPF ที่ตีความแล้วและไม่สามารถใช้ร่วมกับ JIT ได้ (คุณมีทางเลือก: ประสิทธิภาพเพิ่มเติมหรือการป้องกัน)
ในที่สุด หากคุณสนใจที่จะทราบข้อมูลเพิ่มเติม คุณสามารถปรึกษา ลิงค์ต่อไปนี้