กลับไปหน้าบทความ

อ่าน 12 นาที

ค้อนแถว

Rowhammer (หรือเขียนว่า row hammer หรือ RowHammer ) เป็นช่องโหว่ด้านความปลอดภัยของคอมพิวเตอร์ที่ใช้ประโยชน์จากผลข้างเคียงที่ไม่พึงประสงค์ใน หน่วยความจำแบบไดนามิกแรม (DRAM) ซึ่ง...

ค้อนแถว

บทความนี้ดีมาก คลิกที่นี่เพื่อดูข้อมูลเพิ่มเติม

Rowhammer (หรือเขียนว่าrow hammerหรือRowHammer ) เป็นช่องโหว่ด้านความปลอดภัยของคอมพิวเตอร์ที่ใช้ประโยชน์จากผลข้างเคียงที่ไม่พึงประสงค์ในหน่วยความจำแบบไดนามิกแรม (DRAM) ซึ่งเซลล์หน่วยความจำจะโต้ตอบกันทางไฟฟ้าโดยการรั่วไหลของประจุ ซึ่งอาจเปลี่ยนแปลงเนื้อหาของแถวหน่วยความจำ ที่อยู่ใกล้เคียง ซึ่งไม่ได้ถูกเรียกใช้ในการเข้าถึงหน่วยความจำครั้งแรก การหลีกเลี่ยงการแยกตัวระหว่างเซลล์หน่วยความจำ DRAM นี้เป็นผลมาจากความหนาแน่นของเซลล์สูงใน DRAM รุ่นใหม่ และสามารถกระตุ้นได้ด้วยรูปแบบการเข้าถึงหน่วยความจำ ที่สร้างขึ้นเป็นพิเศษ ซึ่งจะเปิดใช้งานแถวหน่วยความจำเดียวกันหลายครั้งอย่างรวดเร็ว[ 1 ] [ 2 ] [ 3 ]

เอฟเฟก ต์ Rowhammer ถูกนำมาใช้ในการโจมตีทางไซเบอร์เพื่อยกระดับสิทธิ์ [ 2 ] [ 4 ] [ 5 ] [ 6 ]และการโจมตีผ่านเครือข่ายก็เป็นไปได้ในทางทฤษฎีเช่นกัน[ 7 ] [ 8 ]

มีเทคนิคฮาร์ดแวร์ที่แตกต่างกันเพื่อป้องกันไม่ให้เกิดปรากฏการณ์ Rowhammer ซึ่งรวมถึงการสนับสนุนที่จำเป็นในโปรเซสเซอร์ บางประเภท และโมดูลหน่วยความจำ DRAM บางประเภท [ 9 ] [ 10 ]

พื้นหลัง

ภาพประกอบแสดงโครงสร้างระดับสูงของ DRAM ซึ่งประกอบด้วยเซลล์หน่วยความจำ (สี่เหลี่ยมสีฟ้า), ตัวถอดรหัสแอดเดรส (สี่เหลี่ยมผืนสีเขียว) และตัวขยายสัญญาณ (สี่เหลี่ยมสีแดง)

ในหน่วยความจำแบบไดนามิก (DRAM) แต่ละบิตของข้อมูลที่จัดเก็บจะครอบครองเซลล์หน่วยความจำแยกต่างหากซึ่งสร้างขึ้นทางไฟฟ้าด้วยตัวเก็บประจุ หนึ่งตัว และทรานซิสเตอร์ หนึ่ง ตัว สถานะประจุของตัวเก็บประจุ (มีประจุหรือไม่มีประจุ) เป็นตัวกำหนดว่าเซลล์ DRAM จะจัดเก็บค่าไบนารี เป็น "1" หรือ "0" เซลล์หน่วยความจำ DRAM จำนวนมากถูกบรรจุลงในวงจรรวมพร้อมกับตรรกะเพิ่มเติมบางส่วนที่จัดระเบียบเซลล์เพื่อวัตถุประสงค์ในการอ่าน เขียน และรีเฟรชข้อมูล[ 11 ] [ 12 ]

เซลล์หน่วยความจำ (สี่เหลี่ยมสีน้ำเงินในภาพประกอบทั้งสอง) ถูกจัดเรียงเพิ่มเติมเป็นเมทริกซ์และระบุแอดเดรสผ่านแถวและคอลัมน์ แอดเดรสหน่วยความจำที่ใช้กับเมทริกซ์จะถูกแยกออกเป็นแอดเดรสแถวและแอดเดรสคอลัมน์ ซึ่งจะถูกประมวลผลโดยตัวถอดรหัสแอดเดรส แถวและคอลัมน์ (ในภาพประกอบทั้งสอง สี่เหลี่ยมสีเขียวแนวตั้งและแนวนอน ตามลำดับ) หลังจากที่แอดเดรสแถวเลือกแถวสำหรับการดำเนินการอ่าน (การเลือกนี้เรียกอีกอย่างว่าการเปิดใช้งานแถว ) บิตจากเซลล์ทั้งหมดในแถวจะถูกถ่ายโอนไปยังตัวขยายสัญญาณที่สร้างบัฟเฟอร์แถว (สี่เหลี่ยมสีแดงในภาพประกอบทั้งสอง) จากนั้นจะเลือกบิตที่แน่นอนโดยใช้แอดเดรสคอลัมน์ ดังนั้น การดำเนินการอ่านจึงมีลักษณะทำลายล้าง เนื่องจากดีไซน์ของ DRAM กำหนดให้เซลล์หน่วยความจำต้องถูกเขียนใหม่หลังจากอ่านค่าแล้ว โดยการถ่ายโอนประจุของเซลล์ไปยังบัฟเฟอร์แถว การดำเนินการเขียนจะถอดรหัสแอดเดรสในลักษณะเดียวกัน แต่เนื่องจากดีไซน์ดังกล่าว แถวทั้งหมดจะต้องถูกเขียนใหม่เพื่อให้ค่าของบิตเดียวเปลี่ยนแปลง[ 1 ] : 2–3 [ 11 ] [ 12 ] [ 13 ]

