พบช่องโหว่ sudo ใน Linux สามารถใช้สิทธิ์ root ได้โดยใส่ user ID เป็น -1 หรือ 4294967295

wave

พบช่องโหว่ sudo ใน Linux สามารถใช้สิทธิ์ root ได้โดยใส่ user ID เป็น -1 หรือ 4294967295

Programmer Thailand 15 ต.ค. 2019 23:59:00 2,204

นักวิจัยด้านความมั่นคงปลอดภัยจากบริษัท Apple ได้รายงานช่องโหว่ในโปรแกรม sudo บน Linux โดยพบข้อผิดพลาดในฟังก์ชันการแปลงค่าตัวเลขซึ่งอาจทำให้ผู้ใช้ที่ไม่ได้รับอนุญาตสามารถสั่ง sudo ด้วยสิทธิ์ของ root ได้

ในกระบวนการทำงานของ Linux ผู้ใช้ที่มีสิทธิ์สูงสุดในระบบคือผู้ใช้ที่ชื่อ 'root' ซึ่งมีรหัส user ID เท่ากับ 0 แต่โดยปกติแล้วเพื่อความปลอดภัย หากผู้ดูแลระบบต้องการให้ผู้ใช้อื่นที่มีสิทธิ์ในระดับผู้ใช้ทั่วไปสามารถใช้คำสั่งด้วยสิทธิ์ของ root ได้ จะไม่ได้ใช้วิธีให้รหัสผ่านของ root ไปโดยตรง แต่จะให้เรียกใช้งานผ่านคำสั่ง sudo ซึ่งเป็นการอนุญาตให้ผู้ใช้สั่งงานด้วยสิทธิ์ของ root ได้เฉพาะภายใต้คำสั่งที่กำหนด ซึ่งกระบวนการนี้สามารถทำได้โดยเพิ่มข้อมูลของผู้ใช้ดังกล่าวลงในไฟล์ /etc/sudoers

นอกจาก sudo จะสามารถใช้เพื่อให้ผู้ใช้ทั่วไปสามารถรันคำสั่งด้วยสิทธิ์ของ root ได้แล้ว ยังสามารถใช้เพื่อรันคำสั่งภายใต้สิทธิ์ของผู้ใช้อื่นได้ด้วย โดยใช้คำสั่ง sudo -u ตามด้วยชื่อผู้ใช้หรือรหัส ID ของผู้ใช้นั้น เช่น คำสั่ง sudo -u#1002 vim จะเป็นการเรียกโปรแกรม vim ขึ้นมาทำงานโดยใช้สิทธิ์ของผู้ใช้ที่มีรหัส user ID 1002 ทั้งนี้ ผู้ดูแลระบบสามารถกำหนดในไฟล์ /etc/sudoers ได้ว่าอนุญาตให้ผู้ใช้สามารถรันคำสั่งผ่าน sudo เพื่อให้ได้สิทธิ์ของผู้ใช้อื่นเท่านั้น แต่ไม่สามารถรันคำสั่งด้วยสิทธิ์ของ root ได้

อย่างไรก็ตาม นักวิจัยได้พบข้อผิดพลาดในฟังก์ชันการแปลงค่าตัวเลขของคำสั่ง sudo โดยหากระบุค่า user ID เป็น -1 หรือ 4294967295 (ซึ่งเป็นค่าสูงสุดของ unsigned 32-bit integer) ตัวฟังก์ชันจะแปลงค่านี้ให้เป็น 0 ซึ่งเป็นรหัส user ID ของ root ทำให้ผู้ใช้ที่ได้รับอนุญาตให้ใช้ sudo สามารถรันคำสั่งด้วยสิทธิ์ของ root ได้ถึงแม้จะไม่ได้รับอนุญาตให้ได้สิทธิ์ดังกล่าว ตัวอย่างเช่น คำสั่ง sudo -u#-1 id จะเป็นการเรียกโปรแกรม id เพื่อตรวจสอบข้อมูล user ID ของผู้ใช้ที่รันคำสั่งนี้ ซึ่งหากคำสั่งนี้ถูกรันบนระบบที่มีช่องโหว่ ผลลัพธ์จะแสดงค่า uid=0 ซึ่งหมายความว่าใช้สิทธิ์ของ root ในการรัน

ช่องทางการโจมตีผ่านช่องโหว่นี้สามารถทำได้โดยการเพิ่มข้อมูลในไฟล์ /etc/sudoers ให้ผู้ใช้ที่มีสิทธิ์ sudo สามารถเรียกโปรแกรมที่สามารถประมวลผลคำสั่งของระบบได้ (เช่น vim ซึ่งสามารถกด :! เพื่อรันคำสั่งอื่นๆ ของ shell ได้)

เนื่องจากช่องโหว่นี้มีผลกระทบกับระบบที่มีการตั้งค่าแบบเฉพาะ และวิธีการโจมตีให้สำเร็จต้องอาศัยองค์ประกอบหลายอย่าง ดังนั้นระดับความเสียหายจึงยังค่อนข้างจำกัด อย่างไรก็ตาม ปัจจุบันทางผู้พัฒนา Linux หลายรายได้ออกอัปเดต sudo เวอร์ชัน 1.8.28 มาเพื่อแก้ไขปัญหานี้แล้ว ผู้ดูแลระบบควรพิจารณาอัปเดตเพื่อลดความเสี่ยง

ที่มา : https://www.thaicert.or.th/newsbite/2019-10-15-01.html

ความคิดเห็น