- ใน Ubuntu 25.10 เกิดปัญหา ฟังก์ชันอัปเดตอัตโนมัติของบางระบบไม่ทำงาน เนื่องจากบั๊กในคำสั่ง
date ของ coreutils (uutils) ที่เขียนด้วย Rust
- พบบั๊กนี้ใน แพ็กเกจ rust-coreutils เวอร์ชัน 0.2.2-0ubuntu2 หรือต่ำกว่า และได้รับการแก้ไขแล้วใน เวอร์ชัน 0.2.2-0ubuntu2.1 ขึ้นไป
- ปัญหานี้ส่งผลต่อทั้ง การติดตั้งบนคลาวด์, อิมเมจคอนเทนเนอร์, เดสก์ท็อป และเซิร์ฟเวอร์ แต่ ไม่กระทบการอัปเดตแบบแมนนวล ผ่านคำสั่ง
apt
- Ubuntu กำลังทดสอบการเปลี่ยนผ่านไปใช้ ยูทิลิตีที่พัฒนาด้วย Rust (uutils, sudo-rs) ในรีลีสนี้ เพื่อประเมินความเป็นไปได้ในการนำไปใช้กับ เวอร์ชันระยะยาว (LTS) ในปีหน้า
- เหตุการณ์ครั้งนี้สะท้อนให้เห็นถึง ความจำเป็นของการตรวจสอบเสถียรภาพในกระบวนการเปลี่ยนผ่านสู่ Rust และให้ข้อสังเกตสำคัญต่อกลยุทธ์ด้านความปลอดภัยและการบำรุงรักษาของดิสทริบิวชันในอนาคต
ภาพรวมของปัญหาการอัปเดตอัตโนมัติใน Ubuntu 25.10
- โครงการ Ubuntu ประกาศอย่างเป็นทางการว่ามีปัญหาที่ทำให้บางระบบไม่สามารถตรวจสอบการอัปเดตโดยอัตโนมัติได้ เนื่องจาก บั๊กในคำสั่ง
date ของ uutils ที่พัฒนาด้วย Rust
- ระบบที่ได้รับผลกระทบรวมถึง สภาพแวดล้อมการติดตั้งบนคลาวด์, อิมเมจคอนเทนเนอร์, ชุดติดตั้ง Ubuntu Desktop และ Server
- เมื่อการตรวจสอบอัปเดตอัตโนมัติล้มเหลว จึงมี ความเสี่ยงที่แพตช์ความปลอดภัยและการอัปเดตซอฟต์แวร์จะล่าช้า
- ทีมความปลอดภัยของ Ubuntu ได้เผยแพร่ประกาศพร้อม วิธีแก้ไข (remediation instructions)
- ผู้ใช้ต้อง อัปเดตแพ็กเกจ rust-coreutils เป็นเวอร์ชัน 0.2.2-0ubuntu2.1 ขึ้นไป จึงจะแก้ปัญหาได้
- บั๊กนี้ ส่งผลเฉพาะกับกระบวนการอัปเดตอัตโนมัติเท่านั้น และไม่กระทบคำสั่ง
apt หรือเครื่องมืออัปเดตแบบแมนนวลอื่น ๆ
สาเหตุของบั๊กและขอบเขตผลกระทบ
- มีการวิเคราะห์ว่าสาเหตุของปัญหามาจากคำสั่ง
date ใน coreutils (uutils) ที่ถูกเขียนใหม่ด้วย Rust ซึ่ง ทำให้เกิดข้อผิดพลาดระหว่างกระบวนการจัดการเวลาของระบบ
- ส่งผลให้ตัวตั้งเวลาอัปเดตอัตโนมัติ คำนวณวันที่ได้ไม่ถูกต้อง และขั้นตอนตรวจสอบอัปเดตหยุดทำงาน
- ขอบเขตผลกระทบครอบคลุม ทุกรูปแบบการแจกจ่ายของ Ubuntu 25.10 โดยเฉพาะ สภาพแวดล้อมเซิร์ฟเวอร์อัตโนมัติและอินสแตนซ์บนคลาวด์ ที่อาจเสี่ยงต่อการหยุดชะงักของการดำเนินงาน
- Ubuntu รับรู้จากปัญหาครั้งนี้ถึง ความจำเป็นในการเพิ่มความเข้มงวดของกระบวนการตรวจสอบเสถียรภาพของยูทิลิตีระบบที่พัฒนาด้วย Rust
การเปลี่ยนผ่านสู่ยูทิลิตีที่พัฒนาด้วย Rust (โครงการ “Oxidize”)
- Ubuntu กำลังผลักดัน โครงการ “oxidize” ในรีลีส 25.10 โดยทดลองแทนที่ coreutils แบบเดิมที่พัฒนาด้วย C ด้วย uutils ที่พัฒนาด้วย Rust
- พร้อมกันนั้นยังนำ sudo เวอร์ชัน Rust (
sudo-rs) มาใช้ด้วย โดยมีเป้าหมายเพื่อเพิ่มความปลอดภัยและความปลอดภัยของหน่วยความจำ
- โครงการนี้เป็นขั้นตอนทดสอบเพื่อประเมินว่าสามารถรวมยูทิลิตีที่พัฒนาด้วย Rust เข้าไว้ใน รีลีส LTS ที่มีกำหนดในเดือนเมษายน 2026 ได้หรือไม่
- LWN เคยกล่าวถึงโครงการนี้มาแล้วในเดือนมีนาคม 2025 และวิเคราะห์ว่า การนำ Rust มาใช้อาจส่งผลอย่างไรต่อเสถียรภาพเชิงโครงสร้างของดิสทริบิวชันลินุกซ์
เวอร์ชันที่แก้ไขแล้วและแนวทางรับมือ
- ตามประกาศด้านความปลอดภัยของ Ubuntu พบว่าปัญหานี้มีอยู่ใน rust-coreutils เวอร์ชัน 0.2.2-0ubuntu2 หรือต่ำกว่า
- เมื่ออัปเดตเป็น เวอร์ชัน 0.2.2-0ubuntu2.1 ขึ้นไป บั๊กจะได้รับการแก้ไข
- ผู้ใช้สามารถอัปเดตแพ็กเกจแบบแมนนวลได้ด้วยคำสั่ง
apt update && apt upgrade
- จนกว่าฟังก์ชันอัปเดตอัตโนมัติจะกลับมาทำงานได้ตามปกติ จึงแนะนำให้ ตรวจสอบและอัปเดตด้วยตนเองเป็นประจำ
นัยสำคัญและแนวโน้มในอนาคต
- เหตุการณ์ครั้งนี้ถูกมองว่าเป็นตัวอย่างของ ความไม่เสถียรในระยะแรกของกระบวนการเปลี่ยนผ่านสู่ Rust
- สะท้อนว่า การนำ Rust มาใช้เพื่อเพิ่มความปลอดภัยของหน่วยความจำและความมั่นคงปลอดภัยนั้น ต้องดำเนินควบคู่ไปกับ การตรวจสอบเสถียรภาพเชิงการทำงาน
- การทดลองของ Ubuntu อาจเร่งให้เกิด กระแสการนำ Rust มาใช้ในดิสทริบิวชันลินุกซ์โดยรวม
- หากยูทิลิตีที่พัฒนาด้วย Rust สามารถถูกรวมเข้ากับรีลีส LTS ในอนาคตได้อย่างเสถียร ก็มีแนวโน้มว่าจะช่วย ยกระดับความปลอดภัยของระบบและประสิทธิภาพในการบำรุงรักษา
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ฉันคิดว่าการพบปัญหาได้ตั้งแต่เนิ่นๆแบบนี้ก็โอเค
ถ้าจัดการให้เรียบร้อยก่อนออก LTS ก็ไม่มีปัญหา
ดูจากกราฟความเข้ากันได้ของชุดทดสอบของ uutils/coreutils ก็ยังไม่สมบูรณ์
โดยเฉพาะ
dateผ่านการทดสอบแค่ 2 รายการ ข้ามไป 3 และผิดพลาด 3สภาพแบบนี้ฉันไม่คิดว่าจะเรียกว่าพร้อมใช้งานจริงในโปรดักชันได้
บั๊กแบบนี้อาจดูเล็กน้อยสำหรับผู้ใช้รายบุคคล แต่ในสภาพแวดล้อมขนาดใหญ่ถือว่าร้ายแรง
วันนี้ฉันเสียเวลาทั้งวันไปกับการดีบัก จนสุดท้ายพบว่าระบบกำลังส่งข้อมูลไปยังที่ที่ถูกห้ามไว้อย่างชัดเจน
ผลคือทั้งระบบหยุดชะงัก และเมื่อเครื่องมือที่พึ่งพาอยู่พัง การจัดการมันยากมากจริงๆ
ถ้าไม่ใช่ Rust นักพัฒนาคงโดนวิจารณ์อย่างหนักไปแล้ว
สงสัยว่า coreutils เดิมมีปัญหามากจนต้องปรับปรุงหรือเปล่า
บทความที่เกี่ยวข้อง: เมลลิงลิสต์ OpenBSD
dateไม่ได้อยากหาลิงก์แพตช์ใน uutils
บั๊กหลักคือยังไม่ได้ implement การรองรับ
date -r <file>แต่ Ubuntu ดันรวมเวอร์ชันนั้นเข้าไปแล้วคำสั่งดังกล่าวเมินออปชัน
-rแบบเงียบๆ และไม่ทำอะไรเลยissue ที่เกี่ยวข้อง: #8621, PR #8630
คอมมิตล่าสุด(ลิงก์) เป็นการแก้ให้การ parse
dateตรงกับ GNU แต่ดูจากคอมเมนต์อื่นๆ สาเหตุอาจไม่ใช่อันนั้นคอมเมนต์บนสุดตลกดี — บอกว่า Ubuntu รุ่นถัดไปจะชื่อ Grateful Guinea-Pig
ดูจาก changelog ของ Ubuntu บั๊กนี้เกี่ยวกับ
date -rเมื่อดูที่ changelog, บั๊กรายงาน, issue, PR
date -rควรจะแสดงเวลาที่ไฟล์ถูกแก้ไข แต่เวอร์ชัน Rust กลับเมินมันไปเฉยๆการขาดพฤติกรรมพื้นฐานแบบนี้น่าผิดหวังสำหรับโครงการที่อ้างตัวว่าเป็น “ตัวแทนที่ปลอดภัย”
ประกาศความปลอดภัยของ Ubuntu — ดูเหมือนเป็นกรณีตัวอย่างเลย
รู้สึกว่า Ubuntu 25.10 ใช้งานไม่ได้ถึงขั้นรับไม่ไหว นี่เป็นครั้งแรกที่พูดแบบนี้กับรุ่นที่ไม่ใช่ LTS
เห็นด้วยกับคำพูดที่ว่า “การเขียนยูทิลิตี C ที่ผ่านการพิสูจน์มาหลายทศวรรษใหม่ด้วย Rust อาจดีในระยะยาว แต่ปัญหาระยะสั้นนั้นคาดการณ์ได้อยู่แล้ว”
แต่ก็สงสัยว่า “ระยะยาว” หมายถึงนานแค่ไหน
ในงาน FOSDEM นักพัฒนา uutils ยังอ้างว่าประสิทธิภาพดีกว่าจากเบนช์มาร์กที่ผิดพลาด ซึ่งจริงๆ แล้วเป็นเพราะยังไม่รองรับ locale นี่ก็เป็นปัญหาเหมือนกัน
ลิงก์ที่เกี่ยวข้อง: งานนำเสนอ FOSDEM, เธรด1, เธรด2
เพราะการเขียนยูทิลิตีแกนหลักใหม่เป็นแต้มต่อในพอร์ตโฟลิโออย่างมาก
อยากรู้เกี่ยวกับ guided state-space exploration หรือเทคนิคใหม่ๆ ของ fuzzing
ถ้ามี implementation เดิมอยู่แล้ว ก็ดูเหมือนว่า fuzzer น่าจะเทียบพฤติกรรมของสองเวอร์ชันเพื่อทำการตรวจสอบแบบ white-boxได้
การเขียน proptest ให้ครอบคลุม input space ทั้งหมดคงต้องใช้แรงเยอะ แต่ถ้าอาร์กิวเมนต์ของ CLI ค่อนข้างเสถียรก็พอเป็นไปได้
อาจสร้างอัตโนมัติจากเอกสารอย่าง man page ได้ด้วย
ใน Rust ก็น่าจะใช้ crate
proptestส่วนการตรวจความต่างของ CLI ใช้ Hypothesis ของ Python ผ่านการเรียกภายนอกก็น่าจะดี