ลาก่อน C/C++… สหรัฐฯ หนุนให้นักพัฒนาใช้ “ภาษา memory-safe” เขียนโปรแกรม

รัฐบาลสหรัฐฯ ได้ก้าวออกมาประกาศจุดยืนเชิงนโยบายอย่างชัดเจนว่า ถึงเวลาต้องลดการใช้ภาษาเขียนโปรแกรมที่ไม่ปลอดภัยต่อหน่วยความจำ เช่น C และ C++ และเปลี่ยนผ่านไปสู่ภาษา “memory-safe” เพื่อแก้ไขปัญหาช่องโหว่ในระดับโครงสร้างของซอฟต์แวร์
รายงานทางเทคนิคจาก สำนักงานผู้อำนวยการแห่งชาติด้านความมั่นคงไซเบอร์ (Office of the National Cyber Director – ONCD) ที่เผยแพร่โดยทำเนียบขาวเมื่อเดือนกุมภาพันธ์ 2024 และเอกสารแนะนำล่าสุดจาก CISA, NSA และ NIST ในปี 2025 ต่างสนับสนุนให้ทั้งภาครัฐและเอกชนเปลี่ยนแนวทางพัฒนา โดยเน้นว่าภาษาเขียนโปรแกรมที่ปลอดภัยต่อหน่วยความจำควรเป็นทางเลือกหลักสำหรับการพัฒนาระบบใหม่
ทำไมภาษา C/C++ ถึงกลายเป็นความเสี่ยง?
C และ C++ เป็นภาษาที่ให้อิสระสูงกับนักพัฒนา โดยเฉพาะการเข้าถึงและจัดการหน่วยความจำโดยตรง แต่ความยืดหยุ่นนี้กลับนำมาซึ่งข้อผิดพลาดที่ยากจะตรวจสอบ เช่น buffer overflow, dangling pointer และ use-after-free ซึ่งกลายเป็นจุดโจมตีหลักที่แฮกเกอร์ใช้เจาะระบบมานานหลายทศวรรษ
ข้อมูลจาก Microsoft และ Google ชี้ตรงกันว่า มากกว่า 70% ของช่องโหว่ความมั่นคงในซอฟต์แวร์ของตนมาจากปัญหาที่เกี่ยวกับหน่วยความจำโดยตรง ไม่ใช่จากการออกแบบระบบหรือฟีเจอร์ผิดพลาด
ที่ผ่านมา ช่องโหว่ระดับโลกหลายครั้งมีต้นตอจากปัญหานี้ เช่น Morris worm (1988), Slammer (2003), Heartbleed (2014), Trident (2016) และ Blastpass (2023) ซึ่งล้วนสร้างผลกระทบวงกว้างทั้งในระดับผู้ใช้และระดับประเทศ
Memory-Safe Languages คืออะไร?
ภาษาที่ปลอดภัยต่อหน่วยความจำ คือภาษาคอมพิวเตอร์ที่มีระบบช่วยจัดการหน่วยความจำให้โดยอัตโนมัติหรือมีข้อบังคับเข้มงวด เพื่อป้องกันข้อผิดพลาดที่อาจเกิดขึ้นจากการจัดการหน่วยความจำผิดพลาด เช่น การเข้าถึงข้อมูลที่ไม่ได้รับอนุญาต หรือลืมคืนหน่วยความจำ โดยมีลักษณะสำคัญ เช่น
- มี garbage collector ช่วยลบข้อมูลในหน่วยความจำที่ไม่ได้ใช้งานแล้ว โดยที่โปรแกรมเมอร์ไม่ต้องลบเอง ช่วยลดความเสี่ยงเรื่องหน่วยความจำรั่ว (memory leak) ในระดับหนึ่ง แต่ก็ยังต้องพึ่งพาระบบ runtime ในการจัดการ pointer และการเข้าถึงหน่วยความจำ
- จำกัดการเข้าถึงหน่วยความจำโดยตรง ไม่ให้เข้าถึงตำแหน่งข้อมูลแบบอิสระ (pointer) เหมือนภาษา C/C++ ซึ่งอาจทำให้เขียนพลาดแล้วเกิดช่องโหว่ได้
- มีระบบควบคุมความเป็นเจ้าของข้อมูล (ownership) เหมือนในภาษา Rust ซึ่งช่วยให้แน่ใจว่า ข้อมูลแต่ละก้อนมีเจ้าของที่ชัดเจน และไม่ถูกใช้ผิดวิธี ลดปัญหาการเข้าถึงข้อมูลซ้ำซ้อนหรือลบข้อมูลก่อนเวลาอันควร
ภาษาที่จัดอยู่ในกลุ่มนี้ได้แก่ Rust, Go, Java, Python, Swift, Kotlin และ C# ซึ่งถูกแนะนำโดยเอกสารจากสหรัฐฯ และพันธมิตรความมั่นคงไซเบอร์ในกลุ่ม Five Eyes กลุ่มพันธมิตรด้านข่าวกรองและความมั่นคงไซเบอร์ระดับแน่นแฟ้น ซึ่งมีสมาชิกหลักอยู่ 5 ประเทศ ได้แก่
- สหรัฐอเมริกา : หน่วยงานหลัก: NSA (National Security Agency), CISA (Cybersecurity and Infrastructure Security Agency)
- สหราชอาณาจักร : หน่วยงานหลัก: GCHQ (Government Communications Headquarters), NCSC (National Cyber Security Centre)
- แคนาดา : หน่วยงานหลัก: CSE (Communications Security Establishment), CCCS (Canadian Centre for Cyber Security)
- ออสเตรเลีย : หน่วยงานหลัก: ASD (Australian Signals Directorate), ACSC (Australian Cyber Security Centre)
- นิวซีแลนด์ : หน่วยงานหลัก: GCSB (Government Communications Security Bureau), NCSC NZ (National Cyber Security Centre)
แม้ภาษาเหล่านี้จะไม่สามารถนำมาใช้แทนที่ C/C++ ได้ 100% โดยเฉพาะในงานฝังตัวระดับต่ำหรือระบบเวลาจริง แต่ผู้เชี่ยวชาญยืนยันว่า “ในโครงการใหม่ควรเริ่มต้นด้วยภาษา memory-safe ตั้งแต่ต้น” เพื่อป้องกันปัญหาระยะยาว
จุดยืนจากรัฐบาลสหรัฐฯ
ในรายงานชื่อ “The Case for Memory-Safe Programming Languages” ที่เผยแพร่กลางปี 2025 โดย CISA, NSA และ NIST ระบุว่า “ช่องโหว่ด้านหน่วยความจำเป็นภัยคุกคามด้านความมั่นคงของชาติที่สามารถป้องกันได้” และ “การออกแบบซอฟต์แวร์ให้ปลอดภัยตั้งแต่ระดับภาษาเขียนโปรแกรม จะลดภาระการตรวจจับและแก้ไขในภายหลัง”
หน่วยงานเหล่านี้แนะนำให้:
- หน่วยงานรัฐและบริษัทเอกชนเริ่มประเมินซอฟต์แวร์ที่ใช้อยู่ในปัจจุบันว่ามีความเสี่ยงจากปัญหา memory safety หรือไม่
- โครงการใหม่ควรออกแบบโดยใช้ภาษา memory-safe ตั้งแต่ต้น
- เพิ่มการฝึกอบรมนักพัฒนาเกี่ยวกับภาษาใหม่
- สนับสนุนการวิจัยและการสร้างเครื่องมือวิเคราะห์ความปลอดภัยของซอฟต์แวร์ (software metrology) เพื่อวัดและตรวจหาช่องโหว่เชิงโครงสร้างได้แม่นยำขึ้น
แม้จะไม่มีคำสั่งห้ามใช้ C/C++ โดยตรง แต่รัฐบาลสหรัฐฯ กำลังใช้ทั้งนโยบาย การลงทุน และการสื่อสารเพื่อผลักดันให้เกิดการเปลี่ยนผ่านอย่างเป็นระบบ