- sudo-rs เขียนโปรแกรมใหม่ของเครื่องมือ sudo ในภาษา Rust เพื่อเพิ่มความปลอดภัยในการใช้หน่วยความจำโดยไม่เปลี่ยนแปลงพฤติกรรมภายนอกของเครื่องมือ
- ขณะนี้ตัวเลือก pwfeedback ถูกเปิดใช้งานโดยค่าเริ่มต้นแล้ว โดยจะแสดงเครื่องหมายดอกจันเมื่อพิมพ์รหัสผ่าน เพื่อปรับปรุงการใช้งานให้ดียิ่งขึ้น
- Ubuntu ใช้เวอร์ชันระดับกลาง เช่น 25.10 เพื่อทดสอบ coreutils และ sudo-rs ในภาษา Rust และแก้ไขข้อบกพร่องก่อนที่จะออกเวอร์ชัน LTS 26.04
- ชุมชนได้ตอบสนองต่อข้อผิดพลาดและช่องโหว่ต่างๆ อย่างรวดเร็ว ทำให้การเลิกใช้ลินุกซ์เป็นกระบวนการที่ค่อยเป็นค่อยไปและควบคุมได้
ถ้าคุณใช้ Linux มาสักพักแล้ว คุณคงคุ้นเคยกับการพิมพ์รหัสผ่านในเทอร์มินัลแล้วไม่เห็นอะไรเลยบนหน้าจอ ไม่มีจุด ไม่มีเครื่องหมายยัติภังค์ ไม่มีเครื่องหมายดอกจัน มีเพียงเคอร์เซอร์ที่กระพริบและคุณก็หวังว่าคุณจะไม่พิมพ์ผิด เอาล่ะ... ธรรมเนียมปฏิบัตินั้นเริ่มสั่นคลอนแล้ว เนื่องมาจาก sudo-rs และการเปลี่ยนแปลงต่างๆ ที่กำลังถูกทดสอบอยู่ใน Ubuntuซึ่งประสบการณ์การป้อนรหัสผ่านที่เครื่องเทอร์มินัลกำลังเปลี่ยนแปลงไปในเชิงสัญลักษณ์อย่างเห็นได้ชัด
สิ่งที่เกิดขึ้นไม่ใช่แค่การเปลี่ยนแปลงเล็กน้อยเท่านั้น เบื้องหลังเครื่องหมายดอกจันที่ดูเหมือนไม่มีพิษภัยเหล่านั้นซ่อนอยู่... การถกเถียงเกี่ยวกับความปลอดภัย ความสะดวกในการใช้งาน การหลั่งไหลเข้ามาของผู้ใช้จาก Windows อย่างมหาศาล และสิ่งที่เรียกว่า "การเสื่อมสภาพ" ของ Linuxกล่าวคือ การเขียนโค้ดส่วนประกอบสำคัญในภาษา Rust ใหม่ ลองมาดูกันให้ละเอียดขึ้นว่าเกิดอะไรขึ้นกับ sudo, sudo-rs ใน Ubuntu 26.04 และทำไมรายละเอียดเล็กๆ น้อยๆ นี้ถึงก่อให้เกิดความวุ่นวายในชุมชนได้มากขนาดนี้
sudo คืออะไร และทำไมเขาถึงไม่แสดงรหัสผ่าน?
คำสั่ง sudo เป็นหนึ่งในเครื่องมือที่คุณใช้งานแทบไม่ต้องคิดเลย ฟังก์ชันนี้ช่วยให้คุณสามารถดำเนินการด้านการดูแลระบบเฉพาะบางอย่างด้วยสิทธิ์ผู้ใช้ระดับสูงโดยไม่ต้องล็อกอินในฐานะ rootวิธีนี้สอดคล้องกับหลักการให้สิทธิ์ขั้นต่ำอย่างสมบูรณ์แบบ กล่าวคือ คุณใช้งานด้วยสิทธิ์ผู้ใช้ปกติ และยกระดับสิทธิ์เฉพาะเมื่อจำเป็นอย่างยิ่งเท่านั้น
ในระบบ Linux และ Unix คำสั่ง sudo ถูกใช้เป็นมาตรฐานในการติดตั้งแพ็กเกจ แก้ไขไฟล์ระบบ จัดการบริการ หรือเข้าถึงไดเร็กทอรีที่ได้รับการป้องกันมานานหลายทศวรรษ ตรงกันข้ามกับโมเดล Windows แบบดั้งเดิม ที่ผู้ใช้มักจะอยู่ในกลุ่มผู้ดูแลระบบและต้องพึ่งพา UAC (User Account Control)ในระบบลินุกซ์ แนวทางที่ใช้มักจะค่อนข้างอนุรักษ์นิยม คือ ผู้ใช้ทั่วไป สิทธิ์การใช้งานที่จำกัด และใช้คำสั่ง sudo เป็นครั้งคราวเมื่อจำเป็นเท่านั้น
ก่อนหน้านี้ เมื่อคุณรันคำสั่งเช่นนี้ sudo apt updateระบบจะขอรหัสผ่านผู้ใช้ของคุณ (หากคุณอยู่ในกลุ่มที่ได้รับอนุญาตให้ใช้ sudo) พฤติกรรมดั้งเดิมคือ ขณะพิมพ์รหัสผ่าน ไม่มีตัวอักษรใดปรากฏบนหน้าจอเลยไม่ต้องใส่จุด ไม่ต้องใส่เครื่องหมายดอกจัน ไม่มีอะไรทั้งนั้น มีแค่บรรทัดว่างๆ รอให้คุณกด Enter
การตัดสินใจครั้งนี้ไม่ใช่เรื่องฉับพลัน แนวคิดดั้งเดิมคือว่า การขาดการแสดงผลทางภาพทำให้ผู้สังเกตการณ์ไม่สามารถคาดเดาความยาวของรหัสผ่านได้ การนับสัญลักษณ์ ในทางทฤษฎีแล้ว ยิ่งคุณให้ข้อมูลแก่คนที่กำลังมองอยู่ข้างหลังคุณน้อยเท่าไหร่ (การแอบมองจากด้านหลังไหล่) ก็ยิ่งดีต่อความปลอดภัยมากขึ้นเท่านั้น
เมื่อเวลาผ่านไป พฤติกรรมดังกล่าวกลายเป็นเอกลักษณ์อย่างหนึ่งของโลกยูนิก: ถ้าคุณไม่เห็นอะไรเลยเมื่อพิมพ์คีย์ในเทอร์มินัล แสดงว่าทุกอย่างปกติดีอันที่จริง ผู้มีประสบการณ์หลายคนยังจำได้ว่าพวกเขาต้องอธิบายให้ผู้ใช้มือใหม่ฟังว่า "ไม่ต้องกังวล แค่พิมพ์ต่อไปเรื่อยๆ แม้ว่าคุณจะไม่เห็นอะไรเลย ระบบก็กำลังบันทึกอยู่"
การมาถึงของ sudo-rs: การเขียน sudo ใหม่ในภาษา Rust
เมื่อเวลาผ่านไป ชุมชนเริ่มตรวจสอบรหัสของเครื่องมือที่สำคัญที่สุดของระบบอย่างละเอียดถี่ถ้วน sudo เป็นส่วนประกอบที่มีความสำคัญอย่างยิ่ง มันทำงานด้วยสิทธิ์ระดับสูง และช่องโหว่ใดๆ ในการใช้งานอาจเปิดช่องทางให้เกิดการโจมตีที่ร้ายแรงมากได้ตามธรรมเนียมแล้ว คำสั่ง sudo ถูกเขียนด้วยภาษา C ซึ่งเป็นภาษาที่มีประสิทธิภาพสูง แต่มีแนวโน้มที่จะเกิดข้อผิดพลาดเกี่ยวกับหน่วยความจำหากไม่ได้เขียนโปรแกรมด้วยความระมัดระวังอย่างยิ่ง
นี่คือจุดที่ sudo-rs เข้ามามีบทบาท โครงการนี้คือ การนำคำสั่ง sudo มาใช้ใหม่ทั้งหมดโดยเขียนด้วยภาษา RustSudo เป็นภาษาที่ออกแบบมาโดยเฉพาะเพื่อลดความเสี่ยงด้านความปลอดภัยที่เกี่ยวข้องกับการจัดการหน่วยความจำ เช่น บัฟเฟอร์โอเวอร์โฟลว์ การใช้หน่วยความจำที่ไม่ได้เริ่มต้นใช้งาน การปล่อยหน่วยความจำซ้ำซ้อน เป็นต้น แนวคิดไม่ใช่การ "สร้าง" Sudo ขึ้นมาใหม่ แต่เป็นการนำเสนอพฤติกรรมภายนอกแบบเดียวกันด้วยโค้ดเบสที่ทันสมัยกว่า บำรุงรักษาได้ง่ายกว่า และที่สำคัญที่สุดคือมีความแข็งแกร่งกว่า
สิ่งที่เรียกว่า "การออกซิเดชัน" ของระบบ (เนื่องจากสีที่เป็นเอกลักษณ์ของสนิม) นั้นไม่ได้เกิดจากเหงื่อเพียงอย่างเดียว ตัวอย่างเช่น Canonical ได้ก้าวไปอีกขั้นใน Ubuntu 25.10 โดยการแทนที่ coreutils แบบคลาสสิกด้วย uutils coreutils ที่เขียนด้วยภาษา Rust และแนะนำคำสั่ง sudo-rs ซึ่งเป็นส่วนหนึ่งของกระบวนการปรับปรุงให้ทันสมัย นั่นหมายถึงการเขียนคำสั่งพื้นฐานใหม่ เช่น ls, cp, rm, mv, วันที่ หรือ cat โดยใช้ภาษา Rust โดยมีเป้าหมายเพื่อให้ประสบการณ์การใช้งานที่สม่ำเสมอและปลอดภัยยิ่งขึ้น แม้บนระบบปฏิบัติการอื่นๆ เช่น macOS หรือ Windows
มันเป็นสิ่งสำคัญที่จะเข้าใจว่า สนิมไม่ใช่ไม้กายสิทธิ์ที่จะขจัดข้อบกพร่องทั้งหมดได้มันให้ความปลอดภัยมากมายในทุกสิ่งที่เกี่ยวข้องกับหน่วยความจำ แต่ข้อผิดพลาดเชิงตรรกะยังคงเป็นไปได้ เช่น เงื่อนไขที่กำหนดไว้ไม่ดี การคำนวณที่ไม่ถูกต้อง ตัวเลือกที่จัดการไม่ดี... สิ่งนี้เห็นได้ชัดเจนจากปัญหาบางอย่างที่เกิดขึ้นในทั้ง uutils coreutils และ sudo-rs ใน Ubuntu 25.10
ถึงกระนั้น ความมุ่งมั่นที่มีต่อ Rust ก็ยังคงแข็งแกร่ง ปรัชญาของมันชัดเจน: หากคุณจะใช้งานเครื่องมือสำคัญด้วยสิทธิ์ระดับรูท ควรสร้างระบบที่มีความปลอดภัยสูงสุดเท่าที่จะเป็นไปได้และเหงื่อก็เข้ากับกลยุทธ์นั้นได้อย่างลงตัว
การเปลี่ยนแปลงของ pwfeedback: ตอนนี้เครื่องหมายดอกจันเป็นค่าเริ่มต้นเมื่อพิมพ์รหัสผ่าน