เนื่องจากการจัดเก็บบิตข้อมูลโดยใช้ตัวเก็บประจุที่มีอัตราการคายประจุตามธรรมชาติ เซลล์หน่วยความจำ DRAM จึงสูญเสียสถานะเมื่อเวลาผ่านไปและต้องเขียนข้อมูลใหม่ลงในเซลล์หน่วยความจำทั้งหมดเป็นระยะ ซึ่งเป็นกระบวนการที่เรียกว่าการรีเฟรช[ 1 ] : 3 [ 11 ]ผลอีกประการหนึ่งของการออกแบบคือ หน่วยความจำ DRAM มีความไวต่อการเปลี่ยนแปลงแบบสุ่มในข้อมูลที่จัดเก็บ ซึ่งเรียกว่าข้อผิดพลาดของหน่วยความจำแบบอ่อนและเกิดจากรังสีคอสมิกและสาเหตุอื่นๆ มีเทคนิคต่างๆ ที่ใช้ในการแก้ไขข้อผิดพลาดของหน่วยความจำแบบอ่อนและปรับปรุงความน่าเชื่อถือของ DRAM ซึ่งหน่วยความจำรหัสแก้ไขข้อผิดพลาด (ECC)และรูปแบบขั้นสูง (เช่นหน่วยความจำแบบล็อคสเต็ป ) เป็นที่นิยมใช้มากที่สุด[ 14 ]

ภาพรวม

การเปิดใช้งานแถวอย่างรวดเร็ว (แถวสีเหลือง) อาจเปลี่ยนแปลงค่าของบิตที่เก็บไว้ในแถวเหยื่อ (แถวสีม่วง) [ 15 ] : 2

การเพิ่มความหนาแน่นของวงจรรวมDRAM ส่งผลให้เซลล์หน่วยความจำมีขนาดเล็ลงและมีประจุไฟฟ้าน้อยลง ทำให้มีขอบเขตความคลาดเคลื่อน ในการทำงานต่ำลง อัตราการปฏิสัมพันธ์ทางแม่เหล็กไฟฟ้าระหว่างเซลล์หน่วยความจำเพิ่มขึ้น และมีโอกาสสูญหายของข้อมูลมากขึ้น ด้วยเหตุนี้ จึง พบ ข้อผิดพลาดจากการรบกวนซึ่งเกิดจากการที่เซลล์รบกวนการทำงานของกันและกัน และแสดงออกมาในรูปของการเปลี่ยนแปลงแบบสุ่มในค่าของบิตที่เก็บไว้ในเซลล์หน่วยความจำที่ได้รับผลกระทบ ความตระหนักถึงข้อผิดพลาดจากการรบกวนนี้มีมาตั้งแต่ช่วงต้นทศวรรษ 1970 และIntel 1103ซึ่งเป็นวงจรรวม DRAM รุ่นแรกที่วางจำหน่ายในเชิงพาณิชย์ นับตั้งแต่นั้นมา ผู้ผลิต DRAM ได้ใช้ วิธี การบรรเทา ต่างๆ เพื่อต่อต้านข้อผิดพลาดจากการรบกวน เช่น การปรับปรุงการแยกเซลล์และการทดสอบการผลิต อย่างไรก็ตาม นักวิจัยได้พิสูจน์ในการวิเคราะห์ในปี 2014 ว่า ชิป DDR3 SDRAM ที่วางจำหน่ายในเชิงพาณิชย์ ซึ่งผลิตในปี 2012 และ 2013 มีความเสี่ยงต่อข้อผิดพลาดจากการรบกวน โดยใช้คำว่าRowhammerเพื่อเรียกผลข้างเคียงที่เกี่ยวข้องซึ่งนำไปสู่การพลิกบิต ที่สังเกตได้ [ 1 ] [ 3 ] [ 15 ]

