เปอร์เซ็นต์ของช่องโหว่ในแอนดรอยด์ที่เกิดจากปัญหาด้านความปลอดภัยของหน่วยความจำลดลงจาก 76% ในปี 2019 เหลือเพียง 24% ในปี 2024 ซึ่งแสดงถึงการลดลงอย่างมากกว่า 68% ในระยะเวลา 5 ปี
ซึ่งต่ำกว่า 70% ที่พบใน Chromium ก่อนหน้านี้ ทำให้ Android เป็นตัวอย่างที่ดีของการที่โปรเจ็กต์ขนาดใหญ่สามารถค่อย ๆ พัฒนาอย่างเป็นระบบไปสู่พื้นที่ปลอดภัย โดยไม่กระทบต่อความเข้ากันได้
Google ระบุว่าบรรลุผลดังกล่าวด้วยการให้ความสำคัญกับการเขียนโค้ดใหม่ด้วยภาษาที่ปลอดภัยต่อหน่วยความจำ เช่น Rust เพื่อลดโอกาสการเกิดช่องโหว่ใหม่ ๆ เมื่อเวลาผ่านไป
ในขณะเดียวกัน โค้ดเก่าก็ได้รับการบำรุงรักษาโดยมีการเปลี่ยนแปลงเล็กน้อยที่เน้นไปที่การแก้ไขปัญหาความปลอดภัยที่สำคัญ แทนที่จะเขียนใหม่ทั้งหมดซึ่งอาจส่งผลกระทบต่อการทำงานร่วมกัน
กลยุทธ์นี้ทำให้โค้ดเก่ามีความสมบูรณ์มากขึ้น และปลอดภัยมากขึ้นตามกาลเวลา โดยลดจำนวนช่องโหว่ที่เกี่ยวข้องกับหน่วยความจำไม่ว่าจะเขียนด้วยภาษาอะไรก็ตาม
สองวิธีการหลักนี้ในกลยุทธ์การพัฒนาของ Android มีผลในการลดช่องโหว่ด้านหน่วยความจำอย่างมากในแพลตฟอร์มมือถือที่มีการใช้งานมากที่สุดในโลก
Google อธิบายว่าแม้อาจดูเสี่ยงที่จะปล่อยโค้ดเก่าไว้โดยไม่มีการเปลี่ยนแปลง และแม้ว่าโค้ดใหม่จะได้รับการทดสอบ และตรวจสอบได้ดีขึ้น แต่สิ่งที่ตรงกันข้ามก็เกิดขึ้น เพราะการเปลี่ยนแปลงโค้ดล่าสุดมักก่อให้เกิดช่องโหว่ ดังนั้นโค้ดใหม่จึงมักจะมีปัญหาความปลอดภัยอยู่เสมอ ในขณะเดียวกันช่องโหว่ในโค้ดเก่าก็จะถูกแก้ไข เว้นแต่ว่านักพัฒนาจะทำการเปลี่ยนแปลงครั้งใหญ่กับมัน
Google ระบุว่า ได้ผ่าน 4 ขั้นตอนหลักในการจัดการกับช่องโหว่ด้านความปลอดภัยของหน่วยความจำ ซึ่งสรุปได้ดังนี้:
- Reactive patching: ในช่วงแรก มุ่งเน้นไปที่การแก้ไขช่องโหว่หลังจากที่ค้นพบแล้ว แนวทางนี้ทำให้เกิดค่าใช้จ่ายที่ต่อเนื่อง ต้องมีการอัปเดตบ่อยครั้ง และผู้ใช้ยังคงมีความเสี่ยงอยู่ในระหว่างนี้
- Proactive mitigations: ขั้นตอนถัดไปคือการใช้กลยุทธ์เพื่อทำให้การโจมตีทำได้ยากขึ้น (เช่น stack canaries, control-flow integrity) อย่างไรก็ตาม มาตรการเหล่านี้มักมาพร้อมกับการแลกเปลี่ยนด้านประสิทธิภาพ และนำไปสู่เกมแมวกับหนูระหว่างผู้โจมตี
- Proactive vulnerability discovery: ขั้นตอนนี้เกี่ยวข้องกับการใช้เครื่องมือต่าง ๆ เช่น fuzzing และ sanitizers เพื่อค้นหาช่องโหว่เชิงรุก แม้ว่าจะมีประโยชน์ แต่วิธีนี้จัดการได้เฉพาะช่องโหว่ที่เห็นได้ชัด โดยต้องอาศัยความเอาใจใส่ และความพยายามอย่างต่อเนื่อง
- High-assurance prevention (Safe Coding): แนวทางล่าสุดมุ่งเน้นที่การป้องกันช่องโหว่ตั้งแต่ต้นทางโดยใช้ภาษาที่ปลอดภัยจากหน่วยความจำ เช่น Rust วิธีนี้เป็นแนวทาง "secure by design" ซึ่งให้การรับประกันการ scalable ในระยะยาว และลดวงจรการแก้ไขช่องโหว่ที่มีผลกระทบ และค่าใช้จ่ายสูง
Google อธิบายเพิ่มเติมว่า "แนวทางเหล่านี้ทำให้ผลิตภัณฑ์ทั่วทั้งอุตสาหกรรมแข็งแกร่งขึ้นอย่างมาก และ Google ยังคงมุ่งมั่นที่จะตอบสนอง ลดผลกระทบ และค้นหาช่องโหว่ในเชิงรุก"
เป็นที่ชัดเจนมากขึ้นเรื่อย ๆ ว่าแนวทางก่อนหน้านี้ไม่เพียงพอสำหรับระดับความเสี่ยงที่ยอมรับได้ในด้านความปลอดภัยของหน่วยความจำ แต่ยังก่อให้เกิดค่าใช้จ่ายอย่างต่อเนื่อง และเพิ่มค่าใช้จ่ายให้กับนักพัฒนา, ผู้ใช้, ธุรกิจ และผลิตภัณฑ์อีกด้วย
"ดังที่หน่วยงานรัฐบาลหลายแห่ง รวมถึง CISA ได้เน้นย้ำในรายงานการออกแบบเพื่อความปลอดภัย ด้วยการผสมผสานหลักปฏิบัติในการออกแบบที่ปลอดภัยเท่านั้นที่จะลดวงจรอันเลวร้ายของการตามแก้ไขช่องโหว่อย่างต่อเนื่อง"
เมื่อเดือนมิถุนายนที่ผ่านมา สำนักงานความปลอดภัยโครงสร้างพื้นฐาน และความปลอดภัยไซเบอร์ของสหรัฐฯ (CISA) ได้เตือนว่า 52% ของโครงการ open-source ที่ใช้กันอย่างแพร่หลายที่สุด ใช้ภาษาที่ไม่ปลอดภัยต่อหน่วยความจำ
แม้แต่โครงการที่เขียนด้วยภาษาที่ปลอดภัยต่อหน่วยความจำ ก็มักจะต้องพึ่งพาส่วนประกอบที่เขียนด้วยภาษาที่ไม่ปลอดภัยต่อหน่วยความจำ ดังนั้นความเสี่ยงด้านความปลอดภัยจึงมีความซับซ้อนในการแก้ไข
CISA แนะนำให้นักพัฒนาซอฟต์แวร์เขียนโค้ดใหม่ด้วยภาษาที่ปลอดภัยต่อหน่วยความจำ เช่น Rust, Java และ GO และเปลี่ยนโครงการที่มีอยู่ โดยเฉพาะส่วนประกอบที่สำคัญ ไปเป็นภาษาเหล่านั้น
ที่มา : bleepingcomputer
You must be logged in to post a comment.