Google ตรวจพบช่องโหว่ของหน่วยความจำใน Android ลดลง 68% ภายใน 5 ปี

เปอร์เซ็นต์ของช่องโหว่ในแอนดรอยด์ที่เกิดจากปัญหาด้านความปลอดภัยของหน่วยความจำลดลงจาก 76% ในปี 2019 เหลือเพียง 24% ในปี 2024 ซึ่งแสดงถึงการลดลงอย่างมากกว่า 68% ในระยะเวลา 5 ปี

ซึ่งต่ำกว่า 70% ที่พบใน Chromium ก่อนหน้านี้ ทำให้ Android เป็นตัวอย่างที่ดีของการที่โปรเจ็กต์ขนาดใหญ่สามารถค่อย ๆ พัฒนาอย่างเป็นระบบไปสู่พื้นที่ปลอดภัย โดยไม่กระทบต่อความเข้ากันได้

Google ระบุว่าบรรลุผลดังกล่าวด้วยการให้ความสำคัญกับการเขียนโค้ดใหม่ด้วยภาษาที่ปลอดภัยต่อหน่วยความจำ เช่น Rust เพื่อลดโอกาสการเกิดช่องโหว่ใหม่ ๆ เมื่อเวลาผ่านไป

ในขณะเดียวกัน โค้ดเก่าก็ได้รับการบำรุงรักษาโดยมีการเปลี่ยนแปลงเล็กน้อยที่เน้นไปที่การแก้ไขปัญหาความปลอดภัยที่สำคัญ แทนที่จะเขียนใหม่ทั้งหมดซึ่งอาจส่งผลกระทบต่อการทำงานร่วมกัน

กลยุทธ์นี้ทำให้โค้ดเก่ามีความสมบูรณ์มากขึ้น และปลอดภัยมากขึ้นตามกาลเวลา โดยลดจำนวนช่องโหว่ที่เกี่ยวข้องกับหน่วยความจำไม่ว่าจะเขียนด้วยภาษาอะไรก็ตาม

สองวิธีการหลักนี้ในกลยุทธ์การพัฒนาของ Android มีผลในการลดช่องโหว่ด้านหน่วยความจำอย่างมากในแพลตฟอร์มมือถือที่มีการใช้งานมากที่สุดในโลก

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

Google ระบุว่า ได้ผ่าน 4 ขั้นตอนหลักในการจัดการกับช่องโหว่ด้านความปลอดภัยของหน่วยความจำ ซึ่งสรุปได้ดังนี้:

  1. Reactive patching: ในช่วงแรก มุ่งเน้นไปที่การแก้ไขช่องโหว่หลังจากที่ค้นพบแล้ว แนวทางนี้ทำให้เกิดค่าใช้จ่ายที่ต่อเนื่อง ต้องมีการอัปเดตบ่อยครั้ง และผู้ใช้ยังคงมีความเสี่ยงอยู่ในระหว่างนี้
  2. Proactive mitigations: ขั้นตอนถัดไปคือการใช้กลยุทธ์เพื่อทำให้การโจมตีทำได้ยากขึ้น (เช่น stack canaries, control-flow integrity) อย่างไรก็ตาม มาตรการเหล่านี้มักมาพร้อมกับการแลกเปลี่ยนด้านประสิทธิภาพ และนำไปสู่เกมแมวกับหนูระหว่างผู้โจมตี
  3. Proactive vulnerability discovery: ขั้นตอนนี้เกี่ยวข้องกับการใช้เครื่องมือต่าง ๆ เช่น fuzzing และ sanitizers เพื่อค้นหาช่องโหว่เชิงรุก แม้ว่าจะมีประโยชน์ แต่วิธีนี้จัดการได้เฉพาะช่องโหว่ที่เห็นได้ชัด โดยต้องอาศัยความเอาใจใส่ และความพยายามอย่างต่อเนื่อง
  4. High-assurance prevention (Safe Coding): แนวทางล่าสุดมุ่งเน้นที่การป้องกันช่องโหว่ตั้งแต่ต้นทางโดยใช้ภาษาที่ปลอดภัยจากหน่วยความจำ เช่น Rust วิธีนี้เป็นแนวทาง "secure by design" ซึ่งให้การรับประกันการ scalable ในระยะยาว และลดวงจรการแก้ไขช่องโหว่ที่มีผลกระทบ และค่าใช้จ่ายสูง

Google อธิบายเพิ่มเติมว่า "แนวทางเหล่านี้ทำให้ผลิตภัณฑ์ทั่วทั้งอุตสาหกรรมแข็งแกร่งขึ้นอย่างมาก และ Google ยังคงมุ่งมั่นที่จะตอบสนอง ลดผลกระทบ และค้นหาช่องโหว่ในเชิงรุก"

เป็นที่ชัดเจนมากขึ้นเรื่อย ๆ ว่าแนวทางก่อนหน้านี้ไม่เพียงพอสำหรับระดับความเสี่ยงที่ยอมรับได้ในด้านความปลอดภัยของหน่วยความจำ แต่ยังก่อให้เกิดค่าใช้จ่ายอย่างต่อเนื่อง และเพิ่มค่าใช้จ่ายให้กับนักพัฒนา, ผู้ใช้, ธุรกิจ และผลิตภัณฑ์อีกด้วย

"ดังที่หน่วยงานรัฐบาลหลายแห่ง รวมถึง CISA ได้เน้นย้ำในรายงานการออกแบบเพื่อความปลอดภัย ด้วยการผสมผสานหลักปฏิบัติในการออกแบบที่ปลอดภัยเท่านั้นที่จะลดวงจรอันเลวร้ายของการตามแก้ไขช่องโหว่อย่างต่อเนื่อง"

เมื่อเดือนมิถุนายนที่ผ่านมา สำนักงานความปลอดภัยโครงสร้างพื้นฐาน และความปลอดภัยไซเบอร์ของสหรัฐฯ (CISA) ได้เตือนว่า 52% ของโครงการ open-source ที่ใช้กันอย่างแพร่หลายที่สุด ใช้ภาษาที่ไม่ปลอดภัยต่อหน่วยความจำ

แม้แต่โครงการที่เขียนด้วยภาษาที่ปลอดภัยต่อหน่วยความจำ ก็มักจะต้องพึ่งพาส่วนประกอบที่เขียนด้วยภาษาที่ไม่ปลอดภัยต่อหน่วยความจำ ดังนั้นความเสี่ยงด้านความปลอดภัยจึงมีความซับซ้อนในการแก้ไข

CISA แนะนำให้นักพัฒนาซอฟต์แวร์เขียนโค้ดใหม่ด้วยภาษาที่ปลอดภัยต่อหน่วยความจำ เช่น Rust, Java และ GO และเปลี่ยนโครงการที่มีอยู่ โดยเฉพาะส่วนประกอบที่สำคัญ ไปเป็นภาษาเหล่านั้น

ที่มา : bleepingcomputer