เทคนิคใหม่ในการใช้ประโยชน์จากช่องโหว่ของ Spectre ใน Chrome

กลุ่มนักวิจัยจากมหาวิทยาลัยในอเมริกา ออสเตรเลีย และอิสราเอลได้เสนอเทคนิคการโจมตีช่องทางด้านข้างแบบใหม่เพื่อใช้ประโยชน์จากช่องโหว่ระดับ Spectre ในเบราว์เซอร์ที่ใช้ Chromium engine การโจมตีซึ่งมีชื่อรหัสว่า Spook.js ช่วยให้คุณสามารถข้ามกลไกการแยกไซต์ได้โดยการเรียกใช้โค้ด JavaScript และอ่านเนื้อหาของพื้นที่ที่อยู่ทั้งหมดของกระบวนการปัจจุบัน เช่น เข้าถึงข้อมูลจากเพจที่ทำงานในแท็บอื่น แต่ได้รับการประมวลผลในกระบวนการเดียวกัน

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

อีกทางเลือกหนึ่งสำหรับการใช้วิธีการนี้คือการโจมตีส่วนเสริมของเบราว์เซอร์ ซึ่งช่วยให้เมื่อติดตั้งส่วนเสริมที่ควบคุมโดยผู้โจมตี สามารถดึงข้อมูลจากส่วนเสริมอื่น ๆ ได้ ตามตัวอย่าง เราแสดงให้เห็นว่าการติดตั้งส่วนเสริมที่เป็นอันตรายทำให้คุณสามารถดึงข้อมูลที่เป็นความลับจากตัวจัดการรหัสผ่าน LastPass ได้อย่างไร

นักวิจัยได้เผยแพร่ต้นแบบช่องโหว่ที่ทำงานใน Chrome 89 บนระบบที่ใช้ CPUIntel i7-6700K และ i7-7600U เมื่อสร้างช่องโหว่ ต้นแบบของโค้ด JavaScript ที่เผยแพร่ก่อนหน้านี้โดย Google จะถูกนำมาใช้ในการโจมตีระดับ Spectre สังเกตว่านักวิจัยสามารถเตรียมช่องโหว่การทำงานสำหรับระบบที่ใช้โปรเซสเซอร์ Intel และ Apple M1 ซึ่งทำให้สามารถจัดระเบียบการอ่านหน่วยความจำด้วยความเร็ว 500 ไบต์ต่อวินาทีและความแม่นยำ 96% สันนิษฐานว่าวิธีนี้ใช้ได้กับโปรเซสเซอร์ AMD ด้วย แต่ไม่สามารถเตรียมการหาช่องโหว่ที่ทำงานได้อย่างสมบูรณ์

การโจมตีนี้สามารถใช้ได้กับเบราว์เซอร์ใด ๆ ที่ใช้ Chromium engine รวมถึง Google Chrome, Microsoft Edge และ Brave นักวิจัยยังเชื่อว่าวิธีนี้สามารถปรับให้ทำงานกับ Firefox ได้ แต่เนื่องจากเอ็นจิ้น Firefox แตกต่างจาก Chrome มาก งานในการสร้างช่องโหว่ดังกล่าวจึงยังคงอยู่สำหรับอนาคต

เพื่อป้องกันการโจมตีบนเบราว์เซอร์ที่เกี่ยวข้องกับการดำเนินการตามคำสั่งแบบคาดเดา Chrome จึงใช้การแบ่งส่วนพื้นที่ที่อยู่ - การแยกแซนด์บ็อกซ์ทำให้ JavaScript ทำงานเฉพาะกับพอยน์เตอร์แบบ 32 บิต และแบ่งปันหน่วยความจำของตัวจัดการในฮีป 4GB ที่ไม่เชื่อมต่อกัน เพื่อให้สามารถเข้าถึงพื้นที่ที่อยู่กระบวนการทั้งหมดและข้ามข้อจำกัด 32 บิต นักวิจัยได้ใช้เทคนิคที่เรียกว่า Type Confusion ซึ่งบังคับให้กลไก JavaScript ประมวลผลวัตถุที่มีประเภทไม่ถูกต้อง ซึ่งทำให้สามารถสร้าง 64 บิตได้ ตัวชี้ขึ้นอยู่กับการรวมกันของค่า 32 บิตสองค่า

สาระสำคัญของการโจมตีคือเมื่อประมวลผลอ็อบเจ็กต์ที่เป็นอันตรายที่ออกแบบมาเป็นพิเศษในเอ็นจิ้น JavaScript จะมีการสร้างเงื่อนไขที่นำไปสู่การดำเนินการตามคำสั่งที่คาดเดาซึ่งเข้าถึงอาเรย์ วัตถุถูกเลือกในลักษณะที่ฟิลด์ที่ควบคุมโดยผู้โจมตีจะถูกวางในพื้นที่ที่ใช้ตัวชี้ 64 บิต เนื่องจากประเภทของวัตถุที่เป็นอันตรายไม่ตรงกับประเภทของอาร์เรย์ที่กำลังประมวลผล ภายใต้สภาวะปกติ การกระทำดังกล่าวจะถูกบล็อกใน Chrome โดยกลไกในการเพิ่มประสิทธิภาพโค้ดที่ใช้ในการเข้าถึงอาร์เรย์ เพื่อแก้ไขปัญหานี้ รหัสสำหรับการโจมตี Type Confusion จะถูกวางไว้ในบล็อก "if" แบบมีเงื่อนไข ซึ่งไม่ได้เปิดใช้งานภายใต้สภาวะปกติ แต่จะดำเนินการในโหมดเก็งกำไร หากโปรเซสเซอร์คาดการณ์การแยกย่อยเพิ่มเติมอย่างไม่ถูกต้อง

เป็นผลให้โปรเซสเซอร์เข้าถึงตัวชี้ 64 บิตที่สร้างขึ้นอย่างคาดเดาไม่ได้และย้อนกลับสถานะหลังจากระบุการคาดการณ์ที่ล้มเหลว แต่ร่องรอยของการดำเนินการยังคงอยู่ในแคชที่ใช้ร่วมกันและสามารถกู้คืนได้โดยใช้วิธีการตรวจจับแคชช่องทางด้านข้างที่วิเคราะห์การเปลี่ยนแปลงใน เวลาในการเข้าถึงข้อมูลที่แคชและไม่แคช ในการวิเคราะห์เนื้อหาของแคชในสภาวะที่มีความแม่นยำไม่เพียงพอของตัวจับเวลาที่มีอยู่ใน JavaScript จะใช้วิธีการที่ Google เสนอซึ่งหลอกลวงกลยุทธ์การขับไล่แคช Tree-PLRU ที่ใช้ในโปรเซสเซอร์และอนุญาตโดยการเพิ่มจำนวนรอบ เพิ่มความแตกต่างอย่างมากในเวลาเมื่อมีค่าอยู่และไม่มีอยู่ในแคช .

ที่มา: opennet.ru

เพิ่มความคิดเห็น