โอกาสที่เอฟเฟกต์ Rowhammer จะเกิดขึ้นในหน่วยความจำ DDR3 [ 16 ]นั้นเกิดจากความหนาแน่นของเซลล์หน่วยความจำ DDR3 ที่สูงและผลลัพธ์ของการโต้ตอบระหว่างเซลล์ที่เกี่ยวข้อง ในขณะที่การเปิดใช้งานแถว DRAM อย่างรวดเร็วได้รับการระบุว่าเป็นสาเหตุหลัก การเปิดใช้งานแถวบ่อยครั้งทำให้เกิด ความผันผวน ของแรงดันไฟฟ้าบนสายเลือกแถวที่เกี่ยวข้อง ซึ่งพบว่าเหนี่ยวนำให้เกิดอัตราการคายประจุที่สูงกว่าปกติในตัวเก็บประจุที่อยู่ในแถวหน่วยความจำใกล้เคียง (ติดกันในกรณีส่วนใหญ่) ซึ่งเรียกว่าแถวเหยื่อหากเซลล์หน่วยความจำที่ได้รับผลกระทบไม่ได้รับการรีเฟรชก่อนที่จะสูญเสียประจุมากเกินไป จะเกิดข้อผิดพลาดจากการรบกวน การทดสอบแสดงให้เห็นว่าอาจสังเกตเห็นข้อผิดพลาดจากการรบกวนได้หลังจากการเข้าถึงแถวหน่วยความจำต่อเนื่องประมาณ 139,000 ครั้ง (พร้อมการล้างแคช ) และอาจมีเซลล์หน่วยความจำมากถึงหนึ่งเซลล์ในทุกๆ 1,700 เซลล์ที่อ่อนไหว การทดสอบเหล่านั้นยังแสดงให้เห็นว่าอัตราของข้อผิดพลาดจากการรบกวนไม่ได้รับผลกระทบอย่างมากจากอุณหภูมิแวดล้อมที่เพิ่มขึ้น ในขณะที่ขึ้นอยู่กับเนื้อหาจริงของ DRAM เนื่องจากรูปแบบบิต บางอย่าง ส่งผลให้อัตราข้อผิดพลาดจากการรบกวนสูงขึ้นอย่างมีนัยสำคัญ[ 1 ] [ 2 ] [ 15 ] [ 17 ]

รูปแบบหนึ่งที่เรียกว่าการตอกสองด้านเกี่ยวข้องกับการเปิดใช้งานแถว DRAM สองแถวที่อยู่รอบแถวเป้าหมาย: ในภาพประกอบที่ให้ไว้ในส่วนนี้ รูปแบบนี้จะเปิดใช้งานแถวสีเหลืองทั้งสองแถวโดยมีเป้าหมายเพื่อทำให้เกิดการพลิกบิตในแถวสีม่วง ซึ่งในกรณีนี้จะเป็นแถวเป้าหมาย การทดสอบแสดงให้เห็นว่าวิธีการนี้อาจส่งผลให้เกิดข้อผิดพลาดจากการรบกวนในอัตราที่สูงขึ้นอย่างมีนัยสำคัญ เมื่อเทียบกับรูปแบบที่เปิดใช้งานเพียงแถว DRAM ข้างเคียงแถวเป้าหมายเพียงแถวเดียว[ 4 ] [ 18 ] : 19–20 [ 19 ]

เนื่องจากผู้ผลิต DRAM ได้นำมาตรการบรรเทามาใช้ รูปแบบจึงต้องมีความซับซ้อนมากขึ้นเพื่อหลีกเลี่ยงมาตรการบรรเทาของ Rowhammer รูปแบบ Rowhammer รุ่นใหม่กว่านั้นรวมถึงรูปแบบที่ไม่สม่ำเสมอตามความถี่[ 20 ]รูปแบบเหล่านี้ประกอบด้วยคู่ผู้โจมตีสองด้านจำนวนมาก โดยแต่ละคู่จะถูกโจมตีด้วยความถี่ เฟส และแอมพลิจูดที่แตกต่างกัน การใช้สิ่งนี้และการซิงโครไนซ์รูปแบบกับคำสั่ง REFRESH ทำให้สามารถระบุ "จุดบอด" ได้อย่างมีประสิทธิภาพมาก ซึ่งมาตรการบรรเทาไม่สามารถให้การป้องกันได้อีกต่อไป จากแนวคิดนี้ นักวิชาการได้สร้างฟัซเซอร์ Rowhammer ชื่อBlacksmith [ 21 ]ที่สามารถหลีกเลี่ยงมาตรการบรรเทาที่มีอยู่บนอุปกรณ์ DDR4 ทั้งหมดได้

การบรรเทา

มีวิธีการต่างๆ มากมายสำหรับการตรวจจับ การป้องกัน การแก้ไข หรือการบรรเทาผลกระทบของ Rowhammer ที่ประสบความสำเร็จมากบ้างน้อยบ้าง การทดสอบแสดงให้เห็นว่ารหัสแก้ไขข้อผิดพลาด แบบง่าย ซึ่งให้ ความสามารถ ในการแก้ไขข้อผิดพลาดเดี่ยวและการตรวจจับข้อผิดพลาดคู่ (SECDED) ไม่สามารถแก้ไขหรือตรวจจับข้อผิดพลาดรบกวนที่สังเกตได้ทั้งหมด เนื่องจากบางข้อผิดพลาดมีบิตที่พลิกมากกว่าสองบิตต่อคำในหน่วยความจำ [ 1 ] : 8 [ 15 ] : 32 ยิ่งไปกว่านั้น การวิจัยแสดงให้เห็นว่าการพลิก Rowhammer สามบิตที่กำหนดเป้าหมายอย่างแม่นยำจะป้องกันไม่ให้หน่วยความจำ ECC สังเกตเห็นการแก้ไข[ 22 ] [ 23 ]

