SLAM - การโจมตีซีพียู Intel, AMD และ ARM ที่ให้คุณกำหนดเนื้อหาของหน่วยความจำ

กลุ่มนักวิจัยจากมหาวิทยาลัย Vrije Universiteit Amsterdam ได้นำเสนอเทคนิคการโจมตีแบบใหม่ SLAM (Spectre Linear Address Masking) ซึ่งเป็นวิธีการใหม่ในการใช้ประโยชน์จากช่องโหว่ระดับไมโครสถาปัตยกรรมของตระกูล Spectre โดยข้อมูลจะรั่วไหลระหว่างการแปลงแอดเดรสที่ไม่เป็นไปตามแบบแผน และส่วนขยายการมาสก์แอดเดรสเชิงเส้นที่ให้มาในโปรเซสเซอร์รุ่นใหม่จะถูกใช้เพื่อหลีกเลี่ยงการตรวจสอบความถูกต้องของแอดเดรส นักวิจัยได้เผยแพร่ชุดเครื่องมือที่มีการใช้งานวิธีการนี้ และได้สาธิตวิธีการดึงข้อมูลที่ตรงกับมาสก์ที่กำหนดจากหน่วยความจำเคอร์เนล (แสดงให้เห็นว่าใช้เวลาเพียงไม่กี่สิบวินาที) Ubuntu (จัดสรรสตริงที่มีแฮชรหัสผ่านของผู้ใช้ root จากหน่วยความจำเคอร์เนล)

เล่นวิดีโอ

การโจมตีสามารถทำได้บนระบบที่ใช้โปรเซสเซอร์ Intel ที่รองรับส่วนขยาย LAM (Linear Address Masking) โปรเซสเซอร์ AMD ที่มีส่วนขยาย UAI (Upper Address Ignore) และโปรเซสเซอร์ ARM ที่มีส่วนขยาย TBI (Top Byte Ignore) ส่วนขยายเหล่านี้อนุญาตให้ใช้พอยน์เตอร์ 64 บิตบางบิตเพื่อจัดเก็บข้อมูลเมตาที่ไม่ได้ระบุที่อยู่ (โปรแกรมทั่วไปไม่ต้องการหน่วยความจำมากเท่ากับพอยน์เตอร์ 64 บิตสามารถระบุได้ ดังนั้นบิตบนสุดจึงสามารถใช้เพื่อการรักษาความปลอดภัยได้ ตรวจสอบ เป็นต้น) สิ่งที่น่าสนใจคือเพิ่งมีการประกาศโปรเซสเซอร์ Intel, AMD และ ARM ที่รองรับ LAM, UAI และ TBI แต่ไม่ได้อยู่ในการผลิตจำนวนมาก ซึ่งทำให้ SLAM เป็นการโจมตีเชิงเก็งกำไรครั้งแรกสำหรับ CPU ในอนาคต การโจมตีดังกล่าวสามารถทำได้บนซีพียู AMD Zen+ และ Zen 2 รุ่นเก่าที่เสี่ยงต่อช่องโหว่ CVE-2020-12965

โดยการเปรียบเทียบกับการใช้ช่องโหว่ของ Spectre การโจมตีแบบ SLAM จำเป็นต้องมีลำดับคำสั่ง (แกดเจ็ต) บางอย่างในเคอร์เนลที่นำไปสู่การดำเนินการตามคำสั่งแบบคาดเดา คำแนะนำดังกล่าวส่งผลให้มีการอ่านข้อมูลจากหน่วยความจำโดยคาดเดา ขึ้นอยู่กับเงื่อนไขภายนอกที่ผู้โจมตีอาจได้รับอิทธิพล เมื่อพิจารณาการคาดการณ์ที่ไม่ถูกต้อง ผลลัพธ์ของการดำเนินการเก็งกำไรจะถูกละทิ้ง แต่ข้อมูลที่ประมวลผลจะยังคงอยู่ในแคช จากนั้นสามารถดึงข้อมูลได้โดยใช้การวิเคราะห์ช่องทางด้านข้าง เพื่อแยกข้อมูลที่ตกลงไว้ในแคช นักวิจัยใช้วิธี Evict+Reload ซึ่งอยู่บนพื้นฐานของการสร้างเงื่อนไขสำหรับการแทนที่ข้อมูลจากแคช (เช่น การสร้างกิจกรรมที่เติมเนื้อหาทั่วไปในแคชอย่างสม่ำเสมอ) และดำเนินการต่างๆ เวลาดำเนินการซึ่งช่วยให้สามารถตัดสินการมีอยู่ของข้อมูลในแคชของโปรเซสเซอร์

ในการโจมตีแบบ SLAM จะใช้อุปกรณ์ที่ใช้รหัสโดยที่ข้อมูลที่ควบคุมโดยผู้โจมตี (ใต้ตัวแปร "ความลับ") จะถูกนำมาใช้เป็นตัวชี้ ตัวอย่างเช่น: void unmasked_gadget(long **secret) { **secret; }

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

ที่มา: opennet.ru

ซื้อโฮสติ้งที่เชื่อถือได้สำหรับไซต์ที่มีการป้องกัน DDoS เซิร์ฟเวอร์ VPS VDS 🔥 ซื้อบริการเว็บโฮสติ้งที่เชื่อถือได้ พร้อมระบบป้องกัน DDoS และเซิร์ฟเวอร์ VPS/VDS | ProHoster