ช่องโหว่ความปลอดภัยของปีศาจสามารถอยู่ในเครื่องเสมือนได้หรือไม่?


13

เป็นไปได้ว่าเครื่องเสมือนเช่น VirtualBox มีช่องโหว่ด้านความปลอดภัย "ปีศาจ" หรือไม่? ฉันคิดว่า VM อาจใช้งานการดำเนินการที่ผิดปกติ แต่ในความคิดของฉันมันเป็นไปไม่ได้ที่จะอ่านแคชเพื่ออ่านผลลัพธ์

มีคำอธิบายใด ๆ ว่าเป็นไปได้อย่างไรที่จะอ่านแคชของ cpu เสมือน?


4
ใช่งานวิจัยเล็ก ๆ น้อย ๆ จะยืนยันว่า VMWare ได้ปล่อยแพทช์เพื่อจัดการกับ Spectre และ Meltdown แขกระบบปฏิบัติการจะต้องได้รับการแก้ไขนอกจากนี้เพื่อ hypervisor ที่เกิดขึ้นจริง (ทั้งสองประเภท)
Ramhound

ขึ้นอยู่กับระดับของการจำลองเสมือนฉันพูดได้ หากคุณกำลังจำลอง CPU เสมือนแสดงว่าคุณอาจปลอดภัย แต่นั่นไม่ใช่สิ่งที่ VMs ที่ทันสมัยทำ
Bergi

มีคำอธิบายใด ๆ ว่าเป็นไปได้อย่างไรที่จะอ่านแคชของ cpu เสมือน?

1
@jms รายละเอียดอยู่ในโพสต์ที่ยอมรับฉันเชื่อมโยงในคำตอบของฉัน:Spectre works on a different level ... In this attack, the attacker tricks the speculative execution to predictively execute instructions erroneously. In a nutshell, the predictor is coerced to predict a specific branch result that results in asking for an out-of-bound memory access that the victim process would not normally have requested resulting in incorrect speculative execution. Then by the side-channel, retrieves the value of this memory. In this way memory belonging to the victim process is leaked to the malicious process.
Mokubai

1
@jms Virtualization นั้นเร็วมากเพราะใช้ฟิสิคัล CPU ที่มี abstraction น้อยที่สุดเท่าที่จะเป็นไปได้และใช้ฮาร์ดแวร์ CPU เพื่อแยกและใช้ abstraction สิ่งต่าง ๆ เช่นqemuสามารถทำการจำลองซึ่งจะปลอดภัยกว่าไม่ใช่ฮาร์ดแวร์ CPU แต่ช้ากว่ามากและแตกต่างจากการจำลองเสมือน
Mokubai

คำตอบ:


14

ใช่ Spectre สามารถข้ามโฮสต์ / แขกผู้เยี่ยมชม / โฮสต์และแขก / แขกผู้เข้าพักขอบเขตเพราะนี่คือข้อบกพร่องระดับ CPU ที่หมายความว่าข้อมูลที่อาจมีความสำคัญสามารถรั่วไหลออกมาในทุกสิ่งที่ทำงานบนแกน CPU

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

ผู้ให้บริการรายใหญ่ส่วนใหญ่ควรได้รับการแก้ไขข้อบกพร่องในตอนนี้อย่างดีที่สุดเท่าที่จะทำได้ แต่นี่จะเป็นปัญหาที่อาศัยอยู่กับเราในบางเวลา

Security.SE มีคำถามและคำตอบที่ยอมรับได้เกี่ยวกับเรื่องนี้และกล่าวถึงของ VM:

ฉันกำลังใช้งานเครื่องเสมือน / ภาชนะบรรจุฉันมีความเสี่ยงเพียงใด?

ตามคำตอบของ Steffen Ullrich

  • การโจมตีแบบ Meltdown ไม่ข้าม VMs เท่านั้นทำให้หน่วยความจำเคอร์เนลรั่วไหลไปยังกระบวนการโลคอล
  • อสุรกายสามารถทำงานได้บน VMs

นอกจากนี้จากSteffen อีกครั้ง Meltdown และ Specter ทำงานกับคอนเทนเนอร์ได้เนื่องจากคอนเทนเนอร์อาศัยเคอร์เนลโฮสต์

VM ใช้ CPU จริงในระบบของคุณพร้อมกับคำแนะนำพิเศษบางอย่างที่ติดอยู่และสามารถเปลี่ยนเส้นทางได้ มันใช้แคชและคำแนะนำเดียวกับที่โฮสต์ทำ มันเป็นเพียงอีกชั้นหนึ่งภายใน CPU จริงในระบบของคุณ

การทำเวอร์ชวลไลเซชันนั้นทำได้เร็วเพียงเพราะใช้ฟิสิคัล CPU ที่มีค่า abstraction น้อยที่สุดเท่าที่จะเป็นไปได้และใช้ฮาร์ดแวร์ CPU เพื่อแยก สิ่งต่าง ๆ เช่น qemu สามารถทำการจำลองซึ่งปลอดภัยกว่าเพราะไม่ใช่ CPU ของฮาร์ดแวร์ แต่ช้ากว่ามากและแตกต่างจาก virtualization

จากSecurity.se บัญญัติโพสต์อีกครั้ง:

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