วิธีแก้ปัญหาที่มีประสิทธิภาพน้อยกว่าคือการแนะนำการรีเฟรชหน่วยความจำที่บ่อยขึ้น โดยช่วงเวลาการรีเฟรชจะสั้นกว่า 64 มิลลิวินาทีตามปกติ[ a ]แต่วิธีนี้ส่งผลให้มีการใช้พลังงานสูงขึ้นและภาระการประมวลผลเพิ่มขึ้น ผู้จำหน่ายบางรายมี การอัปเดต เฟิร์มแวร์ที่ใช้การบรรเทาประเภทนี้[ 24 ]หนึ่งในมาตรการป้องกันที่ซับซ้อนกว่าคือ การระบุแถวหน่วยความจำที่เข้าถึง บ่อยโดยใช้ตัวนับและรีเฟรชแถวที่อยู่ใกล้เคียงอย่างเชิงรุก อีกวิธีหนึ่งคือการรีเฟรชแถวหน่วยความจำที่อยู่ใกล้เคียงกับแถวที่เข้าถึงแบบสุ่มเพิ่มเติมเป็นครั้งคราวโดยไม่คำนึงถึงความถี่ในการเข้าถึง การวิจัยแสดงให้เห็นว่ามาตรการป้องกันทั้งสองนี้ส่งผลกระทบต่อประสิทธิภาพเพียงเล็กน้อย[ 1 ] : 10–11 [ 25 ]

นับตั้งแต่การเปิดตัวสถาปัตยกรรมไมโคร Ivy Bridge โปรเซสเซอร์ Intel Xeonรองรับสิ่งที่เรียกว่าการรีเฟรชแถวเป้าหมายเสมือน (pTRR) ซึ่งสามารถใช้ร่วมกับโมดูลหน่วยความจำแบบอินไลน์คู่ DDR3 (DIMM) ที่สอดคล้องกับ pTRR เพื่อลดผลกระทบของ Rowhammer โดยการรีเฟรชแถวที่อาจได้รับผลกระทบโดยอัตโนมัติ โดยไม่มีผลเสียต่อประสิทธิภาพหรือการใช้พลังงาน เมื่อใช้กับ DIMM ที่ไม่สอดคล้องกับ pTRR โปรเซสเซอร์ Xeon เหล่านี้จะทำการรีเฟรช DRAM ด้วยความถี่เป็นสองเท่าของความถี่ปกติ ซึ่งส่งผลให้ความหน่วงในการเข้าถึงหน่วยความจำสูงขึ้นเล็กน้อยและอาจลดแบนด์วิดท์ของหน่วยความจำได้ถึง 2–4% [ 9 ]

มาตรฐาน หน่วยความจำมือถือ LPDDR4ที่เผยแพร่โดยJEDEC [ 26 ]ประกอบด้วยการสนับสนุนฮาร์ดแวร์เสริมสำหรับสิ่งที่เรียกว่าการรีเฟรชแถวเป้าหมาย (TRR) ซึ่งป้องกันเอฟเฟกต์ Rowhammer โดยไม่ส่งผลเสียต่อประสิทธิภาพหรือการใช้พลังงาน[ 10 ] [ 27 ] [ 28 ]นอกจากนี้ ผู้ผลิตบางรายยังนำ TRR มาใช้ในผลิตภัณฑ์DDR4 ของตน [ 29 ] [ 30 ]แม้ว่าจะไม่ได้เป็นส่วนหนึ่งของมาตรฐานหน่วยความจำ DDR4 ที่เผยแพร่โดย JEDEC ก็ตาม[ 31 ]ภายใน TRR จะระบุแถวเหยื่อที่เป็นไปได้ โดยการนับจำนวนการเปิดใช้งานแถวและเปรียบเทียบกับ ค่า จำนวนการเปิดใช้งานสูงสุด (MAC) และหน้าต่างการเปิดใช้งานสูงสุด (t MAW ) ที่ กำหนดไว้ล่วงหน้า เฉพาะชิป และรีเฟรชแถวเหล่านี้เพื่อป้องกันการพลิกบิต ค่า MAC คือจำนวนการเปิดใช้งานแถวทั้งหมดสูงสุดที่อาจพบได้ในแถว DRAM เฉพาะภายในช่วงเวลาที่เท่ากับหรือสั้นกว่า t MAWก่อนที่แถวข้างเคียงจะถูกระบุว่าเป็นแถวเหยื่อ TRR อาจทำเครื่องหมายแถวเป็นแถวเหยื่อหากผลรวมของการเปิดใช้งานแถวสำหรับสองแถวข้างเคียงถึงขีดจำกัด MAC ภายในช่วงเวลา t MAW [ 26 ] [ 32 ]งานวิจัยแสดงให้เห็นว่าการลดผลกระทบของ TRR ที่ใช้กับชิป DDR4 UDIMM และ LPDDR4X จากอุปกรณ์ที่ผลิตระหว่างปี 2019 และ 2020 นั้นไม่มีประสิทธิภาพในการป้องกัน Rowhammer [ 20 ]

