กลุ่มนักวิจัยจาก Free University of Amsterdam ได้พัฒนาเวอร์ชันขั้นสูงใหม่ของการโจมตี RowHammer ที่อนุญาตให้เปลี่ยนเนื้อหาของแต่ละบิตในหน่วยความจำโดยใช้ชิป DRAM เพื่อป้องกันความสมบูรณ์ของรหัสแก้ไขข้อผิดพลาด (ECC) ที่ใช้
การโจมตีสามารถดำเนินการได้จากระยะไกลด้วยการเข้าถึงระบบโดยไม่ได้รับสิทธิพิเศษเนื่องจากช่องโหว่ RowHammer สามารถบิดเบือนเนื้อหาของแต่ละบิตในหน่วยความจำได้โดยการอ่านข้อมูลจากเซลล์หน่วยความจำที่อยู่ใกล้เคียง
ช่องโหว่ RowHammer คืออะไร?
สิ่งที่กลุ่มนักวิจัยอธิบายเกี่ยวกับช่องโหว่ RowHammer นั่นคือสิ่งนี้e ขึ้นอยู่กับโครงสร้างของหน่วยความจำ DRAMเพราะโดยพื้นฐานแล้วนี่คือเมทริกซ์สองมิติของเซลล์ซึ่งแต่ละเซลล์เหล่านี้ประกอบด้วยตัวเก็บประจุและทรานซิสเตอร์
ดังนั้นการอ่านพื้นที่หน่วยความจำเดียวกันอย่างต่อเนื่องจึงนำไปสู่ความผันผวนของแรงดันไฟฟ้าและความผิดปกติที่ทำให้เกิดการสูญเสียประจุเล็กน้อยในเซลล์ใกล้เคียง
หากความเข้มของการอ่านมีมากพอเซลล์อาจสูญเสียประจุจำนวนมากพอสมควรและวงจรการสร้างใหม่ครั้งต่อไปจะไม่มีเวลาคืนสภาพเดิมส่งผลให้ค่าของข้อมูลที่จัดเก็บในเซลล์เปลี่ยนแปลงไป
RowHammer รูปแบบใหม่
จนถึงตอนนี้ การใช้ ECC ถือเป็นวิธีที่น่าเชื่อถือที่สุดในการป้องกันปัญหาที่อธิบายไว้ข้างต้น
ลูกแพร์ นักวิจัยประสบความสำเร็จในการพัฒนาวิธีการเปลี่ยนบิตหน่วยความจำที่ระบุ ที่ไม่ได้เปิดใช้งานกลไกการแก้ไขข้อผิดพลาด
วิธีการ สามารถใช้บนเซิร์ฟเวอร์ที่มีหน่วยความจำ ECC เพื่อแก้ไขข้อมูลแทนที่โค้ดที่เป็นอันตรายและเปลี่ยนสิทธิ์การเข้าถึง
ตัวอย่างเช่นในการโจมตี RowHammer ที่แสดงข้างต้นเมื่อผู้โจมตีเข้าถึงเครื่องเสมือนระบบจะดาวน์โหลดการอัปเดตระบบที่เป็นอันตรายผ่านการเปลี่ยนแปลงในกระบวนการ apt ชื่อโฮสต์เพื่อดาวน์โหลดและแก้ไขตรรกะการตรวจสอบชื่อโฮสต์ลายเซ็นดิจิทัล
ตัวแปรใหม่นี้ทำงานอย่างไร
สิ่งที่นักวิจัยอธิบายเกี่ยวกับ การโจมตีครั้งใหม่นี้คือคำแนะนำแบบ ECC อาศัยคุณสมบัติการแก้ไขข้อผิดพลาด- หากมีการเปลี่ยนแปลงหนึ่งบิต ECC จะแก้ไขข้อผิดพลาดหากมีการเพิ่มขึ้นสองบิตข้อยกเว้นจะถูกโยนทิ้งและโปรแกรมจะถูกบังคับให้ยุติ แต่หากมีการเปลี่ยนแปลงสามบิตพร้อมกัน ECC อาจไม่สังเกตเห็นการแก้ไข
ในการกำหนดเงื่อนไขที่การตรวจสอบ ECC ใช้ไม่ได้ มีการพัฒนาวิธีการตรวจสอบที่คล้ายกับการแข่งขันซึ่งช่วยให้สามารถประเมินความเป็นไปได้ของการโจมตีสำหรับที่อยู่เฉพาะในหน่วยความจำ
วิธีการนี้ขึ้นอยู่กับความจริงที่ว่าเมื่อแก้ไขข้อผิดพลาดเวลาในการอ่านจะเพิ่มขึ้นและความล่าช้าที่เกิดขึ้นนั้นสามารถวัดได้และสังเกตเห็นได้ชัดเจน
การโจมตีจะลดลงเป็นความพยายามต่อเนื่องในการเปลี่ยนทีละบิตโดยพิจารณาความสำเร็จของการเปลี่ยนแปลงตามลักษณะของความล่าช้าที่เกิดจากการตั้งค่า ECC
ดังนั้นการค้นหาคำเครื่องจะดำเนินการด้วยบิตตัวแปรสามตัว ในขั้นตอนสุดท้ายจำเป็นต้องตรวจสอบให้แน่ใจว่าบิตที่เปลี่ยนแปลงได้ทั้งสามในสองตำแหน่งนั้นแตกต่างกันจากนั้นลองเปลี่ยนค่าในการส่งครั้งเดียว
เกี่ยวกับการสาธิต
ลอส นักวิจัยประสบความสำเร็จในการแสดงให้เห็นถึงความเป็นไปได้ของการโจมตีเซิร์ฟเวอร์ที่แตกต่างกันสี่เซิร์ฟเวอร์ด้วยหน่วยความจำ DDR3 (มีช่องโหว่ในทางทฤษฎีและหน่วยความจำ DDR4) ซึ่งสามในนั้นมาพร้อมกับโปรเซสเซอร์ Intel (E3-1270 v3, Xeon E5-2650 v1, Intel Xeon E5-2620 v1) และ AMD หนึ่งตัว (Opteron 6376)
En การสาธิตแสดงให้เห็นว่าการค้นหาชุดค่าผสมที่ต้องการในห้องทดลองบนเซิร์ฟเวอร์ที่ไม่ได้ใช้งานจะใช้เวลาประมาณ 32 นาที
การโจมตีเซิร์ฟเวอร์ที่ทำงานอยู่นั้นยากกว่ามากเนื่องจากมีสัญญาณรบกวนที่เกิดขึ้นจากกิจกรรมของแอปพลิเคชัน
ในระบบการผลิตอาจใช้เวลาถึงหนึ่งสัปดาห์ในการค้นหาชุดค่าผสมที่ต้องการของบิตที่ใช้แทนกันได้