การใช้งาน sudo และ su ใน Rust มีวัตถุประสงค์เพื่อปรับปรุงความปลอดภัยในยูทิลิตี้เหล่านี้
เมื่อสามเดือนที่แล้วเราได้แชร์ข่าวการสร้างโปรเจกต์ "Sudo-rs"โดย ISRG ซึ่งเป็นผู้ก่อตั้งโครงการ Let's Encrypt และส่งเสริมการพัฒนาเทคโนโลยีเพื่อเพิ่มความปลอดภัยบนอินเทอร์เน็ต บนบล็อกนี้
ในเอกสารฉบับนั้นเราได้แบ่งปันรายละเอียดและลักษณะบางส่วนของโครงการ ซึ่งโดยพื้นฐานแล้วมีเป้าหมายเพื่อสร้างการใช้งานยูทิลิตี้ SUDO และ SU ในภาษา Rust (คุณสามารถดูเอกสารฉบับเต็มได้ที่ลิงก์ต่อไปนี้ )
sudo-rs เวอร์ชันเสถียรตัวแรก
เหตุผลที่กล่าวถึงเรื่องนี้ก็เพราะว่าเวอร์ชันเสถียรแรกของโปรเจกต์ Sudo-rs เพิ่งเปิดตัวไป เมื่อเร็ว ๆ นี้ โดยมีวิศวกรจาก Ferrous Systems และ Tweede Golf เข้าร่วมในการพัฒนา พร้อมกับได้รับการสนับสนุนด้านเงินทุนจาก Google, Cisco และ Amazon Web Services
สำหรับผู้ที่ไม่คุ้นเคยกับโครงการ "Sudo-rs" ผมขออธิบายว่าจุดประสงค์ของมันคือการพัฒนาโปรแกรม Rust เวอร์ชันของยูทิลิตี้ SUDO และ SUซึ่งออกแบบมาเพื่อเรียกใช้คำสั่งในนามของผู้ใช้รายอื่น เนื่องจาก SUDO เป็นยูทิลิตี้คอนโซลในระบบปฏิบัติการที่คล้าย Unix ที่เรียกใช้คำสั่งด้วยสิทธิ์ของผู้ใช้รายอื่น โดยค่าเริ่มต้นคือผู้ใช้ระดับสูงสุด root
ฟังก์ชัน `sudo` และ `su` ใน `sudo-rs` ถูกเขียนขึ้นใหม่ทั้งหมดด้วยภาษา Rustซึ่งเป็นภาษาที่ได้รับความนิยมและแนะนำมากขึ้นในอุตสาหกรรม เนื่องจากกลายเป็นหนึ่งในภาษาหลักสำหรับ Android และยังได้รับการสนับสนุนในฐานะภาษาโปรแกรมรองในเคอร์เนล Linux อีกด้วย ส่วน Microsoft เองก็เคยกล่าวถึงความตั้งใจที่จะเขียนเคอร์เนลและไลบรารี Windows บางส่วนขึ้นใหม่หลายครั้งเช่นกัน
มีการกล่าวถึงว่ายูทิลิตี้เหล่านี้สามารถใช้งานร่วมกับยูทิลิตี้ SUDO และ SU แบบคลาสสิกได้ทุกครั้งที่เป็นไปได้ ทำให้sudo-rs สามารถใช้เป็นตัวแทนของ SUDO ได้อย่างโปร่งใสในสถานการณ์ทั่วไปที่ตรงกับการกำหนดค่า /etc/sudoers เริ่มต้นใน Ubuntu และ Debian sudo-rs ได้ถูกนำมาใช้แทนที่แพ็คเกจ SUDO แบบดั้งเดิมในระบบปฏิบัติการ Wolfi Linux แล้ว โดยมีเป้าหมายเพื่อให้ความปลอดภัยในระดับสูงสุด
การใช้ภาษา Rust ในการพัฒนา SU และ SUDO มีจุดประสงค์เพื่อลดความเสี่ยงจากช่องโหว่ที่เกิดจากการจัดการหน่วยความจำที่ไม่ปลอดภัย และขจัดข้อผิดพลาดต่างๆ เช่น การเข้าถึงพื้นที่หน่วยความจำหลังจากที่ได้ถูกปล่อยไปแล้ว และหน่วยความจำหมดที่ขอบเขตของบัฟเฟอร์
นอกจากนี้ เพื่อให้มั่นใจได้ถึงระดับความปลอดภัยที่เหมาะสมโครงการได้พัฒนาชุดการทดสอบที่ครอบคลุมมากขึ้นซึ่งช่วยให้สามารถตรวจสอบการรักษาความเข้ากันได้ในระดับที่ต้องการกับยูทิลิตี้ sudo ดั้งเดิมได้ด้วย เพื่อลดพื้นที่การโจมตีและจำนวนช่องโหว่ที่อาจเกิดขึ้นใน sudo-rs จึงตัดสินใจยกเลิกการใช้งานฟังก์ชัน sudo ที่ไม่ค่อยได้ใช้
ในบรรดาความแตกต่างจาก SUDOนั้น มีการกล่าวถึงการรวมโหมด use_pty เป็นค่าเริ่มต้นไว้ด้วย ส่วนคุณสมบัติที่ยังไม่ได้นำมาใช้งานอย่างแท้จริง ได้แก่ mail_badpassและความเข้ากันได้กับ sendmail ขณะที่คุณสมบัติที่ยังไม่ได้นำมาใช้งาน แต่จะเพิ่มเข้ามาในอนาคต ได้แก่ ยูทิลิตี้ sudoedit โหมด NOEXEC และ NOINTERCEPT การสนับสนุนการเชื่อมโยงบล็อกการกำหนดค่า "ค่าเริ่มต้น" กับผู้ใช้และคำสั่งแต่ละราย และความสามารถในการตรวจสอบสิทธิ์โดยไม่ต้องใช้ PAM
เป็นที่น่าสังเกตว่าในเดือนกันยายนนี้คาดว่าจะสามารถยืนยันคุณภาพของการใช้งานได้และมีการวางแผนการตรวจสอบฐานโค้ด sudo-rs ที่เป็นอิสระด้วย
นอกจากนี้ ยังมีการกล่าวถึงว่าเวอร์ชันที่สองวางแผนที่จะเพิ่มเครื่องมือสำหรับการทำงานในสภาพแวดล้อมแบบผู้ใช้หลายคนเช่น โหมด NOEXEC บันทึกการตรวจสอบ ความสามารถในการแมปโฮสต์สำหรับผู้ใช้ sudoและการรองรับกลุ่มผู้ใช้ได้มากถึง 16 กลุ่ม เวอร์ชันที่สามวางแผนที่จะเข้ากันได้กับ การกำหนดค่า sudoersที่ใช้ใน Fedora และจะเพิ่ม ยูทิลิตี้ sudoeditและใช้กลไก SELinux และ AppArmor เพื่อเพิ่มความปลอดภัย
สุดท้ายนี้หากคุณสนใจเรียนรู้เพิ่มเติมเกี่ยวกับเรื่องนี้คุณสามารถดูรายละเอียดได้ที่ลิงก์ต่อไปนี้