ส่วน "ข้อบกพร่อง" ของ / proc / cpuinfo แสดงให้เห็นอะไรจริง ๆ


23

บน Debian ยืดและการทดสอบระบบ / /proc/cpuinfoมือปราบกับเคอร์เนลในปัจจุบันและเฟิร์มแวติดตั้งผมยังคงเห็นการล่มสลายและปีศาจระบุว่าเป็นข้อบกพร่องใน

อย่างไรก็ตามการรันspectre-meltdown-checkerรายการนั้นไม่เสี่ยง

ดังนั้นฉันสงสัยว่าอะไร/proc/cpuinfoจะแสดง นี่เป็นเพียงช่องโหว่สำหรับซีพียูนี้และจะแสดงรายการเหล่านั้นเสมอแม้จะมีระบบที่ถูกติดตั้งหรือไม่?

คำตอบ:


22

ความตั้งใจของฟิลด์“ บัก” ใน/proc/cpuinfoอธิบายไว้ในข้อความยืนยันที่แนะนำ :

x86/cpufeature: เพิ่มการตั้งค่าสถานะข้อผิดพลาด /proc/cpuinfo

ดัมพ์แฟล็กที่แสดงว่าเราตรวจพบและ / หรือใช้การแก้ไขข้อบกพร่องกับซีพียูที่เรากำลังดำเนินการอยู่ในลักษณะที่คล้ายคลึงกับแฟล็กฟีเจอร์

ข้อดีคือสิ่งเหล่านั้นไม่ได้สะสมอยู่ตามเวลาเหมือนคุณสมบัติของ CPU

ก่อนหน้านี้ข้อผิดพลาดฮาร์ดแวร์ที่เคอร์เนลตรวจพบถูกระบุว่าเป็นคุณสมบัติแยกต่างหาก ( เช่นข้อบกพร่อง F00F ที่น่าอับอายซึ่งมีf00f_bugรายการของตัวเองใน/proc/cpuinfoระบบ x86 แบบ 32 บิต) ว่า“โรคจิต” รายการถูกนำไปถือเหล่านี้ในคุณลักษณะเดียวที่จะไปข้างหน้าในรูปแบบเดียวกับธง x86 CPU

เท่าที่ความหมายของรายการในทางปฏิบัติดังที่คุณเห็นในข้อความทั้งหมดที่รับประกันได้คือเคอร์เนลตรวจพบข้อบกพร่องของฮาร์ดแวร์ คุณจะต้องดูที่อื่น (ข้อความบูตหรือ/procรายการเฉพาะหรือ/sysรายการเช่นไฟล์ใน/sys/devices/system/cpu/vulnerabilities/) เพื่อตรวจสอบว่าปัญหาจะได้รับการจัดการ

ประโยชน์ของรายการ "บั๊ก" ถูก จำกัด ด้วยสองวิธี ข้อแรกคือว่าเนกาทีฟที่แท้จริงไม่สามารถแยกความแตกต่างจากที่ไม่รู้จัก: ถ้าฟิลด์ไม่ได้ระบุ“ cpu_meltdown” คุณไม่สามารถรู้ได้ (แค่จากฟิลด์) ว่านั่นหมายความว่าเคอร์เนลไม่ทราบเกี่ยวกับการล่มสลายหรือ CPU ของคุณไม่ได้รับผลกระทบจาก Meltdown อย่างที่สองคือการตรวจจับนั้นง่ายเกินไป มันผิดด้านความระมัดระวังดังนั้นจึงอาจรายงานว่า CPU ของคุณเสี่ยงเมื่อไม่ได้ใช้งาน เนื่องจาก“ การตรวจจับ” เป็นแบบตั้งโต๊ะความแม่นยำนั้นขึ้นอยู่กับเคอร์เนลเวอร์ชันที่คุณใช้งานอยู่

ในกรณีของ Meltdown และ Specter บั๊กกระบวนการตรวจจับที่ป้อนค่าใน/proc/cpuinfo งานดังต่อไปนี้บน x86:


2
ในกรณีของอสุรกายและการหลอมละลายพวกมันไม่ได้ถูกตรวจจับแม้แต่เพียง แต่คิดเอาเอง ฉันมีลำดับ x86 ที่ไม่ได้รับผลกระทบจากทั้งคู่ แต่เคอร์เนลเพิ่งรายงานว่าเป็นเพราะกฎฮาร์ดโค้ดที่โดยทั่วไปกล่าวว่า "ซีพียู Intel รุ่นเก่ากว่า X ที่ไม่มีแพตช์ไมโครโค้ดที่ใช้นั้นมีความเสี่ยงต่อการล่มสลาย"
..

2
@R .. ซีพียูของคุณรวมอยู่ในตารางในเคอร์เนลหรือไม่? (มองหา“ cpu_no_speculation” ที่นี่เพื่อดูตารางล่าสุด) นั่นเป็นหนึ่งในปัญหาที่เกิดขึ้นกับรายการ“ บัก” wrt Meltdown, Spectre and co. ความแม่นยำของมันขึ้นอยู่กับว่าเคอร์เนลของคุณเป็นอย่างไรเมื่อเร็ว ๆ นี้
Stephen Kitt

ไม่มันเป็น Centerton Bonnellและหายไปจากที่นั่น ฉันจะดูเกี่ยวกับการส่งปะ
..

ไม่มีใครทราบว่านี้ยังคงถูกต้องเมื่อมีการใช้ microcode การปรับปรุงในระหว่างการบูต แต่หลังจากโหลดเคอร์เนล?
Bachsau

