Linux Kernel 5.13 เปิดตัวการแก้ไขความปลอดภัยครั้งใหญ่สำหรับช่องโหว่ Core Dump

ทีมบรรณาธิการ BigGo
Linux Kernel 5.13 เปิดตัวการแก้ไขความปลอดภัยครั้งใหญ่สำหรับช่องโหว่ Core Dump

ชุมชน Linux kernel กำลังแก้ไขช่องโหว่ด้านความปลอดภัยที่มีมายาวนานในการจัดการ core dump ซึ่งเป็นปัญหาที่รบกวนระบบมาหลายปี ด้วยการเปิดตัว kernel 5.13 ที่กำลังจะมาถึง การเปลี่ยนแปลงที่สำคัญกำลังถูกนำมาใช้เพื่อแก้ไขข้อบกพร่องด้านความปลอดภัยที่สำคัญเหล่านี้ ซึ่งส่งผลต่อวิธีที่ระบบประมวลผล core dump จากกระบวนการที่ไม่มีสิทธิพิเศษ

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

การตั้งค่าแบบ Global สร้างความเสี่ยงด้านความปลอดภัย

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

ชุมชนได้รับรู้ถึงปัญหาการออกแบบพื้นฐานนี้มานาน นักพัฒนาได้เสนอแนวทางแก้ไขเช่น namespace isolation หรือการมอบหมายการจัดการ core dump ให้กับกระบวนการเฉพาะ แต่ความพยายามก่อนหน้านี้ในการนำการแก้ไขเหล่านี้มาใช้ไม่เคยเข้าสู่ kernel หลัก

ช่องโหว่ด้านความปลอดภัยของ Core Dump:

  • การตั้งค่า core dump แบบ global สามารถเข้าถึงได้เฉพาะผู้ใช้ root เท่านั้น
  • ตัวจัดการ core dump ทำงานด้วยสิทธิ์เต็มใน root namespace
  • ผู้โจมตีสามารถดักจับ core dump sockets และ processes ได้
  • โปรแกรม Set-uid-root สร้างโอกาสในการยกระดับสิทธิ์ผ่าน core dumps
  • ช่องโหว่ Time-of-check-time-of-use ระหว่างการจัดการ crash

การยกระดับสิทธิพิเศษผ่าน Core Dump

ช่องโหว่ด้านความปลอดภัยจะกลายเป็นอันตรายอย่างยิ่งเมื่อต้องจัดการกับโปรแกรมที่ทำงานด้วยสิทธิพิเศษที่สูง เมื่อโปรแกรมดังกล่าวขัดข้องและสร้าง core dump ผู้โจมตีอาจสามารถสกัดกั้นหรือจัดการกระบวนการ core dump เพื่อรักษาสิทธิพิเศษที่สูงเหล่านั้นไว้ สิ่งนี้สร้างเส้นทางสำหรับการโจมตีแบบยกระดับสิทธิพิเศษที่สามารถทำลายระบบทั้งหมดได้

แนวทางปัจจุบันของ kernel ในการรันตัวจัดการ core dump เป็น user-mode helper ด้วยสิทธิพิเศษเต็มรูปแบบใน root namespace ทำให้การโจมตีเหล่านี้เป็นไปได้ ผู้โจมตีสามารถใช้ประโยชน์จากช่วงเวลาระหว่างที่เกิดการขัดข้องและเมื่อตัวจัดการ core dump รักษาความปลอดภัยของกระบวนการ

โมเดลความปลอดภัยใหม่แบบ Namespace-Based

การแก้ไขที่กำลังจะมาถึงได้แนะนำแนวทางแบบ namespace-based สำหรับการจัดการ core dump แทนที่จะรันการดำเนินการ core dump ทั้งหมดใน root namespace ด้วยสิทธิพิเศษเต็มรูปแบบ ระบบใหม่จะรับประกันว่าตัวจัดการ core dump จะทำงานภายใน namespace เดียวกันกับกระบวนการที่ขัดข้อง แนวทางการกักกันนี้ลดพื้นผิวการโจมตีได้อย่างมีนัยสำคัญ

การเปลี่ยนแปลงรวมถึงการปรับเปลี่ยนวิธีที่ kernel ติดตามความเป็นเจ้าของกระบวนการและข้อมูลประจำตัว namespace ด้วยการรับประกันว่าตัวจัดการ core dump จะสืบทอดบริบท namespace ที่เหมาะสม ระบบสามารถป้องกันผู้โจมตีจากการใช้ core dump เพื่อหลบหนีขอบเขตความปลอดภัยที่ตั้งใจไว้

