ข้อผิดพลาดใน Linux 6.2 อนุญาตให้ข้ามการป้องกันการโจมตี Spectre v2

ความอ่อนแอ

หากถูกโจมตี ข้อบกพร่องเหล่านี้อาจทำให้ผู้โจมตีเข้าถึงข้อมูลที่ละเอียดอ่อนโดยไม่ได้รับอนุญาต หรือก่อให้เกิดปัญหาโดยทั่วไป

เมื่อเร็ว ๆ นี้ ได้มีการเปิดเผยข้อมูลเกี่ยวกับก พบช่องโหว่ในเคอร์เนล Linux 6.2 (ระบุไว้แล้วภายใต้ CVE-2023-1998) และที่โดดเด่นเพราะเป็น ปิดใช้งานการป้องกันการโจมตี Spectre v2 ซึ่งอนุญาตให้เข้าถึงหน่วยความจำโดยกระบวนการอื่นที่ทำงานบนเธรด SMT หรือ Hyper Threading ที่แตกต่างกัน แต่อยู่บนแกนประมวลผลทางกายภาพเดียวกัน

ความเปราะบางเป็นสิ่งที่โดดเด่นเหนือสิ่งอื่นใดเพราะ สามารถใช้สำหรับ จัดระเบียบข้อมูลรั่วไหลระหว่าง เครื่องเสมือนในระบบคลาวด์ 

สำหรับคนที่ไม่รู้จัก Spectre ก็น่าจะรู้ว่าเรื่องนี้ เป็นหนึ่งในสองช่องโหว่ของ CPU การดำเนินการชั่วคราวดั้งเดิม (อีกอันคือ Meltdown) ซึ่งเกี่ยวข้องกับการโจมตีช่องทางด้านข้างของ microarchitectural สิ่งเหล่านี้ส่งผลต่อไมโครโปรเซสเซอร์สมัยใหม่ที่คาดการณ์การกระโดดและการเก็งกำไรในรูปแบบอื่นๆ

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

นับตั้งแต่การเปิดเผย Spectre และ Meltdown ในเดือนมกราคม 2018 ช่องโหว่หลายรายการและประเภทใหม่ๆ ที่เกี่ยวข้องกับช่องโหว่เหล่านี้ได้เกิดขึ้น

เคอร์เนล Linux อนุญาตให้กระบวนการ userland เปิดใช้งานการลดขนาดโดยการเรียก prctl ด้วย PR_SET_SPECULATION_CTRL ซึ่งปิดใช้งานฟังก์ชัน spec เช่นเดียวกับการใช้ seccomp เราพบว่าในเครื่องเสมือนจากผู้ให้บริการระบบคลาวด์รายใหญ่อย่างน้อยหนึ่งราย เคอร์เนลยังคงปล่อยให้กระบวนการของเหยื่อเปิดให้โจมตีในบางกรณี แม้ว่าหลังจากเปิดใช้งานการบรรเทา Spectre-BTI ด้วย prctl แล้ว 

กล่าวถึงความเปราะบางว่า ในพื้นที่ผู้ใช้ เพื่อป้องกันการโจมตี ของสเปกตรัม, กระบวนการสามารถเลือกปิดการใช้งานได้ ของงบเก็งกำไรด้วย prctl PR_SET_SPECULATION_CTRL หรือใช้การกรองการโทรตามระบบ seccomp

ตามที่นักวิจัยระบุปัญหาการเพิ่มประสิทธิภาพที่ไม่ถูกต้องในเคอร์เนล 6.2 ออกจากเครื่องเสมือน จากผู้ให้บริการคลาวด์รายใหญ่อย่างน้อยหนึ่งราย โดยไม่มีการป้องกันที่เหมาะสม แม้จะมีการรวมโหมดป้องกันการโจมตี Spectre-BTI ผ่าน prctl ช่องโหว่นี้ยังปรากฏบนเซิร์ฟเวอร์ปกติที่มีเคอร์เนล 6.2 ซึ่งเริ่มต้นด้วยการกำหนดค่า "spectre_v2=ibrs"

สาระสำคัญของความเปราะบางคือการเลือกโหมดการป้องกัน IBRS หรือ eIBRS การเพิ่มประสิทธิภาพทำให้ปิดการใช้งานกลไก STIBP (Single Thread Indirect Branch Predictors) ซึ่งจำเป็นต่อการป้องกันการรั่วไหลเมื่อใช้เทคโนโลยี Multi-Threading (SMT หรือ Hyper-Threading) พร้อมกัน )

ในทางกลับกัน เฉพาะโหมด eIBRS เท่านั้นที่ให้การป้องกันการรั่วไหลระหว่างเธรด ไม่ใช่โหมด IBRS เนื่องจากด้วยโหมดนี้ บิต IBRS ซึ่งให้การป้องกันการรั่วไหลระหว่างคอร์แบบลอจิคัล จึงถูกล้างด้วยเหตุผลด้านประสิทธิภาพ เมื่อการควบคุมส่งกลับผู้ใช้สเปซ ซึ่งทำให้ เธรดพื้นที่ผู้ใช้ไม่มีการป้องกันการโจมตีจากคลาส Spectre v2

การทดสอบประกอบด้วยสองกระบวนการ ผู้โจมตีโจมตีการโทรทางอ้อมอย่างต่อเนื่องเพื่อคาดคะเนเปลี่ยนเส้นทางไปยังที่อยู่ปลายทาง กระบวนการของเหยื่อจะวัดอัตราการคาดการณ์ที่ไม่ถูกต้องและพยายามลดการโจมตีด้วยการเรียก PRCTL หรือเขียนไปยัง MSR โดยตรงโดยใช้โมดูลเคอร์เนลที่เปิดเผยการดำเนินการอ่านและเขียน MSR ในพื้นที่ผู้ใช้

ปัญหามีผลกับเคอร์เนล Linux 6.2 เท่านั้น และเกิดจากการปรับใช้การเพิ่มประสิทธิภาพอย่างไม่ถูกต้องซึ่งออกแบบมาเพื่อลดค่าใช้จ่ายที่สำคัญเมื่อใช้การป้องกัน Spectre v2 ช่องโหว่ ได้รับการแก้ไขในสาขาทดลองของเคอร์เนล Linux 6.3

สุดท้ายใช่ คุณสนใจที่จะทราบข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ คุณสามารถตรวจสอบรายละเอียดในไฟล์ ลิงค์ต่อไปนี้


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา

  1.   เดอิกิ dijo

    ผู้ที่มีพารามิเตอร์เคอร์เนล mitigations=off:

    สุภาพบุรุษที่ดี 👌😎🔥