12

ช่องโหว่ Meltdown / อสุรกายอยู่บนชิปเซ็ต CPU / ออกแบบสถาปัตยกรรมและระยะสั้นของการซื้อฮาร์ดแวร์อนาคตใหม่แพทช์เป็นภาพลวงตาที่ดีของการรักษาความปลอดภัยในระยะยาว วิธีการใหม่ของการใช้ประโยชน์จากข้อบกพร่องอาจปรากฏขึ้นเมื่อเวลาผ่านไปซึ่งสามารถข้ามแพทช์ปัจจุบัน

กล่าวโดยย่อซอฟต์แวร์แพตช์ / ไมโครโค้ดในปัจจุบันลดปัญหากับวิธีการหาช่องโหว่ของ Spectre / Meltdown แต่ไม่ได้แก้ปัญหาการออกแบบ CPU พื้นฐานที่อนุญาตให้พวกเขาเริ่มแรก ซีพียูที่ได้รับผลกระทบ (หลายชั่วอายุคน) ไม่ได้หยุดที่จะเสี่ยงต่อการถูกโจมตีในระยะยาว

อย่างไรก็ตามในขณะที่ @Gilles ระบุอย่างถูกต้องการมีคำเตือนนั้นไม่ได้หมายความว่าวิธีการหาช่องโหว่ที่รู้จักกันในปัจจุบันจะทำงานได้ พวกเขาจะไม่ทำงานหากติดตั้งแพตช์

ในกรณีที่กล่าวถึงในคำถามเคอร์เนลจะตรวจสอบเฉพาะรุ่น CPU ที่ทราบว่าได้รับผลกระทบจาก Spectre / Meltdown (ซีพียู x86 ทั้งหมดสำหรับตอนนี้ถ้าเรากำลังพูดถึง x86 เท่านั้น) และดังนั้นจึงcpu-insecureยังคงอยู่ในรายการข้อผิดพลาด / /proc/cpuinfoเส้น

/proc/cpuinfoไปตรวจสอบของคุณ มันจะมี cpu_insecure หากเคอร์เนลของคุณมีแพตช์ KPTI

ฉันพบว่าแพทช์ KPTI มีรหัสนี้:

   /* Assume for now that ALL x86 CPUs are insecure */
   setup_force_cpu_bug(X86_BUG_CPU_INSECURE);

และหลังจากการอัพเดตเคอร์เนลคุณจะได้รับ:

bugs      : cpu_insecure

PS มีการปรับปรุงรอบใหม่สำหรับวิธีการใหม่ในการใช้ประโยชน์จาก "บั๊ก" ของ Specter / Meltdown มันอาจจะไม่ใช่ครั้งสุดท้าย


2
เช่นหากคุณสามารถหยุดการซื้อ hw ได้ชั่วคราวให้รอซีพียูรุ่นใหม่ ลูกบอลคริสตัลของฉันบอกฉันว่าเราจะมีเซิร์ฟเวอร์มือสองจำนวนมากที่ขายให้กับถั่วลิสงในระยะปานกลาง
Rui F Ribeiro

ข้อผิดพลาดของ CPU แสดงอยู่ในรายการ/proc/cpuinfoแม้ว่าจะได้รับการผ่อนปรนอย่างเต็มที่จากโปรแกรมแก้ไขซอฟต์แวร์ การมีอยู่ของพวกเขาไม่ได้หมายความว่าระบบของคุณเสี่ยงต่อข้อผิดพลาดนั้น
Gilles 'หยุดความชั่วร้าย'

@Gilles ได้รับคุณจะไม่สามารถใช้ช่องโหว่ที่รู้จักได้ อย่างไรก็ตามเราได้ทำการหาช่องโหว่รอบ ๆ รุ่นที่ 1 แล้วและฉันอยากจะบอกว่ามีความสนใจในเชิงพาณิชย์มากมายในที่นี้การวิจารณ์นักวิจารณ์เกี่ยวกับเรื่องนี้เป็นข้อบกพร่องพื้นฐานในการออกแบบที่จะบังคับให้ออกแบบ CPU หลัก
Rui F Ribeiro

1
นั่นเป็นความจริงของการโจมตีแบบ Spectre / Meltdown พวกมันเป็นประเด็นการออกแบบขั้นพื้นฐานที่จะให้ต่อไป แต่คุณเขียนว่านี่เป็นเรื่องจริงของbugsรายการที่แสดงและนี่เป็นเพียงความผิด ข้อบกพร่องในการออกแบบ CPU ส่วนใหญ่มีวิธีแก้ไขปัญหาซอฟต์แวร์แบบเต็มซึ่งเสียค่าใช้จ่ายเพียงเล็กน้อยเท่านั้น หากเคอร์เนลใช้วิธีแก้ปัญหาข้อผิดพลาดนั้นไม่เป็นอันตราย
Gilles 'ดังนั้น - หยุดความชั่วร้าย'

1
@ รุยโอ้ฉันคิดว่าฉันไม่ได้แสดงความชัดเจนเพียงพอ - ฉันหมายความว่าบทความไม่ตอบคำถามที่ชื่อของตัวเองถามไม่ใช่ว่ามันไม่ได้ตอบคำถามนี้ ;-) (เช่นเดียวกับในชื่อของบทความคือ "วิธีที่ข้อผิดพลาด Spectre ที่ทำลายอุตสาหกรรมยังคงเป็นความลับเป็นเวลาเจ็ดเดือน" แต่บทความไม่ได้อธิบายว่า IMO เป็นอย่างไร)
Stephen Kitt
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.