ดังนั้นเนื่องจาก VM ทำงานในฮาร์ดแวร์ CPU จริงและสิ่งที่ต้องทำคือเรียกใช้ลูปเฉพาะเพื่อ "ฝึกอบรม" เอ็นจินการประมวลผลแบบเก็งกำไร จากนั้นจะสามารถใช้เวลาที่แม่นยำในการดูแคชสำหรับรูปแบบเฉพาะของการเข้าถึงที่บ่งบอกถึงโฮสต์หรือกระบวนการเกสต์ (หรือ VM อื่น ๆ ) ที่ต้องการใช้ประโยชน์

ด้วยวิธีนี้หมายความว่าเครื่องจักรนั้นสามารถใช้ประโยชน์ได้ในทุกทิศทาง จากโฮสต์สู่ VM จาก VM สู่โฮสต์และจาก VM ถึง VM

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

หากคุณต้องการ VM ที่ "ปลอดภัย" คุณต้องรับประกันว่าคอร์นั้นแยกจากกัน วิธีที่แท้จริงเพียงอย่างเดียวในการบล็อกการโจมตีนี้คือ "บังคับ" โฮสต์และ VM ให้ใช้คอร์บางตัวเพื่อไม่ให้ทำงานบนฮาร์ดแวร์เดียวกัน แต่จะทำให้ต้นทุนเพิ่มขึ้นอย่างมีประสิทธิภาพเนื่องจากคุณจะไม่สามารถ มี VMs จำนวนมากบนโฮสต์ที่กำหนด คุณจะไม่มีทางหนีจากการใช้ VMs มากกว่าที่คุณมี cores ซึ่งเป็นสิ่งที่ฉันคาดหวังว่าจะทำได้บนเซิร์ฟเวอร์ "low load" เนื่องจากระบบหลายระบบใช้งาน 90% ของชีวิต


2
ฉันคิดว่าคุณตีความคำถามว่า "ถ้าโฮสต์ CPU ได้รับผลกระทบ VM จะได้รับผลกระทบด้วยหรือไม่" ตามที่ฉันเข้าใจคำถามจะถามว่า "หากโฮสต์ CPU ไม่ได้รับผลกระทบ VM จะยังได้รับผลกระทบได้หรือไม่" คุณช่วยเคลียร์สิ่งนั้นได้ไหม
AndreKR

1
@AndreKR: ขณะนี้ซีพียูที่ดำเนินการตามคำสั่งซื้อทั้งหมดได้รับผลกระทบจาก Spectre เฉพาะกับการแก้ไขปัญหาซอฟต์แวร์คุณสามารถสร้างระบบที่ปลอดภัยได้ (และ VM จะต้องใส่ใจในเรื่องนี้แม้ว่าไฮเปอร์ไวเซอร์สามารถแยกแขกออกจากกันได้หาก CPU มีสิ่งอำนวยความสะดวกเช่นของ IBRS ของ Intel) แต่ในซีพียูที่ไม่มีการดำเนินการเก็งกำไรไม่มีช่องโหว่ Specter ของการเรียงลำดับใด ๆ สามารถอยู่ระหว่างซอฟต์แวร์สองชิ้น สาระสำคัญของ Spectre คือการกระตุ้นการดำเนินการเก็งกำไรของสิ่งที่ทำให้ข้อมูลลับเข้าสู่สถานะ ซีพียูที่เรียงตามลำดับไม่ได้
Peter Cordes

สิ่งที่น่าสนใจที่สุดไม่ใช่การประหารชีวิต สิ่งที่น่าสนใจที่สุดคือวิธีที่กระบวนการสามารถค้นหาว่ามีอะไรอยู่ในแคช - แม้แต่ใน VM

@jms การโจมตีช่องทางด้านข้างที่มีอยู่อำนวยความสะดวกและทำให้มีประโยชน์โดยการดำเนินการเก็งกำไร กระบวนการอาจไม่สามารถอ่านบรรทัดแคชโดยตรง แต่การดำเนินการเก็งกำไรสามารถรั่วไหลข้อมูลโดยทำการคำนวณที่ใส่ค่าลงในแคชที่สามารถตรวจพบหรืออนุมานจากการโจมตีตามกำหนดเวลา ส่วนที่ 4 ของเอกสารทางเทคนิคของปีศาจมีคำอธิบายที่ดี: spectreattack.com/spectre.pdf
Mokubai

0

gem5

หากคุณสนใจที่จะศึกษา / ทำซ้ำช่องโหว่ด้วยการจำลองโดยไม่ต้องใช้ CPU โฮสต์ฉันไม่คิดว่า QEMU มีรายละเอียดเพียงพอที่จะสังเกตได้เนื่องจากไม่ได้จำลองไปป์ไลน์ของ CPU

อย่างไรก็ตาม gem5 ใช้เพื่อประเมินประสิทธิภาพของระบบในการวิจัยและพัฒนาและจำลอง CPU ภายในให้คุณสังเกต Specter ในสภาพแวดล้อมที่สะอาดและควบคุมอย่างเต็มที่

ตัวอย่าง x86_64 ที่ยอดเยี่ยมพร้อมการแสดงภาพประกอบเพลงได้รับการเผยแพร่ที่: http://www.lowepower.com/jason/visualizing-spectre-with-gem5.html

ข้อเสียของ gem5 คือช้ากว่า QEMU มากการจำลองมีรายละเอียดมากกว่า

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.