เนื่องจากความจำเป็นในการเปิดใช้งานแถว DRAM จำนวนมากอย่างรวดเร็ว การโจมตี Rowhammer จึงก่อให้เกิดการเข้าถึงหน่วยความจำที่ไม่ได้แคชจำนวนมากซึ่งทำให้เกิดแคชมิสซึ่งสามารถตรวจจับได้โดยการตรวจสอบอัตราการเกิดแคชมิสเพื่อหาค่าสูงสุดที่ผิดปกติโดยใช้ตัวนับประสิทธิภาพฮาร์ดแวร์[ 4 ] [ 33 ]

ซอฟต์แวร์วินิจฉัยหน่วยความจำ MemTest86เวอร์ชัน 5.0 ซึ่งวางจำหน่ายเมื่อวันที่ 3 ธันวาคม พ.ศ. 2556 ได้เพิ่มการทดสอบ Rowhammer ที่ตรวจสอบว่า RAM ของคอมพิวเตอร์มีความเสี่ยงต่อข้อผิดพลาดจากการรบกวนหรือไม่ แต่จะใช้งานได้ก็ต่อเมื่อคอมพิวเตอร์บูต ด้วย UEFIเท่านั้น หากไม่ใช้ UEFI จะบูตเวอร์ชันเก่ากว่าที่ไม่มีการทดสอบ hammer [ 34 ]

ผลกระทบ

การป้องกันหน่วยความจำซึ่งเป็นวิธีป้องกันไม่ให้กระบวนการเข้าถึงหน่วยความจำที่ไม่ได้กำหนดให้กับแต่ละกระบวนการนั้น เป็นหนึ่งในแนวคิดเบื้องหลังระบบปฏิบัติการ สมัยใหม่ส่วนใหญ่ การใช้การป้องกันหน่วยความจำร่วมกับกลไกที่เกี่ยวข้องกับความปลอดภัยอื่นๆ เช่นวงแหวนป้องกันจะช่วยให้สามารถแยกสิทธิ์ระหว่างกระบวนการได้ โดยที่โปรแกรม และระบบคอมพิวเตอร์โดยทั่วไปจะถูกแบ่งออกเป็นส่วนๆ ที่จำกัด สิทธิ์เฉพาะที่จำเป็นต่อการทำงานเฉพาะอย่าง การใช้การแยกสิทธิ์ยังสามารถลดขอบเขตความเสียหายที่อาจเกิดขึ้นจาก การโจมตี ความปลอดภัยของคอมพิวเตอร์ได้ โดยจำกัดผลกระทบให้อยู่เฉพาะส่วนต่างๆ ของระบบ[ 35 ] [ 36 ]

ข้อผิดพลาดการรบกวน (อธิบายไว้ในส่วนด้านบน ) ทำลายชั้นการป้องกันหน่วยความจำต่างๆ ได้อย่างมีประสิทธิภาพโดยการ " ลัดวงจร " ที่ระดับฮาร์ดแวร์ต่ำมาก ทำให้เกิดเวกเตอร์การโจมตี ประเภทเดียว ที่อนุญาตให้กระบวนการเปลี่ยนแปลงเนื้อหาของส่วนต่างๆ ของหน่วยความจำหลักโดยการจัดการฮาร์ดแวร์หน่วยความจำพื้นฐานโดยตรง[ 2 ] [ 4 ] [ 18 ] [ 37 ]ในทางตรงกันข้าม เวกเตอร์การโจมตีแบบ "ดั้งเดิม" เช่นบัฟเฟอร์โอเวอร์โฟลว์มุ่งเป้าไปที่การหลีกเลี่ยงกลไกการป้องกันในระดับซอฟต์แวร์ โดยใช้ประโยชน์จากข้อผิดพลาดในการเขียนโปรแกรมต่างๆ เพื่อให้สามารถเปลี่ยนแปลงเนื้อหาหน่วยความจำหลักที่ไม่สามารถเข้าถึงได้[ 38 ]

ช่องโหว่

hammer: mov ( X ), %eax // อ่านจากที่อยู่ X mov ( Y ), %ebx // อ่านจากที่อยู่ Y clflush ( X ) // ล้างแคชสำหรับที่อยู่ X clflush ( Y ) // ล้างแคชสำหรับที่อยู่ Y jmp hammer
ส่วนหนึ่งของ โค้ด แอสเซมบลี x86ที่ทำให้เกิดเอฟเฟกต์ row hammer (ที่อยู่หน่วยความจำXและYต้องแมปไปยังแถว DRAM ที่แตกต่างกันในธนาคารหน่วยความจำ เดียวกัน ) [ 1 ] : 3 [ 4 ] [ 18 ] : 13–15

