เป็นไปได้ไหมว่าความเร็วของโปรเซสเซอร์ของคุณคือสิ่งที่กำลังบั่นทอนความปลอดภัยของคุณ? เพื่อทำความเข้าใจว่าโปรเซสเซอร์ทำงานได้อย่างรวดเร็วได้อย่างไรเราต้องพิจารณาว่ามันทำงานโดยการ "ทำนายอนาคต"... ไม่ใช่ว่ามันมีเวทมนตร์หรือลูกแก้ววิเศษอะไรหรอกนะ...
วิธีการทำงานของโปรเซสเซอร์คือแทนที่จะรอว่าโปรแกรมจะใช้เส้นทางใด ชิปจะคาดการณ์เส้นทางที่เป็นไปได้และเตรียมรับมือไว้ล่วงหน้าหากการคาดการณ์ไม่ถูกต้อง งานนั้นจะถูกทิ้งไป แต่ร่องรอยจะยังคงอยู่ในหน่วยความจำนี่คือจุดที่ Spectre เข้ามาเกี่ยวข้องซึ่งเป็นหนึ่งในช่องโหว่ที่สำคัญที่สุดที่ถูกค้นพบในช่วงไม่กี่ปีที่ผ่านมา นับตั้งแต่การค้นพบ Spectre ผู้โจมตีได้เรียนรู้วิธีการอ่านร่องรอยเหล่านี้ และสร้างรูปแบบที่ซับซ้อนมากขึ้นเรื่อยๆ TONTOU ก็เป็นหนึ่งในช่องโหว่ใหม่เหล่านี้
นักวิจัยจาก MIT ได้ค้นพบ TONTOU (Time-of-Neutralization to Time-of-Use) เทคนิคใหม่ที่ซับซ้อนสำหรับการใช้ประโยชน์จากช่องโหว่ Spectre v2ซึ่งช่วยให้สามารถอ่านหน่วยความจำเคอร์เนลจากพื้นที่ผู้ใช้ได้
แม้ว่าผู้ผลิตและนักพัฒนาจะออกแบบกลไกการป้องกันต่างๆ เพื่อต่อต้านการโจมตีแบบคาดการณ์ล่วงหน้ามานานหลายปีแล้ว แต่ผู้โจมตีก็สามารถค้นพบช่องทางใหม่ๆ ได้ และการศึกษาใหม่ของ CSAIL นี้แสดงให้เห็นถึงวิธีการหลีกเลี่ยงการป้องกันเหล่านี้
นักวิจัยค้นพบว่ามีช่วงเวลาว่างที่ไม่สามารถหลีกเลี่ยงได้ระหว่างช่วงเวลาที่บัฟเฟอร์ถูกล้างและช่วงเวลาที่ใช้การคาดการณ์ และในช่วงเวลาว่างเล็กๆ นี้เองที่โค้ด (บางครั้งอาจเป็นเพียงคำสั่งไม่กี่คำสั่ง) จะถูกแทรกเข้าไปผ่านการขัดจังหวะของระบบ ทำให้สามารถปนเปื้อนฮาร์ดแวร์อีกครั้งและดึงข้อมูลสำคัญออกมาได้
เกี่ยวกับการโจมตี: การหยุดชะงักและการละเมิดใน Safe-RET
AMDมีระบบป้องกัน ช่องโหว่ SRSO (Speculative Return Stack Overflow) ที่เรียกว่าSaferetซึ่งจะล้างกลไกการคาดการณ์ทันทีก่อนการใช้งานแต่ละครั้งทำให้เกิดช่องว่างช่องโหว่ที่สามารถถูกโจมตีได้ภายในเวลาไม่กี่สิบนาโนวินาที เพื่อโจมตีช่องว่างเล็กๆ ดังกล่าว นักวิจัยจึงได้พัฒนาเทคนิคที่เรียกว่า Interrupt Injection
โปรเซสเซอร์จะหยุดการทำงานชั่วคราวเพื่อจัดการกับการขัดจังหวะอยู่เสมอ และโปรแกรมทั่วไปสามารถตั้งค่าตัวจับเวลาเหล่านี้ได้ด้วยเหตุนี้นักวิจัยจึงปรับตัวจับเวลาอย่างแม่นยำและใช้เทคนิคการลดความเร็วของ CPU เพื่อทำให้โปรเซสเซอร์ถูกขัดจังหวะในจังหวะที่ผิดพลาดที่สุดระหว่างการขัดจังหวะนี้ ผู้โจมตีสามารถบังคับให้มีการเรียกใช้ฟังก์ชันจำนวนมาก ทำให้เกิดการล้นของสแต็กที่อยู่ เมื่อการทำงานที่ผิดพลาดสิ้นสุดลงโปรเซสเซอร์จะทิ้งกระบวนการนั้นไป แต่ข้อมูลที่เข้าถึงจะยังคงอยู่ในแคชที่ใช้ร่วมกันซึ่งสามารถดึงออกมาได้โดยการวิเคราะห์เวลาในการเข้าถึง
การดึงและทดสอบรหัสผ่านบนระบบจริง
เพื่อแสดงให้เห็นถึงความร้ายแรงของ TONTOU ทีมงานได้สร้างช่องโหว่ที่ใช้งานได้จริงบนระบบ AMD ที่ใช้เคอร์เนล Linux เวอร์ชันปัจจุบันอุปสรรคแรกคือการหลีกเลี่ยงระบบป้องกันที่สุ่มตำแหน่งของระบบปฏิบัติการในหน่วยความจำ ซึ่งพวกเขาทำได้สำเร็จในสิบครั้ง โดยใช้เวลาประมาณเก้านาทีต่อการทดสอบ
ต่อมาพวกเขาได้สาธิตการโจมตีภายในเครื่องในฐานะผู้ใช้ที่ไม่ได้รับสิทธิ์พิเศษเพื่อตรวจสอบแฮชรหัสผ่านรูท และสามารถดึงข้อมูลได้สำเร็จด้วยอัตรา 5.47 ไบต์ต่อวินาทีด้วยความแม่นยำ 91.97% ในการทดสอบ 50% (ซึ่งใช้เวลาเฉลี่ย 18 นาที) พวกเขาสามารถตรวจจับและดึงเนื้อหาของไฟล์รหัสผ่านได้สำเร็จ แม้ว่าความเร็วนี้จะช้า แต่ก็เพียงพอที่จะเจาะระบบเซิร์ฟเวอร์ได้อย่างร้ายแรง
ผลกระทบต่อ Intel, AMD และแพทช์แก้ไขปัญหา
ทีมวิจัยได้ทดสอบโปรเซสเซอร์ Intel และ AMD สี่รุ่น และพบว่าการคาดการณ์ผิดพลาดในทั้งสองสถาปัตยกรรมเทคนิคนี้ใช้ได้ผลกับตระกูลZen 1 ถึง 4 ของ AMD แต่ในชิป Intel การโจมตีกลับสามารถหลีกเลี่ยงการป้องกันสองชั้นได้อย่างไรก็ตามพบพฤติกรรมที่ไม่สอดคล้องกันระหว่าง Intel รุ่นต่างๆ ซึ่งบ่งชี้ว่าการป้องกันที่ระบุไว้ถูกนำไปใช้ในฮาร์ดแวร์แตกต่างกัน
เพื่อแก้ปัญหานี้ นักวิจัยแนะนำให้ล้างกลไกการคาดการณ์อีกครั้งหลังจากที่การขัดจังหวะสิ้นสุดลง แม้ว่ามาตรการนี้ดูเหมือนจะใช้ได้ผลสำหรับ AMD แต่ก็อาจส่งผลเสียต่อ Intel เนื่องจากวิธีการโจมตีนี้อาศัยการที่การขัดจังหวะออกจากสถานะที่สอดคล้องกัน ซึ่งอาจทำให้การโจมตีมีความน่าเชื่อถือมากขึ้น
นักวิจัยได้แจ้งให้ AMD และ Intel ทราบในช่วงต้นเดือนกุมภาพันธ์ และแจ้งผู้ดูแลระบบเคอร์เนล Linux ในเดือนมีนาคม ส่งผลให้โค้ดที่ปิดกั้นช่องโหว่ดังกล่าวถูกรวมเข้ากับเคอร์เนล Linux เมื่อวันที่ 5 สิงหาคม
สุดท้ายนี้ หากคุณสนใจเรียนรู้เพิ่มเติม สามารถดูรายละเอียดได้ที่ลิงก์ต่อไปนี้