Privilege Escalation คืออะไร และผู้ใช้ทั่วไปยกระดับเป็น root ได้อย่างไร
เจาะลึกกลไก Privilege Escalation ช่องโหว่และการยกระดับสิทธิ์ในระบบปฏิบัติการ จากบัญชีผู้ใช้ธรรมดาสู่การควบคุมระบบระดับสูงสุด

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- Privilege Escalation คือการที่ผู้ใช้ที่มีสิทธิ์จำกัดเข้าถึงอำนาจระดับสูงกว่าโดยไม่ได้รับอนุญาต
- แบ่งเป็น Vertical Escalation ขยับสิทธิ์ขึ้น และ Horizontal Escalation ย้ายระนาบสิทธิ์
- หลักการ Least Privilege ช่วยจำกัดสิทธิ์แต่ละบัญชีเฉพาะที่จำเป็นต้องใช้งานเท่านั้น
- ความผิดพลาดจากการตั้งค่าและช่องโหว่ในโปรแกรม SUID คือสาเหตุหลักของการยกระดับสิทธิ์
เมื่อคุณเข้าใช้งานเครื่องคอมพิวเตอร์ได้แล้ว ปัญหาคือคุณควรจะมีสิทธิ์เข้าถึงได้เพียงบางส่วนเท่านั้น คุณสามารถอ่านไฟล์ของตัวเอง รันโปรแกรม หรือใช้งานเครือข่ายได้ แต่ไม่สามารถเปิดไฟล์ของผู้อื่น แก้ไขค่าคอนฟิกูเรชันของระบบ ติดตั้งซอฟต์แวร์แบบทั่วถึง หรือเปลี่ยนพฤติกรรมของเคอร์เนลได้ สิ่งเหล่านี้ต้องอาศัยสิทธิ์ที่คุณไม่มี
Privilege Escalation หรือการยกระดับสิทธิ์ คือสิ่งที่เกิดขึ้นเมื่อเส้นแบ่งเขตนั้นพังทลายลง ผู้โจมตีที่เริ่มต้นด้วยสิทธิ์จำกัดกลับได้อำนาจมากกว่าที่ควรจะเป็น การจะเข้าใจสิ่งนี้ได้ต้องทำความเข้าใจก่อนว่าสิทธิ์คืออะไรและเหตุใดระบบปฏิบัติการจึงต้องบังคับใช้มัน
สิทธิ์คือการอนุญาตให้ทำ1 การกระทำที่ระบบไม่อนุญาตโดยค่าเริ่มต้น กระบวนการทั่วไปจะทำงานภายใต้บัญชีผู้ใช้ที่มีการจำกัดสิทธิ์ พวกมันสามารถโต้ตอบกับทรัพยากรที่เจ้าของเข้าถึงได้เท่านั้น ในขณะที่บัญชีที่มีสิทธิ์สามารถข้ามขอบเขตนั้นได้ เช่น ติดตั้งซอฟต์แวร์ อ่านไฟล์ใดๆ จัดการผู้ใช้รายอื่น หรือเปลี่ยนค่าคอนฟิกูเรชันระบบ
ทุกระบบปฏิบัติการแยกแยะระดับการเข้าถึงเหล่านี้เพราะความไว้วางใจไม่ใช่เรื่องขาวกับดำ ผู้ใช้ทุกคนไม่ควรทำได้ทุกอย่าง และโปรแกรมทุกโปรแกรมก็ไม่จำเป็นต้องเข้าถึงทุกทรัพยากร การแยกสิทธิ์คือกลไกที่บังคับใช้กฎนี้

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
การยกระดับสิทธิ์เกิดขึ้นเมื่อตัวละครที่ควรจะทำงานในระดับสิทธิ์หนึ่ง กลับไปทำงานในระดับที่สูงกว่าโดยไม่มีสิทธิ์นั้น โดยสามารถแบ่งออกได้เป็น 2 ประเภทหลักๆ ดังนี้ครับ
- Vertical Escalation: การขยับขึ้นไปตามลำดับชั้นสิทธิ์ เช่น จากบัญชีผู้ใช้ปกติเลื่อนขึ้นไปเป็น Administrator หรือ root ซึ่งเป็นรูปแบบที่รู้จักกันมากที่สุด
- Horizontal Escalation: การย้ายระนาบข้ามบัญชีในระดับสิทธิ์เดียวกัน เช่น บัญชีผู้ใช้ A เข้าถึงไฟล์หรือข้อมูลของบัญชีผู้ใช้ B แม้ทั้งคู่จะเป็นผู้ใช้ธรรมดาก็ตาม
หลักการ Least Privilege หรือหลักการให้สิทธิ์น้อยที่สุด ถือเป็นแนวคิดรากฐานด้านความปลอดภัยที่เก่าแก่ที่สุดข้อหนึ่ง การกำหนดสิทธิ์ให้แต่ละกระบวนการมีเฉพาะสิ่งที่จำเป็นต้องใช้ในการทำงานเท่านั้น ช่วยลดความเสียหายได้อย่างมหาศาล หากเกิดช่องโหว่ขึ้นในระบบส่วนใดส่วนหนึ่ง ผู้โจมตีจะไม่สามารถควบคุมทั้งระบบได้ทันที เนื่องจากถูกจำกัดขอบเขตไว้แล้วนั่นเอง
การยกระดับสิทธิ์ไม่ได้มาจากเทคนิคเดียว แต่มันเป็นผลลัพธ์ที่เกิดจากสาเหตุรากฐานที่แตกต่างกันอย่างสิ้นเชิง โดยสาเหตุที่พบบ่อยที่สุดคือความผิดพลาดในการตั้งค่า เช่น การกำหนดสิทธิ์ของบริการหรือไฟล์กว้างเกินความจำเป็น หรือไดเรกทอรีที่ผู้ใช้ทุกคนเขียนทับได้ ซึ่งสิ่งเหล่านี้ไม่ใช่บั๊กของซอฟต์แวร์แต่เป็นความผิดพลาดของผู้ดูแลระบบ
ในระบบ Linux มีกลไกที่เรียกว่า setuid bit (SUID) ซึ่งโปรแกรมที่ตั้งค่านี้จะรันด้วยตัวตนของผู้ใช้ที่เป็นเจ้าของ ไม่ใช่ผู้ใช้ที่สั่งรันโปรแกรม เช่น คำสั่ง passwd ที่ผู้ใช้ธรรมดาต้องใช้เปลี่ยนรหัสผ่านแต่ต้องเขียนทับไฟล์ระบบที่ root เท่านั้นที่แก้ได้ ตัวกลไกนี้มีความจำเป็นและถูกต้องตามกฎ แต่ปัญหาจะเกิดขึ้นเมื่อโปรแกรม SUID มีข้อบกพร่องด้านความปลอดภัยจนถูกนำไปใช้เป็นสะพานข้ามขอบเขตสิทธิ์
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น