จุดที่ sudo-rs ก่อให้เกิดการพูดคุยมากที่สุด (และบางครั้งก็มีการโต้เถียงกันในฟอรัม) คือการเปลี่ยนแปลงที่ดูเหมือนเล็กน้อยในแวบแรก: เปิดใช้งานตัวเลือกให้แสดงเครื่องหมายดอกจันเมื่อพิมพ์รหัสผ่านโดยค่าเริ่มต้นพฤติกรรมนี้ถูกควบคุมด้วยการตั้งค่าที่เรียกว่า pwfeedbackซึ่งในคำสั่ง sudo แบบดั้งเดิมนั้นจะถูกปิดใช้งานอยู่
ด้วยการเปลี่ยนแปลงนี้ เมื่อผู้ใช้พิมพ์รหัสผ่านลงใน sudo-rs หน้าจอเทอร์มินัลจะแสดงเครื่องหมายดอกจันทุกครั้งที่กดปุ่มกล่าวอีกนัยหนึ่ง มันคล้ายคลึงกับสิ่งที่เกิดขึ้นในแบบฟอร์มบนเว็บ บนหน้าจอล็อกอินของระบบปฏิบัติการสมัยใหม่ หรือในช่องใส่รหัสผ่านทั่วไปของแอปพลิเคชันแบบกราฟิกใดๆ
เหตุผลจากผู้พัฒนา sudo-rs นั้นตรงไปตรงมามาก: การขาดการให้ข้อมูลป้อนกลับอย่างสิ้นเชิงทำให้ผู้ใช้ที่ไม่มีประสบการณ์รู้สึกสับสนสิ่งนี้มีประโยชน์อย่างยิ่งสำหรับผู้ที่มาจากระบบ Windows หรือสภาพแวดล้อมที่มีตัวบ่งชี้ทางภาพอยู่เสมอ การเห็นเครื่องหมายดอกจันปรากฏขึ้นจะทำให้รู้สึกว่าระบบกำลังตอบสนอง ไม่ได้ค้าง และการกดแป้นพิมพ์ของคุณได้รับการบันทึกแล้ว
ในขณะเดียวกัน พวกเขาก็อธิบายว่า การแสดงผลทางภาพนี้ไม่ได้เปิดเผยข้อมูลที่เป็นประโยชน์อย่างแท้จริงเกี่ยวกับรหัสผ่าน นอกเหนือจากความยาวโดยประมาณแล้ว ตัวอักษรจริงจะไม่แสดง เนื้อหาจะไม่ถูกเปิดเผย และในทางปฏิบัติ ผู้โจมตีที่ติดตั้งโปรแกรมดักจับการกดแป้นพิมพ์ไม่จำเป็นต้องเห็นเครื่องหมายดอกจัน: การบันทึกการกดแป้นพิมพ์โดยตรงก็เพียงพอแล้ว
การตัดสินใจครั้งนี้ก่อให้เกิดความขัดแย้ง โดยเฉพาะในกลุ่มผู้ใช้ลินุกซ์รุ่นเก่าที่คุ้นเคยกับพฤติกรรมแบบดั้งเดิมเป็นอย่างดี บางคนเชื่อว่ามีการลดระดับความปลอดภัยลงเล็กน้อยเพื่อแลกกับความสะดวกสบายเพียงอย่างเดียวในขณะที่บางคนชื่นชมที่ในที่สุดประสบการณ์ของผู้ใช้ก็ได้รับการให้ความสำคัญ ซึ่งเป็นสิ่งที่มักถูกมองข้ามไปในโลกของอุปกรณ์พกพา
Ubuntu 26.04 และการเปลี่ยนแปลงพฤติกรรมเริ่มต้น
Canonical รีบรับทราบเรื่องนี้ทันที ด้วยการมาถึงของ Ubuntu 26.04 LTS บริษัทต้องการ เพื่อทำให้ชีวิตง่ายขึ้นเล็กน้อยสำหรับผู้ใช้จำนวนมหาศาลที่ย้ายมาจาก Windows และพวกเขาต้องเผชิญกับสภาพแวดล้อมที่ตั้งแต่เริ่มต้นก็ดูท้าทายมากขึ้น หนึ่งในขั้นตอนในทิศทางนั้นก็คือการเปลี่ยนพฤติกรรมเริ่มต้นของ sudo ให้แสดงเครื่องหมายดอกจันเมื่อป้อนรหัสผ่าน
จนถึงปัจจุบัน ในเวอร์ชัน LTS เช่น Ubuntu 22.04 รหัสผ่านถูกป้อนโดย "ไม่มอง" โดยไม่มีสัญลักษณ์ใดๆ ปรากฏบนหน้าจออย่างไรก็ตาม ฟังก์ชัน pwfeedback มีมานานแล้ว โดยใครๆ ก็สามารถเปิดใช้งานได้โดยการแก้ไขการตั้งค่า sudo สิ่งที่จะเปลี่ยนแปลงคือ ในเวอร์ชัน LTS ใหม่นี้ ตัวเลือกนี้จะถูกเปิดใช้งานโดยค่าเริ่มต้น
อันที่จริง หากคุณต้องการใช้งาน Ubuntu เวอร์ชันปัจจุบันได้อย่างคล่องแคล่ว คุณสามารถทำได้ง่ายๆ ดังนี้: เปิดการตั้งค่า sudo ด้วย sudo visudo และรวมถึงเส้นนั้นด้วย Defaults pwfeedbackบันทึก ออก และหลังจากนั้น ทุกครั้งที่กดแป้นพิมพ์เพื่อป้อนรหัสผ่าน จะแสดงเครื่องหมายดอกจันบนหน้าจอเทอร์มินัล
Canonical ได้ชี้แจงว่า เป้าหมายหลักคือการปรับปรุงการใช้งานโดยไม่ลดทอนความปลอดภัยลงอย่างมีนัยสำคัญในทางปฏิบัติ แทบไม่มีอินเทอร์เฟซการป้อนรหัสผ่านอื่นใด (แม้แต่ในบริบท Linux อื่นๆ) ที่ทำงานเหมือนกับ sudo ดังนั้นการปรับประสบการณ์ให้สอดคล้องกับสิ่งที่ผู้ใช้ส่วนใหญ่คุ้นเคยอยู่แล้วจะช่วยลดความสับสนและข้อผิดพลาดที่ไม่จำเป็นลงได้
สำหรับผู้ที่ไม่ต้องการทราบรายละเอียดเกี่ยวกับเครื่องหมายดอกจัน วิธีแก้ปัญหาก็ง่ายเช่นกัน เพียงแค่เปิดไฟล์ /etc/sudoers ขึ้นมาใหม่ (โดยใช้ visudo เสมอ) แล้วเพิ่มข้อความต่อไปนี้ลงไป Defaults !pwfeedback เพื่อปิดใช้งานการแสดงผลภาพนั้นกล่าวอีกนัยหนึ่ง ระบบจะให้คุณเลือกได้ระหว่างประสบการณ์การใช้งานที่เป็นมิตรต่อผู้ใช้มากขึ้น หรือรูปแบบการใช้งานแบบคลาสสิกโดยไม่มีการบอกความยาว
การแสดงเครื่องหมายดอกจันนั้นทำให้ความปลอดภัยลดลงจริงหรือ?
ในทางทฤษฎีแล้ว ข้อโต้แย้งของผู้ที่ต้องการรักษาหน้าจอให้สะอาดนั้นมีเหตุผลอยู่บ้าง: หากมีการแสดงเครื่องหมายดอกจัน ผู้ที่มองจากหางตาจะสามารถนับได้ว่ามีสัญลักษณ์ปรากฏอยู่กี่ตัว และได้ไอเดียคร่าวๆ เกี่ยวกับความยาวของรหัสผ่าน เบาะแสนี้สามารถนำไปใช้ในการโจมตีแบบเดาสุ่ม หรือเป็นส่วนหนึ่งของกลยุทธ์วิศวกรรมสังคมที่ซับซ้อนกว่าได้
สถานการณ์ประเภทนี้เรียกว่า “การแอบมองจากด้านหลัง”คนที่คอยดูหน้าจอของคุณขณะที่คุณพิมพ์ ในสภาพแวดล้อมที่มีการใช้งานร่วมกัน เช่น สำนักงานแบบเปิด หรือมหาวิทยาลัย ความกังวลนี้ก็ไม่ใช่เรื่องไร้เหตุผลเสียทีเดียว การรู้ว่ารหัสผ่านมี 6, 10 หรือ 20 ตัวอักษร จะช่วยจำกัดขอบเขตการค้นหาผู้โจมตีที่มีแรงจูงใจได้
อย่างไรก็ตาม เมื่อเราพิจารณาถึงความเป็นจริงในชีวิตประจำวันแล้ว ผลกระทบมักค่อนข้างจำกัด โดยเฉพาะอย่างยิ่งกับอุปกรณ์ที่ใช้ในบ้านหรืออุปกรณ์ส่วนตัวระบบ บริการออนไลน์ และแอปพลิเคชันส่วนใหญ่แสดงจุดหรือเครื่องหมายดอกจันเมื่อป้อนรหัสผ่านมานานหลายปีแล้ว และนั่นไม่ได้หมายความว่าระบบเหล่านั้นไม่ปลอดภัยอย่างร้ายแรง
เครื่องหมายดอกจันบอกเพียงความยาวโดยประมาณ ไม่ใช่เนื้อหาของรหัสลับ ความเสี่ยงด้านความปลอดภัยที่เกี่ยวข้องกับคำสั่ง sudo นั้นส่วนใหญ่มาจากช่องโหว่ในโค้ด การตั้งค่าที่ไม่ถูกต้อง หรือการบริหารจัดการที่ไม่ดี ซึ่งขึ้นอยู่กับจำนวนเครื่องหมายดอกจันที่ปรากฏขึ้นขณะที่คุณพิมพ์
ผู้พัฒนา sudo-rs เองก็ยอมรับว่า ตามหลักแล้ว ความปลอดภัยตามทฤษฎีจะลดลงเล็กน้อยเมื่อเปิดเผยความยาวอย่างไรก็ตาม พวกเขามองว่าข้อเสียนี้ "น้อยมาก" เมื่อเทียบกับการปรับปรุงประสบการณ์การใช้งาน และเหนือสิ่งอื่นใด พวกเขาย้ำว่าใครก็ตามที่ไม่พอใจกับการเปลี่ยนแปลงนี้สามารถปิดใช้งานได้ง่ายๆ
ผู้ใช้ใหม่ ผู้ใช้เก่า และประสบการณ์การใช้งานเทอร์มินัล
การเปลี่ยนแปลงนี้ได้นำเอาความตึงเครียดที่คุกรุ่นมานานหลายปีในระบบนิเวศของลินุกซ์มาปรากฏให้เห็นอย่างชัดเจน: จะสร้างสมดุลระหว่างประเพณีและปรัชญาของ Unix กับการเข้ามาของผู้ใช้ที่ไม่ได้เติบโตมากับการใช้งานเทอร์มินัลได้อย่างไรสำหรับผู้ใช้งานที่มีประสบการณ์หลายคน การที่ไม่เห็นอะไรเลยขณะพิมพ์รหัสผ่านถือเป็นเรื่องปกติ ที่จริงแล้ว พวกเขายังจำได้ดีถึงช่วงเวลาที่ต้องอธิบายพฤติกรรมนี้ให้เพื่อนหรือเพื่อนร่วมงานที่เพิ่งเริ่มต้นใช้งานฟังด้วยซ้ำ
อย่างไรก็ตาม สำหรับผู้ใช้ที่เพิ่งเปลี่ยนจากระบบปฏิบัติการ Windows มาใช้ระบบนี้ อาจเป็นสาเหตุของความหงุดหงิดได้ ลองนึกภาพว่าคุณพิมพ์รหัสผ่านแล้วไม่เห็นอะไรเลย กด Enter แล้วเครื่องเทอร์มินัลตอบกลับว่า “รหัสผ่านไม่ถูกต้อง”คุณไม่รู้ว่าตัวเองพิมพ์ผิดหรือเปล่า แป้นพิมพ์ตั้งค่าไม่ถูกต้อง ระบบไม่บันทึกการกดแป้นพิมพ์หรือไม่... และสิ่งที่คุณเห็นก็คือบรรทัดว่างเปล่าซ้ำๆ
เครื่องหมายดอกจันเพียงอย่างเดียวไม่ได้ทำให้เทอร์มินัล "ใช้งานง่าย" แต่ก็ช่วยได้ในระดับหนึ่ง มันช่วยขจัดความรู้สึกว่างเปล่าและความลังเลใจเมื่อคุณเสียบกุญแจเข้าไปนี่เป็นการแสดงความเคารพเล็กๆ น้อยๆ ต่อผู้ที่เพิ่งเริ่มต้นใช้งานและยังไม่คุ้นเคยกับธรรมเนียมปฏิบัติของ Unix มากนัก
ระบบปฏิบัติการอย่าง Linux Mint มีมานานแล้ว พวกเขาเลือกที่จะแสดงเครื่องหมายดอกจันเมื่อพิมพ์รหัสผ่าน และโลกก็ไม่ได้แตกสลายในเมื่อ Ubuntu ซึ่งเป็นหนึ่งในดิสทริบิวชันยอดนิยมและเป็นประตูสู่โลกของระบบปฏิบัติการ Linux สำหรับผู้ใช้จำนวนมาก กำลังเข้าร่วมกระแสนี้ จึงเป็นเรื่องปกติที่การถกเถียงจะร้อนแรงขึ้น
ท้ายที่สุดแล้ว เรากำลังเผชิญหน้ากับ... ความขัดแย้งทางความคิด: ฝ่ายที่ให้ความสำคัญกับความปลอดภัยทางทฤษฎีทุกมิลลิเมตร กับฝ่ายที่ยอมรับการประนีประนอมเล็กน้อยเพื่อแลกกับการทำให้ระบบเข้าถึงได้ง่ายขึ้นเนื่องจากตัวเลือกแบบคลาสสิกยังคงมีอยู่และสามารถเรียกคืนได้ด้วยการเพิ่มบรรทัดในไฟล์ sudoers จึงดูเหมือนว่าจะมีทางออกที่ลงตัวสำหรับทั้งสองฝ่าย
นอกเหนือจากเครื่องหมายดอกจัน: การเกิดออกซิเดชันของ Ubuntu, coreutils ใน Rust และปัญหาที่ตรวจพบ
การเปลี่ยนแปลงที่เกิดขึ้นกับ pwfeedback ไม่ได้เกิดขึ้นโดยโดดเดี่ยว มันเป็นส่วนหนึ่งของบริบทที่ใหญ่กว่า: กลยุทธ์ "การออกซิเดชัน" ของ Ubuntu ซึ่งเกี่ยวข้องกับการเขียนยูทิลิตี้ที่สำคัญขึ้นใหม่ด้วยภาษา Rust เพื่อปรับปรุงความปลอดภัยและความสามารถในการบำรุงรักษาระบบในระยะยาว Ubuntu 25.10 ซึ่งเป็นเวอร์ชันกลาง ถูกนำมาใช้เป็นแพลตฟอร์มทดสอบเพื่อแนะนำทั้ง uutils, coreutils และ sudo-rs
Coreutils คือชุดคำสั่งพื้นฐานที่เราใช้เป็นประจำในเทอร์มินัล: คำสั่ง ls ใช้สำหรับแสดงรายการไฟล์, cp ใช้สำหรับคัดลอก, rm ใช้สำหรับลบ, mv ใช้สำหรับย้ายหรือเปลี่ยนชื่อไฟล์, date ใช้สำหรับทำงานกับวันที่และเวลา, cat ใช้สำหรับแสดงเนื้อหาของไฟล์หากไม่มีส่วนประกอบเหล่านี้ ระบบก็แทบจะใช้งานไม่ได้เลย โดยปกติแล้ว ส่วนประกอบเหล่านี้จะถูกเขียนด้วยภาษา C ภายใต้เครือข่าย GNU
ด้วย uutils coreutils แนวคิดคือการนำเสนอ การใช้งาน Rust ที่พกพาได้และมีความสม่ำเสมอในระบบปฏิบัติการต่างๆด้วยวิธีนี้ พฤติกรรมเดียวกันสามารถจำลองได้บน Linux, macOS และ Windows โดยใช้ประโยชน์จากข้อดีที่ Rust มอบให้ในด้านความปลอดภัยของหน่วยความจำ
อย่างไรก็ตาม การเปิดตัวครั้งแรกนั้นไม่ได้สมบูรณ์แบบ ตรวจพบข้อผิดพลาดที่สำคัญในคำสั่ง date ใน Ubuntu 25.10 โดยเฉพาะในตัวเลือก date -rตัวเลือกนี้ใช้เพื่อรับวันที่และเวลาของการแก้ไขไฟล์ครั้งล่าสุด ซึ่งเป็นข้อมูลที่ใช้ทั้งในและนอกไฟล์ สคริปต์สำรองข้อมูล เช่นเดียวกับระบบอัปเดตอัตโนมัติของ Ubuntu
ข้อผิดพลาดทำให้แสดงวันที่แก้ไขล่าสุดแทนที่จะเป็นวันที่แก้ไขจริง คำสั่ง `date -r` จะแสดงเวลาปัจจุบันเสมอมองเผินๆ อาจดูเหมือนเป็นข้อบกพร่องเล็กน้อย แต่ในทางปฏิบัติแล้วมันทำให้สองสิ่งสำคัญเสียหาย: สคริปต์สำรองข้อมูลบางตัวตีความว่าการสำรองข้อมูลเพิ่งทำไปเมื่อไม่นานมานี้ (และหยุดทำงาน) และระบบอัปเดตอัตโนมัติก็ใช้งานไม่ได้ ฉันคิดว่าการตรวจสอบครั้งล่าสุดเพิ่งเสร็จสิ้นไป จึงหยุดตรวจสอบการอัปเดตใหม่ ๆ.
จุดอ่อนในห้องอบไอน้ำและการตอบสนองของชุมชน
sudo-rs ก็ไม่รอดพ้นจากผลกระทบเช่นกัน พบช่องโหว่ที่สำคัญสองประการซึ่งส่งผลกระทบต่อวิธีการจัดการรหัสผ่านและเวลาในการตรวจสอบสิทธิ์ของเครื่องมือดังกล่าวแม้ว่าจะได้รับการแก้ไขอย่างรวดเร็ว แต่ข้อผิดพลาดเหล่านั้นก็เป็นเครื่องเตือนใจว่าไม่มีภาษาใดปราศจากข้อผิดพลาดทางตรรกะ
ช่องโหว่แรกเกี่ยวข้องกับระยะเวลาที่ sudo-rs รอให้ผู้ใช้ป้อนรหัสผ่านเสร็จสมบูรณ์ หากเวลาหมดลงขณะที่คุณกำลังพิมพ์และยังไม่ได้กด Enter ในบางการตั้งค่า ส่วนหนึ่งของรหัสผ่านอาจปรากฏเป็นข้อความธรรมดาบนหน้าจอคอนโซล ก่อนที่เชลล์จะแสดงข้อความแจ้งเตือนกลับมา
ลองนึกภาพว่าคุณโยน... sudo apt updateคุณเริ่มพิมพ์ “รหัสผ่านของฉัน…” แล้วก็ถูกดึงความสนใจไป หากเวลาหมดลงในขณะนั้น ข้อความบางส่วนที่คุณเขียนไว้สามารถแสดงผลกลับมาในเทอร์มินัลได้นี่เป็นการเปิดเผยข้อมูลที่ละเอียดอ่อน ซึ่งถือเป็นช่องโหว่ด้านความปลอดภัยที่ไม่สามารถยอมรับได้ในเครื่องมือที่สำคัญเช่นนี้
ช่องโหว่ที่สองนั้นเกี่ยวข้องกับ การนำข้อมูลประจำตัวไปใช้ซ้ำอย่างไม่เหมาะสมในบางการตั้งค่าโดยสรุปแล้ว ผู้โจมตีในพื้นที่สามารถใช้ประโยชน์จากช่วงเวลาที่ผู้ใช้ที่ได้รับการยืนยันตัวตนแล้วไม่จำเป็นต้องป้อนรหัสผ่านอีกครั้ง ซึ่งจะช่วยหลีกเลี่ยงการตรวจสอบที่คาดหวังและข้ามผ่านกลไกการป้องกันบางส่วนได้
ปัญหาทั้งสองได้รับการแก้ไขผ่านกระบวนการดังต่อไปนี้ การเปิดเผยช่องโหว่ที่ประสานงานกัน (CVD)หมายความว่า ข้อผิดพลาดต่างๆ ถูกรายงานเป็นการส่วนตัวไปยังผู้จัดการโครงการ มีการดำเนินการแก้ไขที่จำเป็น และหลังจากนั้นจึงได้เปิดเผยต่อสาธารณะพร้อมกับวิธีแก้ไขที่เกี่ยวข้อง
Canonical ตอบสนองอย่างรวดเร็ว โดยได้รวมการแก้ไขเข้าไว้ในเวอร์ชันใหม่แล้ว sudo-rs 0.2.8-1ubuntu5.2 และเผยแพร่ประกาศด้านความปลอดภัยเฉพาะ (USN-7867-1) เพื่อแจ้งให้ผู้ใช้ทราบ ในเวลาเดียวกัน แก้ไขข้อผิดพลาดเกี่ยวกับวันที่โดยการอัปเดตแพ็คเกจ rust-coreutils (เวอร์ชัน 0.2.2-0ubuntu2.1 หรือใหม่กว่า) ภายในไม่กี่ชั่วโมง ระบบอัปเดตอัตโนมัติก็จะกลับมาทำงานได้อย่างถูกต้องอีกครั้ง
บทบาทของเวอร์ชันระดับกลาง และสิ่งเหล่านี้บอกอะไรเราบ้างเกี่ยวกับอนาคตของ sudo
สิ่งที่เกิดขึ้นกับ Ubuntu 25.10 เป็นตัวอย่างที่ค่อนข้างชัดเจนว่ากระบวนการปรับปรุงให้ทันสมัยควรดำเนินไปอย่างไรในระบบปฏิบัติการขนาดใหญ่ เวอร์ชันระดับกลาง ซึ่งมีระยะเวลาสนับสนุนเพียงเก้าเดือนนั้น มีจุดประสงค์เพื่อใช้เป็นสนามทดสอบสำหรับการเปลี่ยนแปลงครั้งใหญ่โดยเฉพาะเพื่อให้สามารถตรวจจับและแก้ไขข้อผิดพลาดก่อนที่จะนำไปใช้ในระบบ LTS ที่ผู้คนหลายล้านคนจะใช้งานเป็นเวลาหลายปี
ในแง่นั้น ข้อเท็จจริงที่ว่าพบข้อบกพร่องใน uutils, coreutils และ sudo-rs จึงเป็นเรื่องที่น่าสนใจ นี่ไม่ใช่ความล้มเหลวเสียทีเดียว แต่เป็นการยืนยันถึงประสิทธิภาพของกระบวนการทดสอบมากกว่าพบข้อบกพร่องที่สำคัญและได้รับการแก้ไขอย่างรวดเร็ว อีกทั้งยังได้เพิ่มการทดสอบการถดถอยซึ่งไม่มีอยู่ใน GNU coreutils เวอร์ชันดั้งเดิมด้วย
นอกจากนี้ยังมีการเน้นย้ำถึงความสำคัญของชุมชนด้วย ปัญหาดังกล่าวถูกตรวจพบได้จากการรายงานพฤติกรรมที่ผิดปกติของผู้ใช้ และจากการตอบสนองอย่างเป็นระบบของนักพัฒนาความโปร่งใสและการตอบสนองอย่างรวดเร็วนั้นเป็นหนึ่งในจุดแข็งที่สำคัญของซอฟต์แวร์โอเพนซอร์สเมื่อต้องเผชิญกับการเปลี่ยนแปลงครั้งใหญ่
เมื่อมองไปข้างหน้าถึง Ubuntu 26.04 ทุกอย่างชี้ไปในทิศทางที่ดี เส้นทางสู่การใช้งาน sudo-rs อย่างแพร่หลายยังคงดำเนินต่อไป แม้ว่า Canonical จะใช้เวลาในการดำเนินการอย่างรอบคอบก็ตามสิ่งสำคัญอันดับแรกคือ เมื่อถึงเวอร์ชัน LTS (Long-Term Support) ทั้งประสิทธิภาพและความปลอดภัยจะต้องได้มาตรฐานที่คาดหวังได้จากเครื่องมือสำคัญเช่นนี้
ในขณะเดียวกัน การเปลี่ยนแปลงใน pwfeedback และการอภิปรายเกี่ยวกับเครื่องหมายดอกจันนั้นทำหน้าที่เป็นตัวชี้วัด: สิ่งเหล่านี้เตือนเราว่า ความปลอดภัยไม่ได้เป็นเพียงเรื่องของข้อมูลดิจิทัลเท่านั้น แต่ยังขึ้นอยู่กับวิธีการที่ผู้คนใช้เครื่องมือเหล่านั้นด้วยระบบที่ปลอดภัยแต่ไม่มีใครเข้าใจ หรือเกิดข้อผิดพลาดเนื่องจากความสับสนล้วนๆ ก็ไม่ใช่ระบบที่ดีเช่นกัน
การตั้งค่า sudo ที่น่าสนใจอื่นๆ: การด่าทอและการบล็อกหลังจากความพยายามล้มเหลว
นอกเหนือจาก pwfeedback แล้ว sudo ยังมีตัวเลือกการกำหนดค่าที่น่าสนใจอื่นๆ ที่แสดงให้เห็นว่าประสบการณ์การใช้งานนั้นสามารถปรับแต่งได้มากเพียงใด หนึ่งในตัวเลือกที่รู้จักกันดีที่สุดคือ “คำดูถูก”ซึ่งทำให้ Sudo พูดประโยคเสียดสีหรือเยาะเย้ยเมื่อคุณป้อนรหัสผ่านไม่ถูกต้อง
การเปิดใช้งานนั้นง่ายมาก เพียงแค่เปิดการตั้งค่าด้วย sudo visudo y เพิ่มบรรทัด Defaults insults ตรงไหนก็ได้ในไฟล์นับจากนั้นเป็นต้นไป ทุกครั้งที่คุณป้อนรหัสผ่านผิด sudo จะไม่เพียงแต่ปฏิเสธการป้อนรหัสผ่านเท่านั้น แต่ยังจะแสดงข้อความที่ไม่ค่อยเป็นมิตรอีกด้วย มันไม่ได้ช่วยเพิ่มความปลอดภัย แต่ก็เพิ่มอารมณ์ขันเล็กน้อยให้กับเทอร์มินัล
อย่างไรก็ตาม เราควรพิจารณาส่วนประกอบอีกชิ้นหนึ่งของปริศนานี้ด้วย: การเปลี่ยนแปลงล่าสุดของ PAM (Pluggable Authentication Modules) อาจทำให้ระบบบล็อกการเข้าสู่ระบบเป็นระยะเวลาหนึ่งหลังจากป้อนรหัสผ่านผิดหลายครั้งตัวอย่างเช่น หลังจากป้อนข้อผิดพลาดติดต่อกันสามครั้ง คุณอาจไม่สามารถเข้าสู่ระบบได้เป็นเวลา 15 นาที
การบล็อกนี้ไม่ได้ขึ้นอยู่กับตัวเลือกการดูหมิ่น แต่ขึ้นอยู่กับการตั้งค่า PAM ในระบบของคุณ แนวคิดคือการทำให้การโจมตีแบบเดาพาสเวิร์ด (brute-force attack) ทำได้ยากขึ้น ซึ่งผู้โจมตีจะลองใส่พาสเวิร์ดซ้ำแล้วซ้ำเล่าจนกว่าจะเจอพาสเวิร์ดที่ถูกต้องในทางกลับกัน หากคุณเป็นฝ่ายทำผิดพลาด คุณจะต้องรอหรือรีสตาร์ทคอมพิวเตอร์เพื่อลองใหม่อีกครั้ง ขึ้นอยู่กับการตั้งค่าของเครื่องนั้นๆ
เมื่อนำทั้งหมดนี้มารวมกันแล้ว ก็เห็นได้ชัดว่า sudo และระบบนิเวศของมันมีตัวเลือกการกำหนดค่ามากมาย ตั้งแต่การตั้งค่าความปลอดภัยขั้นสูงไปจนถึงรายละเอียดเล็กๆ น้อยๆ ด้านความสวยงามหรืออารมณ์ขัน`.pwfeedback` และเครื่องหมายดอกจันจัดอยู่ในประเภทของการตัดสินใจแบบเดียวกัน กล่าวคือ พวกมันไม่ได้เปลี่ยนแปลงสาระสำคัญของ `sudo` แต่พวกมันเปลี่ยนแปลงวิธีการที่เราโต้ตอบกับมัน
ความเคลื่อนไหวทั้งหมดที่เกิดขึ้นรอบๆ sudo-rs, pwfeedback, การพัฒนาของ Ubuntu และการถกเถียงเรื่องเครื่องหมายดอกจัน สะท้อนให้เห็นถึงช่วงเวลาแห่งการเปลี่ยนแปลงในระบบนิเวศของ Linux: ส่วนสำคัญของ Rust กำลังถูกเขียนใหม่เพื่อปรับปรุงความปลอดภัยในการใช้หน่วยความจำ กระบวนการทดสอบกำลังได้รับการปรับปรุงในเวอร์ชันระหว่างกลาง และในขณะเดียวกัน ก็มีการพยายามทำให้ประสบการณ์การใช้งานของผู้ใช้เข้าใจง่ายขึ้นโดยไม่ลดทอนการควบคุมการเห็นเครื่องหมายดอกจันเมื่อพิมพ์รหัสผ่านใน sudo อาจดูเหมือนเรื่องเล็กน้อย แต่เบื้องหลังนั้นคือวิธีทำความเข้าใจที่แตกต่างออกไปว่าระบบที่ปลอดภัยควรเป็นอย่างไร: ไม่เพียงแต่ได้รับการปกป้องจากภายในเท่านั้น แต่ยังต้องเข้าใจง่ายและสมเหตุสมผลสำหรับผู้ที่ใช้งานทุกวันด้วย
นักเขียนผู้หลงใหลเกี่ยวกับโลกแห่งไบต์และเทคโนโลยีโดยทั่วไป ฉันชอบแบ่งปันความรู้ผ่านการเขียน และนั่นคือสิ่งที่ฉันจะทำในบล็อกนี้ เพื่อแสดงให้คุณเห็นสิ่งที่น่าสนใจที่สุดเกี่ยวกับอุปกรณ์ ซอฟต์แวร์ ฮาร์ดแวร์ แนวโน้มทางเทคโนโลยี และอื่นๆ เป้าหมายของฉันคือการช่วยคุณนำทางโลกดิจิทัลด้วยวิธีที่เรียบง่ายและสนุกสนาน