งานวิจัยเบื้องต้นเกี่ยวกับผลกระทบของ Rowhammer ซึ่งตีพิมพ์และนำเสนอในเดือนมิถุนายน 2014 ในงานประชุมวิชาการนานาชาติว่าด้วยสถาปัตยกรรมคอมพิวเตอร์ได้อธิบายและวิเคราะห์ลักษณะของข้อผิดพลาดจากการรบกวนการอ่าน DRAM ในชิป DDR3 DRAM เอกสารฉบับนี้[ 1 ]ได้ทำการศึกษาโมดูล DDR3 DRAM จริงจำนวน 129 โมดูลจากผู้ผลิต DRAM สามราย และแสดงให้เห็นถึงการพลิกบิตจากการรบกวนการอ่านใน 110 โมดูล นอกจากนี้ยังแสดงให้เห็นว่าโปรแกรมระดับผู้ใช้ที่ทำงานบนระบบจริงสองระบบจาก Intel และ AMD ทำให้เกิดการพลิกบิตในหน่วยความจำหลัก งานวิจัยนี้ชี้ให้เห็นถึงศักยภาพในการสร้างการโจมตี โดยกล่าวว่า "ด้วยความพยายามทางวิศวกรรมบางอย่าง เราเชื่อว่าเราสามารถพัฒนา Code 1a ให้เป็นการโจมตีแบบรบกวนที่ฉีดข้อผิดพลาดเข้าไปในโปรแกรมอื่น ทำให้ระบบล่ม หรืออาจถึงขั้นยึดการควบคุมระบบได้ เราปล่อยงานวิจัยดังกล่าวไว้สำหรับอนาคต เนื่องจากวัตถุประสงค์หลักในงานนี้คือการทำความเข้าใจและป้องกันข้อผิดพลาดจากการรบกวน DRAM" [ 1 ]

เอกสารวิจัยฉบับต่อมาในเดือนตุลาคม 2557 ไม่ได้บ่งชี้ถึงการมีอยู่ของปัญหาที่เกี่ยวข้องกับความปลอดภัยใดๆ ที่เกิดจากผลกระทบของ Rowhammer [ 16 ]

เมื่อวันที่ 9 มีนาคม 2558 โครงการ Project ZeroของGoogleได้เปิดเผย ช่องโหว่ การยกระดับสิทธิ์ ที่ใช้งานได้สองรายการ โดยอิงจากเอฟเฟกต์ Rowhammer ซึ่งยืนยันถึงลักษณะที่สามารถใช้ประโยชน์ได้บน สถาปัตยกรรม x86-64ช่องโหว่ที่เปิดเผยรายการหนึ่งมุ่งเป้าไปที่ กลไก Google Native Client (NaCl) สำหรับการเรียกใช้ชุดคำสั่งเครื่อง x86-64 ที่จำกัด ภายใน แซนด์ บ็อกซ์[ 18 ] : 27 โดยใช้ประโยชน์จากเอฟเฟกต์ Rowhammer เพื่อหลุดออกจากแซนด์บ็อกซ์และได้รับความสามารถในการเรียกใช้ระบบโดยตรงช่องโหว่ NaCl นี้ ซึ่งติดตามเป็นCVE - 2015-0565ได้รับการแก้ไขโดยการปรับเปลี่ยน NaCl เพื่อไม่ให้สามารถเรียกใช้ คำสั่งเครื่อง ( cache line flush [ 39 ] ) ซึ่งก่อนหน้านี้เชื่อว่าจำเป็นสำหรับการสร้างการโจมตี Rowhammer ที่มีประสิทธิภาพ[ 2 ] [ 4 ] [ 37 ]clflush

ช่องโหว่ที่สองที่ Project Zero เปิดเผยนั้นทำงานเป็น กระบวนการ Linux ที่ไม่มีสิทธิ์พิเศษ บนสถาปัตยกรรม x86-64 โดยใช้ประโยชน์จากเอฟเฟกต์ Rowhammer เพื่อเข้าถึงหน่วยความจำทางกายภาพ ทั้งหมด ที่ติดตั้งในคอมพิวเตอร์ได้อย่างไม่จำกัด ด้วยการรวมข้อผิดพลาดการรบกวนเข้ากับการพ่นหน่วยความจำ ช่องโหว่นี้สามารถเปลี่ยนแปลงรายการตารางเพจ[ 18 ] : 35 ที่ระบบ หน่วยความจำเสมือนใช้ในการแมปที่อยู่เสมือนไปยังที่อยู่ทางกายภาพซึ่งส่งผลให้ช่องโหว่นี้สามารถเข้าถึงหน่วยความจำได้อย่างไม่จำกัด[ 18 ] : 34, 36–57 เนื่องจากลักษณะของมันและความไม่สามารถของสถาปัตยกรรม x86-64 ในการสร้างclflushคำสั่งเครื่องที่มีสิทธิ์พิเศษ ช่องโหว่นี้จึงแทบจะไม่สามารถลดผลกระทบในคอมพิวเตอร์ที่ไม่ได้ใช้ฮาร์ดแวร์ที่มีกลไกป้องกัน Rowhammer ในตัว ในระหว่างการทดสอบความเป็นไปได้ของช่องโหว่ Project Zero พบว่าประมาณครึ่งหนึ่งของแล็ปท็อป ที่ทดสอบ 29 เครื่อง ประสบกับข้อผิดพลาดการรบกวน โดยบางส่วนเกิดขึ้นบนแล็ปท็อปที่อ่อนแอในเวลาไม่ถึงห้านาทีหลังจากเรียกใช้โค้ดที่ทำให้เกิด Rowhammer แล็ปท็อปที่ทดสอบผลิตขึ้นระหว่างปี 2010 ถึง 2014 และใช้หน่วยความจำ DDR3 ที่ไม่ใช่ ECC [ 2 ] [ 4 ] [ 37 ]

