Zenbleed: ทุกสิ่งที่คุณจำเป็นต้องรู้เกี่ยวกับข้อบกพร่องด้านความปลอดภัยของ AMD

ข้อบกพร่องด้านความปลอดภัยล่าสุดสำหรับซีพียู Zenbleed เป็นอีกสิ่งหนึ่งที่จำเป็นต้องได้รับการแก้ไข นี่คือสิ่งที่คุณต้องรู้

หลังจากที่ช่องโหว่ของ Spectre และ Meltdown CPU ได้รับการเผยแพร่ในปี 2561 โลกของคอมพิวเตอร์ก็ค่อนข้างระมัดระวัง เกี่ยวกับการค้นหาข้อบกพร่องด้านความปลอดภัยและช่องโหว่ในโปรเซสเซอร์ และในช่วงห้าปีที่ผ่านมา นักวิจัยได้พบปัญหามากมาย เมื่อวันที่ 24 กรกฎาคม ยังมีการเปิดเผยการหาประโยชน์อีกครั้งหนึ่งต่อสาธารณะหลังจากมีการรายงานครั้งแรกในเดือนพฤษภาคม ครั้งนี้เป็นเรื่องเฉพาะสำหรับโปรเซสเซอร์ AMD ที่สร้างขึ้นบนสถาปัตยกรรม Zen 2 และได้รับการขนานนามว่า "เซนบลีด". นี่คือทุกสิ่งที่คุณจำเป็นต้องรู้เกี่ยวกับ Zenbleed และความหมายที่มีต่อโลก

Zenbleed ทำงานอย่างไร?

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

ที่มา: ทาวิส ออร์ม็องดี

การลงทะเบียนใน CPU สามารถเก็บข้อมูลจำนวนเล็กน้อย โดยทั่วไปแล้วคือคำสั่ง ที่อยู่หน่วยเก็บข้อมูล หรือข้อมูลขนาดเล็กประเภทอื่นๆ XMM ลงทะเบียนในสถาปัตยกรรม x86_64 (ดังนั้น โปรเซสเซอร์ Zen 2 ที่ได้รับผลกระทบใดๆ) สามารถใช้เพื่อการคำนวณข้อมูลเท่านั้น ไม่ใช่เพื่อจัดการกับหน่วยความจำ ซึ่งขยายเป็น 256 บิตในกรณีของการลงทะเบียน YMM และ 512 บิตในการลงทะเบียน ZMM ในกรณีนี้ XMM หมายถึง 128 บิตล่างของ ทั้งหมด 512 บิตของการลงทะเบียน ZMM

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

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

เมื่อเกิดปัญหาขึ้นในคำสั่ง vzeroupper ซึ่งจะทำให้บิตในตำแหน่ง 128 และสูงกว่าของรีจิสเตอร์ YMM และ ZMM เป็นศูนย์ ซึ่งทำได้โดยเฉพาะอย่างยิ่งเมื่อมีการเปลี่ยนระหว่างรหัส AVX และรหัส SSE แบบเดิม เนื่องจากจะทำให้ประสิทธิภาพลดลง บทลงโทษที่เกิดจากการพึ่งพาที่ผิดพลาดในขณะเดียวกันก็หลีกเลี่ยงผลกระทบที่คล้ายกับการเลื่อนจำนวนเต็มด้วย ค.

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

CPU ใดบ้างที่ได้รับผลกระทบจาก Zenbleed และแพตช์จะพร้อมใช้งานเมื่อใด

ตามที่ระบุไว้ก่อนหน้านี้ เฉพาะซีพียู AMD ที่ใช้สถาปัตยกรรม Zen 2 เท่านั้นที่ทราบว่ามีความเสี่ยงต่อข้อบกพร่องด้านความปลอดภัยของ Zenbleed แต่ สถาปัตยกรรม Zen 2 ได้ขับเคลื่อน CPU ใน 3 ซีรีส์ ทำให้การพิจารณาว่า CPU ตัวใดมีช่องโหว่และตัวใดเป็นเรื่องยุ่งยาก ไม่ได้ นี่คือตารางที่ควรทำให้ชัดเจน:

CPU ที่ได้รับผลกระทบ

ซีรีย์ RYZEN 3000

ทั้งหมดยกเว้น APU (เช่น Ryzen 3 3200G)

เอปิค โรม

ทั้งหมด

ซีรีย์ RYZEN 4000

ทั้งหมด

ซีรีย์ RYZEN 5000

เฉพาะรุ่น 5300U, 5500U และ 5700U เท่านั้น

