มีใหม่สองข้อบกพร่องด้านความปลอดภัยร้ายแรงค้นพบเป็นอสุรกายและล่มสลาย
Raspberry Pi มีความเสี่ยงต่อ Spectre และ / หรือ Meltdown หรือไม่?
มีใหม่สองข้อบกพร่องด้านความปลอดภัยร้ายแรงค้นพบเป็นอสุรกายและล่มสลาย
Raspberry Pi มีความเสี่ยงต่อ Spectre และ / หรือ Meltdown หรือไม่?
คำตอบ:
ตามARMตัวเองแกนประมวลผลที่ใช้ในทุกรูปแบบก่อนที่จะ Pi 4 ไม่เสี่ยง
โปรเซสเซอร์แขนส่วนใหญ่ไม่ได้รับผลกระทบจากการเปลี่ยนแปลงของกลไกการเก็งกำไรด้านข้างนี้ รายการที่ชัดเจนของชุดย่อยขนาดเล็กของหน่วยประมวลผลที่ออกแบบโดยแขนซึ่งมีความอ่อนไหวสามารถพบได้ที่ด้านล่าง [ดูลิงค์สำหรับตาราง]
แกนประมวลผลที่ใช้โดย Pis ที่เก่ากว่าคือ:
Pi 1และZero (W) : ARM11
Pi 2 V1 : ARM Cortex-A7
Pi 2 V1.2และPi 3 : ARM Cortex-A53
ไม่มีแกนกลางด้านบนใดที่ระบุว่ามีความเสี่ยงต่อการโจมตีในทุกรูปแบบ
ราสเบอร์รี่ Pi 4ใช้Cortex-A72ซึ่งถูกระบุว่าเป็นความเสี่ยงที่จะสายพันธุ์ 1, 2, 3a และ 4 ตามที่ระบุในคือราสเบอร์รี่ Pi 4 ความเสี่ยงที่จะหาประโยชน์ผี? Raspbian มีซอฟต์แวร์ที่ช่วยลดช่องโหว่เหล่านี้ดังนั้นความเสี่ยงในการถูกแสวงประโยชน์ควรอยู่ในระดับต่ำ ระบบปฏิบัติการอื่นอาจไม่มีการผ่อนปรนที่เหมาะสมและในขณะที่ARM แจ้งว่ามีการลดการปล่อยฮาร์ดแวร์สำหรับ Cortex-A72 มันก็ไม่มีความชัดเจนว่ามันถูกนำไปใช้กับ Pi 4 หรือไม่
หมายเหตุตัวแปรที่ 1 และ 2 (CVE-2017-5753 และ CVE-2017-5715) เป็นที่รู้จักกันเป็นอสุรกายและสายพันธุ์ที่ 3 (CVE-2017-5754) และ 3a (การโจมตีที่เกี่ยวข้องกับการตรวจสอบโดย ARM) จะเรียกว่าล่มสลาย ดังนั้นไม่มีอุปกรณ์ Raspberry Pi ใด ๆ ก่อน Pi 4 ที่เชื่อว่ามีความเสี่ยงต่อ Spectre หรือ Meltdown
Pi (ทุกรุ่น) ไม่ได้มีช่องโหว่
Specter และ Meltdown ทั้งคู่ต้องการการดำเนินการที่ไม่เป็นไปตามคำสั่ง Cortex-A7ใช้ใน Pi 2 ต้นและที่Cortex A53ใช้ในภายหลัง Pi 2 และ 3 Pi เป็นสถาปัตยกรรมอย่างเคร่งครัดในการสั่งซื้อ ARM11ใช้ใน Pi 1 เป็นเพียงบางส่วนออกจากการสั่งซื้อ แต่ไม่ใช่ในลักษณะที่อนุญาตให้ผีหรือล่มสลายในการทำงาน
ARM ยืนยันสิ่งนี้ : มีเพียงชุดย่อยที่ จำกัด ของตัวประมวลผล ARM เท่านั้นที่มีฮาร์ดแวร์ที่ทำให้พวกเขามีความเสี่ยงต่อ Spectre ส่วนย่อยที่ จำกัด ยิ่งกว่านั้นก็มีความเสี่ยงต่อการล่มสลายและเชื่อว่าพวกเขาทุกคนอนุญาตให้บรรเทาภัยคุกคามได้
ฉันต้องการเสนอสิ่งที่แตกต่างให้กับฉัน
เกี่ยวกับ Meltdown มันเป็นช่องโหว่ที่เฉพาะเจาะจงมากในโปรเซสเซอร์บางตัวดังนั้นถ้า ARM บอกว่า CPU ใน Raspberry Pi นั้นไม่ได้มีช่องโหว่ดังนั้นจึงน่าเชื่อถือ
อย่างไรก็ตาม Specter เป็นช่องโหว่ทั่วไปมากกว่า จนถึงตอนนี้มีเพียงสองรุ่นที่ได้รับการสาธิต แต่ฉันค่อนข้างแน่ใจว่ามีอีกหลายรุ่น ข้อผิดพลาดใน CPU คือสถานะตัวทำนายสาขาไม่ได้ถูกฟลัชเมื่อทำการสลับบริบทและสถานะตัวทำนายสาขานั้นจะถูกทำดัชนีโดยบิตลำดับต่ำของที่อยู่คำสั่งสาขาและไม่ติดแท็กเลย ดังนั้นคุณอาจมีสองสาขาที่แบ่งปันสถานะตัวทำนายสาขาเดียวกันแม้ข้ามขอบเขตกระบวนการ
ฉันมั่นใจมากว่าซีพียูใน Raspberry Pi ทุกรุ่นนั้นคล้ายคลึงกับซีพียูอื่น ๆ ทั้งหมดในนั้นที่ตัวทำนายสาขาเป็นเพียงตัวนับจำนวน 2 บิตที่ค่อนข้างอิ่มตัว (ถ่ายอย่างรุนแรงถ่ายอย่างอ่อน ๆ ไม่ได้ถ่าย) ดัชนีของอาร์เรย์นี้เป็นบิตลำดับต่ำของที่อยู่คำสั่งสาขาและไม่มีแท็กและสถานะตัวทำนายนี้จะไม่ถูกลบทิ้ง
ตอนนี้หากสองสาขามีสถานะผู้ทำนายเดียวกันคุณสามารถวัดได้ว่าสาขาใดได้ดำเนินการในอดีตที่ผ่านมา ข้อมูลรั่วไหลของอสุรกายจึงมีอยู่! หากคุณสามารถทริกเกอร์เบราว์เซอร์ให้รันการแบ่งรหัสบางอย่างบนรหัสผ่านของคุณจาก JavaScript และวัดวิธีที่สาขาหายไปคุณสามารถแยกรหัสผ่านได้อย่างแน่นอน ตอนนี้เป็นตัวอย่างที่ดีไม่มีใครที่จะแยกย่อยรหัสผ่านของคุณทุกบิตในลักษณะที่สามารถเรียกใช้จาก JavaScript แต่สิ่งนี้แสดงให้เห็นถึงปัญหา
อย่าเชื่อทุกอย่างที่แขนพูด สิ่งที่ ARM หมายถึงอาจเป็นไปได้ว่าการใช้ประโยชน์จาก Google ที่พัฒนาแล้วไม่สามารถใช้งานได้บน CPU ARM เหล่านี้ ไม่ได้หมายความว่าพวกเขาจะเป็นอมตะแก่ Spectre การเอารัดเอาเปรียบชนิดอื่นอาจใช้งานได้
ดูคำถามนี้: https://security.stackexchange.com/questions/176678/is-branch-predictor-flush-instruction-a-complete-spectre-fixและเข้าใจความหมายของคำตอบ โค้ดจาวาสคริปต์ปลอมที่ทำงานในเบราว์เซอร์ของคุณอาจเป็นเพราะ Spectre สามารถวัดได้ว่าสาขาอื่น ๆ ในกระบวนการได้หายไปอย่างไร แม้แต่คำสั่งล้างตัวทำนายสาขาจะไม่แก้ไขปัญหา JavaScript อันธพาลนี้เว้นแต่เบราว์เซอร์จะล้างตัวทำนายสาขาอย่างแข็งขันก่อนที่จะเรียกใช้รหัสที่ไม่น่าเชื่อถือ
Spectre จะอยู่กับเราเป็นเวลานานมากเนื่องจากตัวพยากรณ์สาขาใช้ 14 บิตเนื่องจากดัชนีไม่ได้ติดแท็กส่วนที่เหลืออีก 18 บิตของพื้นที่ที่อยู่แบบ 32- บิตเพราะจะต้องใช้ 20 บิต (2 บิตอิ่มตัวเคาน์เตอร์ , 18 bits tag) แทนที่จะเป็น 2 bits นี่จะเพิ่มขนาดตัวทำนายสาขาเป็นสิบเท่า! ฉันคาดหวังว่าผู้ผลิตซีพียูจะเพิ่มคำสั่งล้างสาขาตัวทำนายที่ทำงานได้แม้ในพื้นที่ผู้ใช้ที่ไม่มีสิทธิ์พิเศษและเคอร์เนลที่จะใช้เมื่อสลับบริบทและพื้นที่ผู้ใช้ที่จะใช้เมื่อเรียกใช้รหัส JITed ที่ไม่น่าเชื่อถือ สิ่งนี้จะแก้ไขปัญหา Spectre ส่วนใหญ่ในทางปฏิบัติ แต่ในทางทฤษฎีไม่ใช่ปัญหาทั้งหมด