ในเดือนกรกฎาคม พ.ศ. 2558 กลุ่มนักวิจัยด้านความปลอดภัยได้ตีพิมพ์เอกสารที่อธิบายวิธีการใช้ประโยชน์จากเอฟเฟกต์ Rowhammer โดยไม่ขึ้นกับสถาปัตยกรรมและชุดคำสั่งclflush แทนที่จะอาศัย คำสั่งในการล้างแคช วิธีการนี้จะเข้าถึงหน่วยความจำที่ไม่ได้แคชโดยการทำให้เกิดการล้างแคช ในอัตราที่สูงมาก โดยใช้รูปแบบการเข้าถึงหน่วยความจำที่เลือกอย่างระมัดระวัง แม้ว่านโยบายการแทนที่แคชจะแตกต่างกันไปในแต่ละโปรเซสเซอร์ แต่วิธีนี้จะเอาชนะความแตกต่างทางสถาปัตยกรรมได้โดยการใช้อัลกอริทึมกลยุทธ์การล้างแคชแบบปรับตัวได้[ 18 ] : 64–68หลักฐาน แนวคิดสำหรับวิธีการนี้มีให้ทั้งในรูปแบบการ ใช้งาน โค้ดเนทีฟและ การใช้งาน JavaScript บริสุทธิ์ ที่ทำงานบนFirefox  39 การใช้งาน JavaScript ที่เรียกว่าRowhammer.js [ 40 ]ใช้อาร์เรย์แบบมีประเภท ขนาดใหญ่ และอาศัยการจัดสรร ภายใน โดยใช้เพจขนาดใหญ่ส่งผลให้แสดงให้เห็นถึงการใช้ประโยชน์จากช่องโหว่ระดับต่ำมากในระดับสูงมาก[ 41 ] [ 42 ] [ 43 ] [ 44 ]

ในเดือนตุลาคม 2559 นักวิจัยได้เผยแพร่ DRAMMER ซึ่งเป็นแอปพลิเคชัน Android ที่ใช้ Rowhammer ร่วมกับวิธีการอื่นๆ เพื่อเข้าถึงสิทธิ์ root บนสมาร์ทโฟนยอดนิยมหลายรุ่นได้อย่างน่าเชื่อถือ[ 45 ]ช่องโหว่นี้ได้รับการยอมรับว่าเป็นCVE - 2016-6728 [ 46 ]และ Google ได้ออกมาตรการแก้ไขภายในหนึ่งเดือน อย่างไรก็ตาม เนื่องจากลักษณะทั่วไปของการโจมตีที่อาจเกิดขึ้นได้ การแก้ไขซอฟต์แวร์ที่มีประสิทธิภาพจึงทำได้ยาก ณ เดือนมิถุนายน 2561 ข้อเสนอการแก้ไขส่วนใหญ่ที่ทำโดยสถาบันการศึกษาและอุตสาหกรรมนั้นไม่สามารถนำไปใช้งานได้จริงหรือไม่เพียงพอที่จะหยุดการโจมตีทั้งหมด ในฐานะมาตรการแก้ไข นักวิจัยได้เสนอการป้องกันแบบเบาที่ป้องกันการโจมตีที่อาศัยการเข้าถึงหน่วยความจำโดยตรง (DMA) โดยการแยกบัฟเฟอร์ DMA ด้วยแถวป้องกัน[ 47 ] [ 48 ]

ในเดือนพฤษภาคม พ.ศ. 2563 งาน TRRespass [ 49 ]แสดงให้เห็นว่าชิป DDR4 DRAM ที่มีอยู่ ซึ่งอ้างว่าได้รับการปกป้องและทนทานต่อ Rowhammer นั้น แท้จริงแล้วมีความเสี่ยงต่อ Rowhammer งานนี้ได้แนะนำรูปแบบการเข้าถึงใหม่ที่เรียกว่า many-sided hammering ซึ่งหลีกเลี่ยงการป้องกัน Rowhammer ที่ถูกนำไปใช้ภายในชิป DDR4 DRAM

ในเดือนพฤษภาคม 2021 ทีมวิจัยของ Google ประกาศช่องโหว่ใหม่ Half-Double ซึ่งใช้ประโยชน์จากฟิสิกส์ที่แย่ลงของชิป DRAM รุ่นใหม่บางรุ่น[ 50 ]