การเปลี่ยนแปลงด้านความปลอดภัยที่สำคัญใน Linux Kernel 5.13:

  • ตัวจัดการ core dump ตอนนี้ทำงานภายใน namespace ของกระบวนการที่เกิดข้อขัดข้องแทนที่จะเป็น root namespace
  • การตั้งค่า prctl ใหม่ช่วยให้กระบวนการเลือกใช้ core dump แบบสุ่มได้
  • การติดตาม credential ของ namespace ป้องกันการโจมตีแบบยกระดับสิทธิ์
  • ตัวจัดการ core dump ใน user-mode ไม่ได้ทำงานด้วยสิทธิ์ root เต็มรูปแบบโดยค่าเริ่มต้นอีกต่อไป

ชุมชนอภิปรายรายละเอียดการใช้งาน

การอภิปรายทางเทคนิคในชุมชนได้มุ่งเน้นไปที่แนวทางทางเลือกในการรักษาความปลอดภัยการจัดการ core dump นักพัฒนาบางคนตั้งคำถามว่าทำไมตัวจัดการ core dump ไม่ถูกรันในฐานะผู้ใช้เฉพาะที่มีสิทธิพิเศษจำกัดแทนที่จะเป็นกระบวนการ root

คุณสามารถจินตนาการถึง API ที่ตั้งค่า UID ของผู้ใช้นี้ และ kernel สามารถรันตัวจัดการ coredump ในฐานะผู้ใช้นั้นได้อย่างง่ายดาย แต่ kernel ไม่สามารถทำการสร้าง namespace ที่ซับซ้อนเพื่อกักกันกระบวนการนั้นได้อย่างง่ายดาย

คนอื่นๆ ได้แนะนำว่าความซับซ้อนของการส่งไฟล์ core ไปยัง container อาจไม่คุ้มค่ากับความเสี่ยงด้านความปลอดภัยที่เกี่ยวข้อง โดยเฉพาะอย่างยิ่งเนื่องจากโครงสร้างพื้นฐานการรายงานการขัดข้องส่วนใหญ่ทำงานในระดับที่สูงกว่าอยู่แล้ว

ความท้าทายในการใช้งานมีความสำคัญเพราะการตั้งค่า namespace isolation ที่เหมาะสมต้องการการดำเนินการ kernel ที่ซับซ้อนซึ่งต้องเกิดขึ้นก่อนที่โค้ดที่อาจใช้ประโยชน์ได้จะทำงาน ข้อจำกัดด้านเวลานี้ทำให้แนวทางแก้ไขที่ง่ายกว่า เช่น การลดสิทธิพิเศษแบบ user-based ไม่เพียงพอสำหรับความปลอดภัยที่สมบูรณ์

ผลกระทบต่อการดูแลระบบ

การปรับปรุงความปลอดภัยเหล่านี้จะเปลี่ยนแปลงวิธีที่ผู้ดูแลระบบจัดการการรวบรวมและวิเคราะห์ core dump แม้ว่าการเปลี่ยนแปลงจะทำให้ระบบปลอดภัยมากขึ้น แต่อาจส่งผลต่อเครื่องมือและขั้นตอนการทำงานที่มีอยู่ซึ่งพึ่งพาพฤติกรรม core dump ปัจจุบัน

การแก้ไขเหล่านี้แสดงถึงงานวิจัยและพัฒนาด้านความปลอดภัยหลายปี โดยแก้ไขช่องโหว่ที่มีอยู่ในระบบ Linux มาเป็นระยะเวลานาน ผู้ดูแลระบบและทีมความปลอดภัยควรเตรียมพร้อมสำหรับการเปลี่ยนแปลงเหล่านี้เมื่อมีการเปิดตัวพร้อมกับ kernel 5.13 และเวอร์ชันที่ใหม่กว่า

การตอบสนองของชุมชนโดยทั่วไปเป็นไปในทางบวก โดยหลายคนรับรู้ว่าการปรับปรุงความปลอดภัยที่ล่าช้ามานานเหล่านี้มีความจำเป็นแม้จะมีความซับซ้อน การเปลี่ยนแปลงแสดงให้เห็นว่าเทคโนโลยี container และ namespace สมัยใหม่กำลังถูกนำมาใช้เพื่อแก้ไขปัญหาความปลอดภัย Unix แบบดั้งเดิม

อ้างอิง: Slowing the flow of core-dump-related CVIs