Meltdown & Spectre
ทีมวิจัยจากมหาวิทยาลัยเวอร์จิเนียร์รายงานถึงช่องโหว่ซีพียูแบบเดียวกับช่องโหว่ Spectre/Meltdown อันโด่งดัง ทีมวิจัยอาศัยการสังเกต micro-op cache ภายในของซีพียูสามารถดึงข้อมูลความลับออกจากซีพียูได้
Spectre/Meltdown นั้นเป็นช่องโหว่ที่อาศัยการสังเกตพฤติกรรมซีพียูว่าตอบสนองต่อคำสั่งใดช้าเร็วเป็นพิเศษบ้าง ทำให้สามารถคาดเดาได้ว่าข้อมูลในหน่วยความจำส่วนที่คนร้ายไม่สามารถอ่านออกมาได้นั้น ที่จริงแล้วมีข้อมูลว่าอะไร
ช่องโหว่ Spectre/Meltdown ถูกเปิดเผยตั้งแต่ต้นปี 2018 และเปิดทางให้แฮกเกอร์ที่สามารถรันโค้ดในเครื่องของเหยื่อได้ สามารถอ่านข้อมูลในหน่วยความจำส่วนที่ไม่ได้รับอนุญาตได้ ล่าสุดกูเกิลสร้างเว็บ leaky.page เพื่อสาธิตการดึงข้อมูลออกจากเบราว์เซอร์
การโจมตี Spectre, Meltdown, และ Rowhammer เปิดทางให้ซอฟต์แวร์มุ่งร้ายสามารถเข้าไปอ่านหน่วยความจำส่วนที่ไม่ได้รับอนุญาต แม้ว่าโดยทั่วไปแล้วกระบวนการจะทำงานได้ช้า และมีความผิดพลาดอยู่บ้าง แต่หากคนร้ายสามารถดึงข้อมูลสำคัญที่มีขนาดเล็ก เช่น กุญแจเข้ารหัส, รหัสผ่าน ก็จะสร้างความเสียหายได้อย่างมาก ตอนนี้โครงการ Secure Shell (SSH) ก็รับโค้ดใหม่ เพื่อป้องกันปัญหานี้
บั๊กซีพียู Spectre & Meltdown ที่ประกาศในตอนต้นปี 2018 ส่งผลสะเทือนไปทั่วโลก และทางแก้ในปัจจุบันยังมีแค่การแพตช์ช่องโหว่ระดับเฟิร์มแวร์-OS ที่ส่งผลต่อประสิทธิภาพของซีพียูด้วย
อินเทลสัญญาว่าจะแก้ไขช่องโหว่ที่ระดับฮาร์ดแวร์ในซีพียูรุ่นถัดๆ ไป และตอนนี้ก็เริ่มเผยข้อมูลของ Cascade Lake ซีพียูตัวใหม่ที่เริ่มแก้ปัญหาไปบางส่วนแล้ว
Cascade Lake เป็นโค้ดเนมของซีพียู Xeon Scalable รุ่นถัดไป (รุ่นปัจจุบันออกปี 2017 อยู่บนสถาปัตยกรรม Skylake) แต่ยังใช้การผลิตระดับ 14 นาโนเมตรเช่นเดิม และมีกำหนดวางขายภายในปีนี้
นักวิจัยด้านความปลอดภัย 2 คนประกาศการค้นพบช่องโหว่ในกลุ่ม Spectre ใหม่ที่ตั้งชื่อว่า Spectre 1.1 และ 1.2
Spectre 1.1 อาศัยกระบวนการรันคำสั่งแบบคาดเดาล่วงหน้า (speculative execution) เพื่อรันโค้ดที่จะเข้าไปอ่านค่าในหน่วยความจำส่วนที่ไม่มีสิทธิอีกทีหนึ่ง ซึ่ง Spectre 1.1 มีความคล้ายคลึงกับ Spectre ประเภท 1 และ 4 ที่ถูกเปิดเผยก่อนหน้านี้ ทว่าเทคนิคการวิเคราะห์โค้ดและการป้องกันด้วยคอมไพล์เลอร์แบบเดิมๆ ที่เคยป้องกัน Spectre แบบอื่นไม่สามารถใช้กับ Spectre 1.1 ได้
ส่วน Spectre 1.2 เป็นช่องโหว่ที่เปิดให้เขียนข้อมูลทับหน่วยความจำซีพียูที่เป็น read-only ซึ่งเท่ากับว่าช่องโหว่นี้สามารถหลบเหลี่ยงการทำแซนด์บ็อกซ์ได้ด้วยเช่นกัน โดยตอนนี้ยังไม่มีแพตช์แก้ช่องโหว่ทั้งสองตัว
ขออภัยหากหัวข้อชวนงง โดยสรุปเรื่องคือไมโครซอฟท์ปล่อยแพตช์อัพเดตล่าสุด เพื่อแก้ไขช่องโหว่ใน Patch Tuesday ที่ปล่อยออกมาล่าสุดเพื่ออุดช่องโหว่ที่เกิดจากแพตช์แก้ Meltdown เมื่อต้นปี
อย่างยาวคือไมโครซอฟท์ปล่อยอัพเดตแพตช์แก้ Meltdown ให้ Windows 7 และ Windows Server 2008 R2 เมื่อเดือนมกราคมและกุมภาพันธ์ ซึ่งกลายเป็นว่าแพตช์นี้ทำให้แอปและผู้ใช้งานทั่วไป (ไม่ใช่แอดมิน) เข้าถึงเคอร์เนลด้วยสิทธิระดับแอดมินและแก้ไขข้อมูลในแรมได้อย่างอิสระ ซึ่งแพตช์รอบเดือนมีนาคมที่เพิ่งถูกปล่อยออกมา ไมโครซอฟท์ระบุว่าได้แก้บั๊กตรงนี้ด้วย
Lisa Su ซีอีโอของ AMD ตอบคำถามเรื่อง Spectre & Meltdown ในงานแถลงผลประกอบการไตรมาส 4/2017 โดยย้ำข้อมูลเดิมที่เคยประกาศไปแล้วว่า
ส่วนในแง่การดีไซน์ซีพียูเพื่อแก้ช่องโหว่ Spectre จะเกิดขึ้นในแกน Zen 2 รุ่นหน้า โดยมีกำหนดออกในปี 2019 (ปี 2018 จะเป็น Ryzen ตัวใหม่ที่ใช้แกน Zen+ ซึ่งยังเป็นสถาปัตยกรรมเดิม)
จากแพตช์ป้องกัน Spectre/Meltdown ของอินเทลมีปัญหาทำให้เครื่องบางรุ่นรีบูตบ่อย อินเทลออกมาประกาศอีกรอบว่าหาสาเหตุของปัญหารีบูตเจอแล้ว และออก "แพตช์แก้แพตช์" ให้พาร์ทเนอร์ทดสอบแล้ว เมื่อทดสอบเสร็จเรียบร้อยดีจึงจะออกอัพเดตให้คนทั่วไปใช้งาน (ไม่บอกกำหนดเวลา)
อินเทลแนะนำให้ลูกค้าหยุดให้แพตช์ตัวเดิมไปก่อน และขอให้พาร์ทเนอร์เร่งทดสอบแพตช์ตัวใหม่ เพื่อออกแพตช์ตัวจริงให้ได้เร็วขึ้น
วันนี้ Intel โดย Navin Shenoy รองประธานฝ่ายบริหารและผู้จัดการทั่วไปฝ่ายศูนย์ข้อมูลของบริษัท ออกมาโพสต์ถึงรายละเอียดและผลกระทบจาก Spectre และ Meltdown โดยยอมรับว่าประสิทธิภาพตกลงบ้างในบางกรณี และมีการรายงานว่าพบการรีสตาร์ทตัวเองของเครื่องบ่อยด้วย (เข้าใจว่าคงหมายถึงที่รายงานในศูนย์ข้อมูล)
ช่องโหว่ Spectre/Meltdown เป็นช่องโหว่ที่ Project Zero ของกูเกิลเจอตั้งแต่กลางปี 2017 (เป็นหนึ่งในไม่กี่ช่องโหว่ที่ Project Zero ยอมเลื่อนกำหนดเปิดเผยเกิน 90 วัน) ระหว่างนั้นโครงการสำคัญๆ เช่น เคอร์เนลลินุกซ์และวินโดวส์ รวมถึงผู้ให้บริการคลาวด์ขนาดใหญ่ tier-1 ได้รู้ข้อมูลช่องโหว่นี้ก่อน และมีเวลาเตรียมแพตช์นานหลายเดือน วันนี้ ArsTechnica รายงานถึงชีวิตของผู้ให้บริการรายเล็กที่ไม่มีโอกาสรู้ข้อมูลช่องโหว่นี้ก่อน
Google Cloud Platform อธิบายวิธีการแก้ปัญหาช่องโหว่ Spectre และ Meltdown (ที่ค้นพบโดย Project Zero ของกูเกิลเอง) ว่าสามารถแพตช์ป้องกันโดยไม่สูญเสียประสิทธิภาพ
กูเกิลบอกว่าเริ่มงานพัฒนาแพตช์หลังค้นพบช่องโหว่ชุดนี้ไม่นาน ช่องโหว่ Spectre ส่วนแรก (Variant 1) และ Meltdown (Variant 3) และสามารถปิดช่องโหว่ได้ตั้งแต่เดือนกันยายน 2017 โดยไม่ต้องให้ลูกค้าปิดเครื่อง และไม่พบปัญหาประสิทธิภาพแต่อย่างใด
ถึงแม้ซีพียูค่าย AMD จะไม่ได้รับผลกระทบจากช่องโหว่ Meltdown แต่ก็ยังมีช่องโหว่ Spectre ที่ค้นพบโดย Project Zero เช่นกัน
AMD ประกาศข้อมูลเกี่ยวกับแพตช์ของซีพียูตัวเอง ดังนี้
จากประเด็นเรื่องแพตช์แก้ Spectre และ Meltdown ที่ส่งผลต่อประสิทธิภาพของเครื่อง (รายละเอียดเชิงลึก) แต่ไม่มีใครรู้ชัดเจนว่ากระทบมากน้อยแค่ไหน
อินเทลออกผลการทดสอบประสิทธิภาพของซีพียู โดยนำ Core ทั้งหมด 4 รุ่นคือ i7-8700K, i7-8650U, i7-7290HQ, i7-6700K (สามเจนคือ 6th, 7th, 8th) มารันเบนช์มาร์ค SYSmark 2014, PCMark 10, 3DMark Sky Driver, WebXPRT 2015 เปรียบเทียบระหว่างก่อนแพตช์กับหลังแพตช์ให้เห็นกันชัดๆ
การโจมตี Meltdown/Spectre มีรายละเอียดออกมาตั้งแต่สัปดาห์ที่แล้ว หลังจากผู้ผลิตเริ่มปล่อยแพตช์เนื่องจากข่าวเริ่มรั่ว แต่รายงานแรกๆ จาก Project Zero ที่รายงานต่อผู้ผลิตชิปเปิดต่อสาธารณะตามกำหนดเดิมคือวันที่ 9 มกราคม
การเปิดเผยรายงานนี้ทำให้เรารู้ว่ากูเกิลรายงานการโจมตีนี้ตั้งแต่วันที่ 1 มิถุนายน 2017 และการโจมตีนี้ได้รับสิทธิพิเศษในการเปิดเผยการโจมตีหลังรายงานนานกว่า 90 วันตามปกติ
รายงานนี้มาพร้อมโค้ดตัวอย่างสำหรับ AMD, Intel, และ ARM รวมถึงโค้ดตัวอย่างสำหรับการเจาะ KVM และ Xen
Jann Horn นักวิจัย Project Zeroที่รายงานการโจมตีนี้เขียนไว้ตั้งแต่ปลายเดือนมิถุนายนว่าแพตช์ KAISER (ภายหลังกลายเป็นแพตช์ KPTI) น่าจะช่วยป้องกันการโจมตีนี้ได้บางส่วน
Brian Krzanich ซีอีโอของ Intel ขึ้นกล่าวบนเวทีงาน CES 2018 เมื่อเช้านี้ (ตามเวลาในประเทศไทย) โดยกล่าวเกี่ยวกับปัญหาของช่องโหว่ Meltdown และ Spectre ตอนเริ่มการปาฐกถา (keynote) แต่ไม่มีการกล่าวขอโทษแต่อย่างใด (ข้อมูลเพิ่มเติมเกี่ยวกับ Meltdown อ่านได้ที่นี่)
Krzanich ระบุว่าช่องโหว่ดังกล่าวไม่ได้เกิดขึ้นกับ Intel เพียงรายเดียว แต่เกิดขึ้นกับโครงสร้างประมวลแบบอื่น (processing architecture) ด้วย และการแก้ไขปัญหาของอุตสาหกรรมก็ทำไปด้วยดี เพื่อให้ข้อมูลลูกค้าปลอดภัย โดยระบุว่าบริษัทยังไม่ได้รับรายงานว่าช่องโหว่นี้ได้มีการใช้งานจริงเพื่อขโมยข้อมูลของลูกค้า
ไมโครซอฟท์ออกแพตช์ Meltdown/Spectre มาตั้งแต่วันที่ 3 มกราคมที่ผ่านมา เนื่องจากเป็นแพตช์ที่แก้ไขการทำงานเคอร์เนล ทำให้มีปัญหากับซอฟต์แวร์ป้องกันไวรัสบางตัวโดยไมโครซอฟท์รับรู้ปัญหานี้ตั้งแต่ระหว่างทดสอบแพตช์
ทางแก้คือไมโครซอฟต์กำหนดให้เครื่องที่จะได้รับแพตช์วันที่ 3 มกราคม ต้องตั้งค่าในรีจิสตรี SOFTWARE\Microsoft\Windows\CurrentVersion\QualityCompat
เอาไว้ล่วงหน้า ไม่เช่นนั้นจะไม่ได้รับแพตช์ หากติดตั้งซอฟต์แวร์ป้องกันไวรัสเอาไว้ แม้จะเป็นของฟรีเช่น Microsoft Security Essentials เมื่ออัพเดตซอฟต์แวร์ที่รองรับแพตช์ใหม่เรียบร้อยแล้ว ตัวป้องกันไวรัสก็จะเขียนรีจิสตรีนี้ให้เอง แต่หากไม่ได้ติดตั้งตัวป้องกันไวรัสใดๆ เลยจะต้องตั้งค่ารีจิสตรีนี้ด้วยตัวเอง
การโจมตี Meltdown ที่เริ่มมีรายงานในสัปดาห์นี้เปิดทางให้แฮกเกอร์ที่สามารถรันโปรแกรมบนเครื่องของเหยื่อ สามารถอ่านข้อมูลบนหน่วยความจำได้ทั้งหมด แม้จะไม่มีสิทธิ์อ่านหน่วยความจำส่วนนั้นๆ เช่น หน่วยความจำของเคอร์เนล และโปรเซสอื่นๆ
การสาธิตที่ชัดเจนที่สุดคงเป็นการขโมยรหัสผ่านที่ผู้ใช้พิมพ์บนโปรแกรมอื่นดังวิดีโอต่อไปนี้
มาตามนัดอย่างที่หลายคนคาด หลังข่าวช่องโหว่ซีพียู Spectre และ Meltdown ของอินเทล ก็เริ่มมีลูกค้ารวมตัวกันฟ้องเรียกค่าเสียหายแบบกลุ่ม (class action) แล้ว
คดีฟ้องร้องอินเทลมีขึ้นใน 3 รัฐของสหรัฐ ได้แก่ แคลิฟอร์เนีย อินเดียนา และโอริกอน เนื้อหาในคำฟ้องเป็นเรื่องช่องโหว่ความปลอดภัย, มาตรการของอินเทลที่เปิดเผยข้อมูลต่อสาธารณะช้าเกินไป นับจากการรู้ข้อมูลช่องโหว่ตั้งแต่เดือนมิถุนายน 2017, ผลกระทบจากแพตช์ที่ทำให้คอมพิวเตอร์ทำงานช้าลง
โฆษกของอินเทลระบุว่ารับทราบเรื่องการฟ้องร้องแล้ว แต่ปฏิเสธไม่ให้ความเห็นเพิ่มเติมเกี่ยวกับคดี
แอปเปิลออกเอกสารยืนยันว่าปัญหาช่องโหว่ความปลอดภัยซีพียู Meltdown นั้น ได้ถูกแก้ไขไปเรียบร้อยแล้วในระบบปฏิบัติการทุกตัว ตั้งแต่ iOS 11.2, macOS 10.13.2 และ tvOS 11.2 ส่วน watchOS ไม่ได้รับผลกระทบจากปัญหานี้ ส่วนปัญหา Spectre จะมีการแก้ไขในอัพเดตถัดไปของ Safari
จากประเด็นช่องโหว่ความปลอดภัยซีพียู Spectre และ Meltdown ที่เป็นข่าวใหญ่เมื่อวานนี้ ล่าสุดอินเทลแถลงข้อมูลเพิ่มเติมเกี่ยวกับการออกแพตช์ให้ซีพียูที่ได้รับผลกระทบ
อินเทลบอกว่าตอนนี้ได้ออกแพตช์ให้กับ "ซีพียูส่วนใหญ่" ที่วางขายในรอบ 5 ปีที่ผ่านมาแล้ว และภายในสิ้นสัปดาห์หน้า ปริมาณแพตช์จะครอบคลุม 90% ของซีพียูที่วางขายในรอบ 5 ปี
อินเทลไม่ได้ระบุชื่อรุ่นของซีพียูที่ได้รับแพตช์ และไม่บอกว่าซีพียูที่มีอายุเก่ากว่า 5 ปีจะได้รับแพตช์หรือไม่
เอเอ็มดีออกประกาศผลกระทบของช่องโหว่ speculated execution ที่กระทบซีพียูแทบทุกตระกูล และรายงานของ Project Zero ยืนยันว่าซีพียูเอเอ็มดีกระทบบางส่วน โดยระบุว่าส่วนที่ซีพียูเอเอ็มดีได้รับผลกระทบสามารถแก้ไขได้ด้วยซอฟต์แวร์ และคาดว่าจะมีผลกระทบต่อประสิทธิภาพเพียงเล็กน้อย
เอเอ็มดีชี้แจงถึงช่องโหว่ทั้งสาม ระบุว่า
Project Zero รายงานช่องโหว่ซีพียูที่พบตั้งแต่ปลายปีที่แล้ว และกลายเป็นต้นกำเนิดของแพตช์ KPTI ที่ทำให้ประสิทธิภาพของเครื่องลดลง ตอนนี้ทางโครงการก็ปล่อยรายละเอียดออกมาแล้ว โดยมีการโจมตีสองแบบ สาม CVE และสี่รูปแบบการโจมตี
Intel ได้อธิบายอย่างเป็นทางการถึงช่องโหว่ความปลอดภัยบนชิพซึ่งเกิดจากการออกแบบ โดยช่องโหว่นี้เปิดให้แฮกเกอร์ที่รันโค้ดในระดับผู้ใช้สามารถรู้ตำแหน่งของฟังก์ชั่นต่าง ๆ ในเคอร์เนลได้ ซึ่งตำแหน่งของเคอร์เนลนี้ควรจะถูกซ่อนไว้จากระดับผู้ใช้ โดยในคำอธิบาย Intel ไม่ใช่คำว่าช่องโหว่ แต่ใช้คำว่า software analysis method ซึ่งทำให้สามารถเห็นและเก็บข้อมูลสำคัญจากอุปกรณ์ได้ แต่ก็ยังไม่สามารถที่จะใส่สิ่งเจือปน, ลบ หรือแก้ไขข้อมูลได้ และตอนนี้ยังไม่มีหลักฐานการใช้ช่องโหว่นี้ในการโจมตี
ช่วงเดือนธันวาคมที่ผ่านมานักพัฒนาเคอร์เนลลินุกซ์กำลังเร่งพัฒนาแพตช์ชุดใหญ่ kernel page-table isolation (KPTI) ที่แก้ปัญหาช่องโหว่ของซีพียูอินเทล ที่เปิดให้แฮกเกอร์ที่รันโค้ดในระดับ user สามารถรู้ตำแหน่งของฟังก์ชั่นต่างๆ ในเคอร์เนลได้ จากเดิมที่ควรปกป้องไว้ด้วยระบบสุ่มตำแหน่งหน่วยความจำเคอร์เนล (KASLR)
แพตช์ KPTI แยก page global directory (PGD) ตารางแสดงตำแหน่งหน่วยความจำชั้นบนสุดที่เคยใช้งานร่วมกันระหว่างเคอร์เนลและโปรเซสอื่นๆ ในระดับ user เพื่อป้องกันโปรเซสระดับ user ไม่ให้รับรู้ว่าเคอร์เนลที่ map ไว้ที่ตำแหน่งใด กระบวนการนี้ปกติตัวซีพียูจะจัดการให้อยู่แล้ว แต่ด้วยบั๊กของซีพียูที่ยังไม่เปิดเผย ทำให้กระบวนการไม่สมบูรณ์