ซีรีย์ RYZEN 7000

APU เพียง 7020 เท่านั้น (เช่น Ryzen 3 7320U)

นี่เป็นโปรเซสเซอร์ AMD จำนวนมากและนี่เป็นเพียงโปรเซสเซอร์ที่ได้รับการยืนยันจนถึงตอนนี้ Zen 2 ยังใช้ใน APU ที่ขับเคลื่อน Steam Deck, Xbox Series S และ X และ PS5 เราไม่เคยได้ยินมาก่อนว่า CPU เหล่านี้ได้รับผลกระทบหรือไม่ แต่เมื่อพิจารณาจากวิธีการทำงานของช่องโหว่นี้ ผมจะแปลกใจถ้าพวกมันไม่ได้รับผลกระทบเช่นกัน ดูเหมือนว่าไม่น่าเป็นไปได้ที่ AMD จะทำการแพตช์ลงใน Xbox และ PS5 เนื่องจากชิปซีรีส์ 7020 ซึ่งเป็นรุ่นใหม่กว่าก็ได้รับผลกระทบเช่นกัน

ในขณะที่เขียน ไมโครโค้ดถูกส่งไปยังเคอร์เนล Linux แล้ว ที่จะแก้ไขช่องโหว่นี้ และระบบปฏิบัติการหรือ BIOS ของคุณอาจมีการอัปเดตที่แก้ไขปัญหานี้อยู่แล้ว

สิ่งนี้หมายความว่าอย่างไรสำหรับคอมพิวเตอร์ที่ใช้ CPU ที่มีช่องโหว่

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

อย่างไรก็ตาม ความเสี่ยงจะสูงกว่ามากสำหรับศูนย์ข้อมูลและบุคคลสำคัญที่ต้องจัดการข้อมูลที่ละเอียดอ่อนบนคอมพิวเตอร์ของตนเอง มีเหตุผลว่าทำไม AMD จึงชัดเจนมากว่า Epyc Rome ได้รับการติดตั้งก่อนที่จะเปิดเผยช่องโหว่นี้ต่อสาธารณะ: มีความละเอียดอ่อนมากมาย ข้อมูลได้รับการจัดการโดย Epyc CPU และมันจะเป็นหายนะหาก CPU ใด ๆ ที่ขับเคลื่อนเซิร์ฟเวอร์ขนาดใหญ่ประสบความสำเร็จ ถูกโจมตี Linux kernel 6.4.6 เปิดตัวแล้ว และแก้ไขช่องโหว่นี้โดยการเข้าไปที่ แพทช์ไมโครโค้ดอย่างเป็นทางการ จากเอเอ็มดี ดูเหมือนว่า Microsoft จะรวมสิ่งที่คล้ายกันเข้ากับ Windows

ที่น่าเป็นห่วง แพตช์ BIOS อย่างเป็นทางการของ AMD อาจไม่เปิดตัวเป็นเวลาหลายเดือนซึ่งในกรณีนี้จะมี "ไก่บิต" ที่คุณสามารถตั้งค่าได้หากคุณใช้เครื่อง Linux หรือ FreeBSD บนเครื่อง Linux คุณสามารถใช้ msr-tools และดำเนินการคำสั่งต่อไปนี้

wrmsr -a 0xc0011029 $(($(rdmsr -c 0xc0011029) | (1<<9)))

บน FreeBSD คุณสามารถใช้สิ่งต่อไปนี้ได้

cpucontrol(8)

การปิดใช้งาน SMT ไม่เพียงพอที่จะบรรเทาช่องโหว่

สิ่งหนึ่งที่ทำให้ Zenbleed แย่เป็นพิเศษก็คือ Zen 2 เป็นหนึ่งในสถาปัตยกรรม CPU ที่ได้รับความนิยมมากที่สุดของ AMD นับเป็นการเริ่มต้นการกลับมาของ AMD ในปี 2562 และ 2563 และผู้คน บริษัท และองค์กรจำนวนมากยังคงใช้คอมพิวเตอร์ที่มีโปรเซสเซอร์ Zen 2 ในปี 2566 โดยเฉพาะ Epyc Rome ซีพียู สิ่งนี้ไม่ได้แย่เท่ากับ Spectre (ซึ่งส่งผลกระทบต่อ CPU ก่อนปี 2019 ทั้งหมด) และ Meltdown (ซึ่งส่งผลกระทบต่อ CPU Intel ก่อนปี 2019 เกือบทั้งหมด) แต่ก็ยังค่อนข้างยุติธรรม แพร่หลาย

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