ในเดือนมีนาคม พ.ศ. 2567 กลุ่มนักวิจัยที่ETH Zürichได้ประกาศ ZenHammer ซึ่งเป็นช่องโหว่ rowhammer สำหรับ ชิป AMD Zenและยังได้ประกาศการใช้ rowhammer ครั้งแรกเพื่อเจาะช่องโหว่DDR5 SDRAMอีก ด้วย [ 51 ] [ 52 ]

ในเดือนมิถุนายน พ.ศ. 2567 กลุ่มนักวิจัยที่ETH Zürichประกาศ RISC-H ซึ่งเป็นช่องโหว่ Rowhammer สำหรับ ชิป RISC-Vนับเป็นการศึกษา Rowhammer ครั้งแรกบน RISC-V [ 53 ]

ในเดือนกันยายน พ.ศ. 2568 กลุ่มนักวิจัยที่ETH Zürichประกาศ Phoenix ซึ่งประสบความสำเร็จในการหลีกเลี่ยงมาตรการบรรเทา Rowhammer Target Row Refresh ทั้งหมดในตัวอย่าง DDR5 SDRAM ของผู้ผลิต รายใหญ่ที่สุดรายหนึ่งโดยใช้รูปแบบที่ยาวและซับซ้อนกว่า และได้สาธิตช่องโหว่ในทางปฏิบัติ[ 54 ]

ดูเพิ่มเติม

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

หมายเหตุ

  1. ^งานวิจัยแสดงให้เห็นว่าอัตราข้อผิดพลาดการรบกวนใน โมดูลหน่วยความจำ DDR3 ที่เลือกไว้ จะเข้าใกล้ศูนย์เมื่อช่วงเวลาการรีเฟรชหน่วยความจำสั้นลงประมาณเจ็ดเท่าจากค่าเริ่มต้น 64 มิลลิวินาที [ 15 ] : 17, 26
  • บันทึกบางส่วนเกี่ยวกับ DRAM (#rowhammer) 9 มีนาคม 2015 โดย Robert Graham
  • ข้อบกพร่องด้านฮาร์ดแวร์ของ Rowhammer คุกคามความปลอดภัยของโน้ตบุ๊ก , InfoWorld, 9 มีนาคม 2015, โดย Serdar Yegulalp
  • กลไกความล้มเหลวที่รู้จักกันดีของหน่วยความจำ DDR3 ที่เรียกว่า "Row Hammer"บน YouTube , 17 กรกฎาคม 2014 โดย Barbara Aichinger
  • สิทธิบัตร US 20140059287 A1: คำสั่งรีเฟรช Row hammer , 27 กุมภาพันธ์ 2014, โดย Kuljit Bains และคณะ
  • ช่องโหว่การยกระดับสิทธิ์ Row Hammer, คำแนะนำด้านความปลอดภัย ของ Cisco Systems , 11 มีนาคม 2558
  • ARMOR: ตัวตรวจจับแถวร้อนในหน่วยความจำแบบเรียลไทม์มหาวิทยาลัยแมนเชสเตอร์โดย Mohsen Ghasempour และคณะ
  • การใช้ข้อผิดพลาดของหน่วยความจำเพื่อโจมตีเครื่องเสมือน , 6 มีนาคม 2546, โดย Sudhakar Govindavajhala และ Andrew W. Appel
  • โปรแกรมสำหรับทดสอบปัญหา "rowhammer" ของ DRAMซอร์สโค้ดอยู่บนGitHub
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Row_hammer&oldid=1360733446 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ ค้อนแถว

Rowhammer (หรือเขียนว่า row hammer หรือ RowHammer ) เป็นช่องโหว่ด้านความปลอดภัยของคอมพิวเตอร์ที่ใช้ประโยชน์จากผลข้างเคียงที่ไม่พึงประสงค์ใน หน่วยความจำแบบไดนามิกแรม (DRAM) ซึ่ง...

พื้นหลัง

ใน หน่วยความจำแบบไดนามิก (DRAM) แต่ละ บิต ของข้อมูลที่จัดเก็บจะครอบครองเซลล์หน่วยความจำแยกต่างหากซึ่งสร้างขึ้นทางไฟฟ้าด้วย ตัวเก็บประจุ หนึ่งตัว และ ทรานซิสเตอร์ หนึ่ง ตัว สถานะประจุของตัวเก็บประจุ (มีประจุหรือไม่มีประจุ) เป็นตัวกำหนดว่าเซลล์ DRAM จะจัดเก็บ...

ภาพรวม

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

การบรรเทา

มีวิธีการต่างๆ มากมายสำหรับการตรวจจับ การป้องกัน การแก้ไข หรือการบรรเทาผลกระทบของ Rowhammer ที่ประสบความสำเร็จมากบ้างน้อยบ้าง การทดสอบแสดงให้เห็นว่า รหัสแก้ไขข้อผิดพลาด แบบง่าย ซึ่งให้ ความสามารถ ในการแก้ไขข้อผิดพลาดเดี่ยวและการตรวจจับข้อผิดพลาดคู่ (SECDED)...