ประมาณ 21% ของโค้ดที่คอมไพล์ใหม่ใน Android 13 เขียนด้วยภาษา Rust

วิศวกรจาก Google สรุปผลลัพธ์แรกของการแนะนำการสนับสนุนการพัฒนาในภาษา Rust ลงในแพลตฟอร์ม Android ใน Android 13 ประมาณ 21% ของโค้ดที่คอมไพล์ใหม่ที่เพิ่มเข้ามาเขียนด้วยภาษา Rust และ 79% เป็น C/C++ พื้นที่เก็บข้อมูล AOSP (Android Open Source Project) ซึ่งพัฒนาซอร์สโค้ดของแพลตฟอร์ม Android มีโค้ด Rust ประมาณ 1.5 ล้านบรรทัดที่เกี่ยวข้องกับส่วนประกอบใหม่ เช่น ที่เก็บคีย์การเข้ารหัส Keystore2 ซึ่งเป็นสแต็กสำหรับชิป UWB (Ultra-Wideband) การใช้งานโปรโตคอล DNS-over-HTTP3, เฟรมเวิร์กการจำลองเสมือน AVF (Android Virtualization Framework), สแต็คทดลองสำหรับ Bluetooth และ Wi-Fi

ประมาณ 21% ของโค้ดที่คอมไพล์ใหม่ใน Android 13 เขียนด้วยภาษา Rust

ตามกลยุทธ์ที่นำมาใช้ก่อนหน้านี้ในการลดความเสี่ยงของช่องโหว่ที่เกิดจากข้อผิดพลาดในการทำงานกับหน่วยความจำ ปัจจุบันภาษา Rust ถูกใช้เป็นหลักในการพัฒนาโค้ดใหม่และเพื่อค่อยๆ เสริมสร้างความปลอดภัยของส่วนประกอบซอฟต์แวร์ที่มีช่องโหว่และสำคัญที่สุด ไม่มีเป้าหมายทั่วไปในการถ่ายโอนแพลตฟอร์มทั้งหมดไปยัง Rust และโค้ดเก่ายังคงอยู่ใน C/C++ และการต่อสู้กับข้อผิดพลาดนั้นดำเนินการผ่านการใช้การทดสอบแบบคลุมเครือ การวิเคราะห์แบบคงที่ และใช้ในการพัฒนาเทคนิคที่คล้ายกับ การใช้ประเภท MiraclePtr (การเชื่อมพอยน์เตอร์แบบ Raw ดำเนินการตรวจสอบเพิ่มเติมสำหรับการเข้าถึงพื้นที่หน่วยความจำที่ว่าง) ระบบการจัดสรรหน่วยความจำ Scudo (การแทนที่อย่างปลอดภัยสำหรับ malloc/ฟรี) และกลไกการตรวจจับข้อผิดพลาดเมื่อทำงานกับหน่วยความจำ HWAsan (AddressSanitizer ที่ได้รับความช่วยเหลือจากฮาร์ดแวร์) GWP-ASAN และ KFENCE

สำหรับสถิติเกี่ยวกับลักษณะของช่องโหว่ในแพลตฟอร์ม Android นั้นสังเกตว่าเมื่อโค้ดใหม่ที่ทำงานอย่างไม่ปลอดภัยกับหน่วยความจำลดลง จำนวนช่องโหว่ที่เกิดจากข้อผิดพลาดเมื่อทำงานกับหน่วยความจำก็ลดลง ตัวอย่างเช่น ส่วนแบ่งของช่องโหว่ที่เกิดจากปัญหาหน่วยความจำลดลงจาก 76% ในปี 2019 เป็น 35% ในปี 2022 ในจำนวนที่แน่นอน มีการระบุช่องโหว่ที่เกี่ยวข้องกับหน่วยความจำ 2019 รายการในปี 223, 2020 รายการในปี 150, 2021 รายการในปี 100 และ 2022 รายการในปี 85 (ช่องโหว่ที่ระบุทั้งหมดอยู่ในโค้ด C/C++ ส่วนในโค้ด Rust ยังไม่มีปัญหาที่คล้ายกันนี้เลย พบ). ปี 2022 เป็นปีแรกที่ช่องโหว่ที่เกี่ยวข้องกับหน่วยความจำหยุดครอบงำ

ประมาณ 21% ของโค้ดที่คอมไพล์ใหม่ใน Android 13 เขียนด้วยภาษา Rust

เนื่องจากช่องโหว่ที่เกี่ยวข้องกับหน่วยความจำมักจะเป็นสิ่งที่อันตรายที่สุด สถิติโดยรวมยังแสดงให้เห็นการลดลงของจำนวนปัญหาสำคัญและปัญหาที่สามารถถูกโจมตีจากระยะไกลได้ ในขณะเดียวกัน พลวัตของการระบุช่องโหว่ที่ไม่เกี่ยวข้องกับการทำงานกับหน่วยความจำยังคงอยู่ในระดับเดียวกันในช่วง 4 ปีที่ผ่านมา - 20 ช่องโหว่ต่อเดือน ส่วนแบ่งของปัญหาที่เป็นอันตรายในช่องโหว่ที่เกิดจากข้อผิดพลาดเมื่อทำงานกับหน่วยความจำก็ยังคงอยู่ (แต่เนื่องจากจำนวนช่องโหว่ดังกล่าวลดลง จำนวนปัญหาอันตรายก็ลดลงเช่นกัน)

ประมาณ 21% ของโค้ดที่คอมไพล์ใหม่ใน Android 13 เขียนด้วยภาษา Rust

สถิติยังติดตามความสัมพันธ์ระหว่างจำนวนโค้ดใหม่ที่ทำงานอย่างไม่ปลอดภัยกับหน่วยความจำและจำนวนช่องโหว่ที่เกี่ยวข้องกับหน่วยความจำ (บัฟเฟอร์ล้น การเข้าถึงหน่วยความจำที่ว่างแล้ว ฯลฯ) การสังเกตนี้เป็นการยืนยันสมมติฐานที่ว่าจุดสนใจหลักเมื่อใช้เทคนิคการเขียนโปรแกรมที่ปลอดภัยควรเป็นการลบโค้ดใหม่ แทนที่จะเขียนโค้ดที่มีอยู่ใหม่ เนื่องจากช่องโหว่ที่ระบุส่วนใหญ่อยู่ในโค้ดใหม่

ประมาณ 21% ของโค้ดที่คอมไพล์ใหม่ใน Android 13 เขียนด้วยภาษา Rust


ที่มา: opennet.ru

เพิ่มความคิดเห็น