กลุ่มนักวิจัยจากมหาวิทยาลัย 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
