ทีมนักวิจัยจากมหาวิทยาลัยต่างๆ ชาวอเมริกันอิสราเอลและออสเตรเลีย ได้พัฒนาการโจมตีสามครั้งที่กำหนดเป้าหมายเว็บเบราว์เซอร์ที่อนุญาตให้ดึงข้อมูลเกี่ยวกับเนื้อหาของแคชโปรเซสเซอร์. วิธีการ ทำงานในเบราว์เซอร์ที่ไม่มี JavaScript และอีกสองวิธีหลีกเลี่ยงวิธีการป้องกันที่มีอยู่จากการโจมตีผ่านช่องทางของบุคคลที่สามรวมถึงวิธีที่ใช้ในเบราว์เซอร์ Tor และ DeterFox
เพื่อวิเคราะห์เนื้อหาของแคชใน การโจมตีทั้งหมดใช้วิธี "Prime + Probe"ที่ เกี่ยวข้องกับการเติมแคชด้วยชุดของค่าอ้างอิงและกำหนดการเปลี่ยนแปลงโดยการวัดเวลาในการเข้าถึง ให้กับพวกเขาเมื่อชาร์จใหม่ เพื่อหลีกเลี่ยงกลไกการรักษาความปลอดภัยที่มีอยู่ในเบราว์เซอร์ซึ่งป้องกันการวัดเวลาที่แม่นยำในสองเวอร์ชันจะมีการเรียกใช้ DNS หรือเซิร์ฟเวอร์ WebSocket ที่มีการควบคุมซึ่งจะเก็บบันทึกเวลาที่ได้รับคำขอ ในรูปลักษณ์เดียวเวลาตอบสนองของ DNS คงที่จะใช้เป็นการอ้างอิงเวลา
การวัดโดยใช้เซิร์ฟเวอร์ DNS ภายนอกหรือ WebSocket เนื่องจากการใช้ระบบการจำแนกตามการเรียนรู้ของเครื่องเพียงพอที่จะทำนายค่าด้วยความแม่นยำ 98% ในสถานการณ์ที่เหมาะสมที่สุด (โดยเฉลี่ย 80-90%) วิธีการโจมตีได้รับการทดสอบบนแพลตฟอร์มฮาร์ดแวร์ต่างๆ (Intel, AMD Ryzen, Apple M1, Samsung Exynos) และได้รับการพิสูจน์แล้วว่าใช้งานได้หลากหลาย
ตัวแปรแรกของการโจมตี DNS Racing ใช้วิธีการใช้ Prime + Probe แบบคลาสสิก โดยใช้อาร์เรย์ JavaScript ความแตกต่างมาจากการใช้ตัวจับเวลาที่ใช้ DNS ภายนอกและตัวจัดการข้อผิดพลาดที่เริ่มทำงานเมื่อพยายามโหลดรูปภาพจากโดเมนที่ไม่มีอยู่จริง ตัวจับเวลาภายนอกช่วยให้สามารถโจมตี Prime + Probe ในเบราว์เซอร์ที่ จำกัด หรือปิดใช้งานการเข้าถึงตัวจับเวลา JavaScript โดยสิ้นเชิง
สำหรับเซิร์ฟเวอร์ DNS ที่โฮสต์บนเครือข่ายอีเธอร์เน็ตเดียวกันความแม่นยำของตัวจับเวลาจะอยู่ที่ประมาณ 2 มิลลิวินาทีซึ่งเพียงพอที่จะทำการโจมตีช่องสัญญาณด้านข้าง (สำหรับการเปรียบเทียบ: ความแม่นยำของตัวจับเวลา JavaScript มาตรฐานในเบราว์เซอร์ Tor มี ลดลงเหลือ 100ms) สำหรับการโจมตีไม่จำเป็นต้องมีการควบคุมเซิร์ฟเวอร์ DNSเนื่องจากเวลาดำเนินการของการดำเนินการถูกเลือกเพื่อให้เวลาตอบสนองของ DNS ทำหน้าที่เป็นสัญญาณของการตรวจสอบความสมบูรณ์ก่อนกำหนด (ขึ้นอยู่กับว่าตัวจัดการข้อผิดพลาดถูกทริกเกอร์ก่อนหน้านี้หรือในภายหลัง) สรุปได้ว่าการดำเนินการตรวจสอบด้วยแคชเสร็จสมบูรณ์) ...
การโจมตีแบบ "สตริงและถุงเท้า" ครั้งที่สองได้รับการออกแบบมาเพื่อหลีกเลี่ยงเทคนิคการรักษาความปลอดภัย ซึ่ง จำกัด การใช้อาร์เรย์ JavaScript ระดับต่ำ แทนที่จะใช้อาร์เรย์ String และ Sock จะใช้การดำเนินการกับสตริงที่มีขนาดใหญ่มากซึ่งจะมีการเลือกขนาดเพื่อให้ตัวแปรครอบคลุมแคช LLC ทั้งหมด (แคชระดับบนสุด)
จากนั้นใช้ฟังก์ชัน indexOf () สตริงย่อยขนาดเล็กจะถูกค้นหาในสตริงซึ่งในตอนแรกไม่มีอยู่ในสตริงเดิมนั่นคือการดำเนินการค้นหาจะทำให้เกิดการวนซ้ำในสตริงทั้งหมด เนื่องจากขนาดของเส้นตรงกับขนาดของแคช LLC การสแกนจึงทำให้สามารถดำเนินการตรวจสอบแคชได้โดยไม่ต้องจัดการกับอาร์เรย์ ในการวัดความล่าช้าแทนที่จะเป็น DNS นี่เป็นสิ่งที่น่าสนใจสำหรับเซิร์ฟเวอร์ WebSocket ที่ถูกโจมตีซึ่งควบคุมโดยผู้โจมตี: ก่อนเริ่มต้นและหลังสิ้นสุดการดำเนินการค้นหาคำขอจะถูกส่งไปในห่วงโซ่
การโจมตี "CSS PP0" เวอร์ชันที่สามผ่าน HTML และ CSS และสามารถทำงานในเบราว์เซอร์ที่ปิดใช้งาน JavaScript. วิธีนี้ดูเหมือน "String and Sock" แต่ไม่ผูกมัดกับ JavaScript การโจมตีจะสร้างชุดตัวเลือก CSS ที่ค้นหาโดยมาสก์. บรรทัดดั้งเดิมที่ยอดเยี่ยมที่เติมแคช ถูกกำหนดโดยการสร้างแท็ก div ด้วยชื่อชั้นที่ใหญ่มากและn ซึ่งภายในมีชุดของ div อื่น ๆ ที่มีตัวระบุของตัวเอง
แต่ละคนของ div ที่ซ้อนกันเหล่านี้มีสไตล์ด้วยตัวเลือกที่มองหาสตริงย่อย เมื่อแสดงผลหน้าเบราว์เซอร์จะพยายามประมวลผล div ภายในก่อนซึ่งจะทำให้เกิดการค้นหาด้วยสตริงขนาดใหญ่ การค้นหาทำได้โดยใช้มาสก์ที่ขาดหายไปอย่างเห็นได้ชัดและนำไปสู่การวนซ้ำของสตริงทั้งหมดหลังจากนั้นเงื่อนไข "ไม่" จะถูกทริกเกอร์และพยายามโหลดภาพพื้นหลัง