SLAP: การโจมตีแบบคาดเดาข้อมูล (data Speculation attacks via Load Address Prediction)
- การโจมตี SLAP เป็นการโจมตีแบบ speculative execution รูปแบบใหม่ที่เกิดขึ้นบน CPU Apple Silicon รุ่น M2/A15
- ใช้ Load Address Predictor (LAP) เพื่อคาดเดาที่อยู่หน่วยความจำถัดไปจากรูปแบบการเข้าถึงหน่วยความจำ เพื่อเพิ่มประสิทธิภาพ
- หากคาดเดาผิด CPU อาจประมวลผลข้อมูลที่ไม่ควรเข้าถึงผ่านการทำ speculative execution ซึ่งก่อให้เกิดความเสี่ยงด้านความปลอดภัย
- มีการสาธิตกรณีจริงที่ผู้โจมตีระยะไกลสามารถกู้คืนเนื้อหาอีเมลและพฤติกรรมการท่องเว็บได้จากเบราว์เซอร์ Safari
FLOP: การคาดเดาผลลัพธ์ของการโหลดที่ผิดพลาด (False Load Output Predictions)
- การโจมตี FLOP เป็นการโจมตีแบบ speculative execution อีกรูปแบบหนึ่งบน CPU Apple M3/A17 ที่เกิดจากการคาดเดาการพึ่งพาข้อมูล
- ใช้ Load Value Predictor (LVP) เพื่อคาดเดาค่าข้อมูลที่ระบบย่อยหน่วยความจำจะส่งกลับมา เพื่อเพิ่มประสิทธิภาพ
- หากคาดเดาผิด อาจเปิดพื้นผิวการโจมตีที่ข้ามการตรวจสอบสำคัญในตรรกะของโปรแกรมเพื่อความปลอดภัยของหน่วยความจำ และทำให้ความลับที่เก็บอยู่ในหน่วยความจำรั่วไหลได้
- มีการสาธิตการโจมตีที่กู้คืนประวัติตำแหน่ง เหตุการณ์ในปฏิทิน ข้อมูลบัตรเครดิต เป็นต้น จากเบราว์เซอร์ Safari และ Chrome
เดโม
- การรั่วไหลของข้อมูลกล่องจดหมายเข้าของ Proton Mail: ฝึก LVP ของ CPU M3 ด้วยโค้ด JavaScript ภายใน WebKit เพื่อนำเนื้อหาในกล่องจดหมายเข้ามาไว้ใน address space
- อ่าน The Great Gatsby: การสาธิต proof of concept ที่ใช้ LAP บน CPU Apple M2 เพื่อกู้คืนสตริงลับ
- อ่าน Harry Potter: การสาธิต proof of concept ที่ใช้ LVP บน CPU Apple M3 เพื่อคาดเดา array index ที่ผิดพลาดและอ้างอิงอักขระของสตริง
คณะผู้วิจัย
- Jason Kim, Jalen Chuang, Daniel Genkin (Georgia Institute of Technology)
- Yuval Yarom (Ruhr University Bochum)
FAQ ของ SLAP และ FLOP
Is my Apple device affected?
- Mac โน้ตบุ๊ก: ทุกรุ่นที่ออกตั้งแต่ปี 2022 เป็นต้นมา (MacBook Air, MacBook Pro)
- Mac เดสก์ท็อป: ทุกรุ่นที่ออกตั้งแต่ปี 2023 เป็นต้นมา (Mac Mini, iMac, Mac Studio, Mac Pro)
- iPad: iPad Pro, Air, Mini ทุกรุ่นที่ออกตั้งแต่เดือนกันยายน 2021 เป็นต้นมา
- Pro รุ่นที่ 6 และ 7, Air รุ่นที่ 6, Mini รุ่นที่ 6
- iPhone: ทุกรุ่นที่ออกตั้งแต่เดือนกันยายน 2021 เป็นต้นมา
- iPhone 13, 14, 15, 16 ทุกรุ่น และ SE รุ่นที่ 3
Why are the SLAP and FLOP attacks significant?
- กลไกการป้องกัน: โดยทั่วไป เว็บเบราว์เซอร์จะป้องกันไม่ให้เว็บเพจที่เปิดอยู่สองหน้าอ่านข้อมูลของกันและกัน โดยแยกแต่ละหน้าออกจากกัน
- ช่องโหว่: SLAP และ FLOP สามารถทำลายการป้องกันนี้ ทำให้หน้าเว็บของผู้โจมตีอ่านข้อมูลอ่อนไหวจากหน้าเป้าหมายได้
- ข้อมูลที่เปิดเผยได้: ประวัติตำแหน่ง ข้อมูลบัตรเครดิต เป็นต้น
How can I defend against SLAP and FLOP?
- FLOP มีแนวทางบรรเทาผลกระทบ แต่ต้องอาศัยแพตช์จากผู้พัฒนาซอฟต์แวร์ และผู้ใช้ไม่สามารถแก้ไขได้โดยตรง
- Apple ระบุว่าจะจัดการปัญหานี้ในอัปเดตความปลอดภัยในอนาคต ดังนั้นการเปิดใช้อัปเดตอัตโนมัติและใช้งาน OS กับแอปพลิเคชันเวอร์ชันล่าสุดจึงเป็นเรื่องสำคัญ
What about other processor vendors?
- ยังไม่พบสัญญาณของ SLAP หรือ FLOP ในผลิตภัณฑ์ของ Intel, AMD, Qualcomm, Ampere เป็นต้น
What about other web browsers?
- ยังไม่ได้ทดสอบเบราว์เซอร์อื่น เช่น Firefox
Can I detect if someone is using SLAP or FLOP on my device?
- SLAP และ FLOP เป็นการโจมตีที่อาศัยไมโครสถาปัตยกรรม จึงไม่ทิ้งร่องรอยไว้ใน system log
Are any malicious actors abusing SLAP or FLOP in the wild?
- จนถึงขณะนี้ยังไม่มีหลักฐานว่า SLAP หรือ FLOP ถูกนำไปใช้จริงในการโจมตี
When did you notify Apple?
- SLAP: รายงานต่อ Apple เมื่อวันที่ 24 พฤษภาคม 2024
- FLOP: รายงานต่อ Apple เมื่อวันที่ 3 กันยายน 2024
คำถามเชิงเทคนิค
Side Channel คืออะไร?
- การโจมตีที่อาศัยช่องโหว่ในการใช้งานจริงของฮาร์ดแวร์คอมพิวเตอร์
- ใช้ประโยชน์จากการรั่วไหลของข้อมูลที่เกิดจากพฤติกรรมของฮาร์ดแวร์ แทนที่จะเป็นบั๊กของซอฟต์แวร์
- เส้นทางการรั่วไหลของข้อมูล
- ปรากฏการณ์ทางกายภาพ เช่น เสียง คลื่นแม่เหล็กไฟฟ้า การคายความร้อน
- การแย่งใช้ทรัพยากรร่วมของ CPU (คอร์ แคช บัฟเฟอร์ภายใน เป็นต้น)
- การเปิดเผยข้อมูลจากการแข่งขันของ CPU
- อนุมานรูปแบบพฤติกรรมของเป้าหมายผ่านตัวแปรทางอ้อม เช่น การวัดเวลา การใช้พลังงาน
การโจมตีแบบ Speculative Execution คืออะไร?
- Speculative Execution: เทคนิคเพิ่มประสิทธิภาพที่ CPU คาดเดา control flow แล้วรันคำสั่งล่วงหน้า
- หากคาดเดาผิด ระบบจะย้อนสถานะกลับ แต่ ยังทิ้งร่องรอยเล็ก ๆ เช่น ในแคช
- การโจมตี Spectre
- ชักนำให้เกิดการคาดเดาและรันตาม flow ที่ผิด
- หากมีการรันคำสั่งที่ใช้ข้อมูลอ่อนไหวระหว่าง speculative execution ค่าของข้อมูลนั้นอาจรั่วไหลทางอ้อมได้
- การขยายแนวคิดใน SLAP และ FLOP
- CPU ของ Apple คาดเดาไม่เพียงแต่ control flow แต่รวมถึง data flow ด้วย
- FLOP ทำให้เกิดการรันคำสั่งจากค่าข้อมูลที่คาดเดาผิด
วิธีการทำงานของ SLAP
- วิเคราะห์ Load Address Prediction (LAP)
- หากทำให้ระบบเรียนรู้รูปแบบที่อยู่หน่วยความจำเฉพาะ LAP จะคาดเดาที่อยู่ถัดไปและรันงานกับข้อมูลนั้น
- ต่างจากการ prefetch ของฮาร์ดแวร์ เพราะมีการ รันคำสั่งด้วยข้อมูลที่คาดเดา
- การใช้ประโยชน์จากช่องโหว่ใน Safari
- อาศัยปัญหาการแยกส่วนของ Safari ที่ iLeakage ค้นพบ บังคับให้เว็บเพจต่างกันถูกประมวลผลในโปรเซสเดียวกัน
- ทำให้เว็บเพจของผู้โจมตีเข้าถึงข้อมูลสตริงของเว็บเพจเป้าหมายได้
วิธีการทำงานของ FLOP
- วิเคราะห์ Load Value Prediction (LVP)
- หากมีการส่งค่าข้อมูลเดิมกลับมาซ้ำ ๆ LVP จะคาดเดาผลลัพธ์
- ทำให้มีการรันคำสั่งโดยใช้ค่าหน่วยความจำที่ผิด
- การโจมตี Safari และ Chrome
- Safari: คาดเดาข้อมูลชนิดของ data structure ใน JavaScript แล้วรันคำสั่งกับ data structure ที่ผิด
- Chrome: เมื่อเรียกใช้ฟังก์ชัน WebAssembly อาร์กิวเมนต์ที่ผิดทำให้เกิดข้อผิดพลาดในการอ่านหน่วยความจำ
ความแตกต่างระหว่าง SLAP และ FLOP
- SLAP: ใช้ Load Address Predictor (LAP) เพื่ออาศัยความใกล้กันของการจัดสรรสตริง
- FLOP: ใช้ Load Value Predictor (LVP) เพื่อข้ามการตรวจสอบความถูกต้องของข้อมูล
- LAP vs LVP
- LAP: คาดเดาที่อยู่หน่วยความจำถัดไป
- LVP: คาดเดาค่าหน่วยความจำถัดไปที่ถูกส่งกลับ
- LAP ต้องใช้กระบวนการฝึกนานกว่า แต่สามารถคาดเดารูปแบบได้
JavaScript และ WebAssembly คืออะไร?
- JavaScript: ภาษาเพื่ออัปเดตเนื้อหาเว็บแบบไดนามิก
- WebAssembly: ภาษาสำหรับเว็บแอปพลิเคชันประสิทธิภาพสูง ที่ทำงานร่วมกับ JavaScript
- ผลกระทบของการโจมตี
- ทั้งสองภาษาทำงานอัตโนมัติในเบราว์เซอร์ จึงโจมตีได้แม้ไม่ต้องดาวน์โหลดโค้ดอันตราย
เหตุผลที่เลือก Safari และ Chrome เป็นเป้าหมายการโจมตี
- Safari:
- ไม่มี site isolation ทำให้เว็บเพจจากคนละโดเมนสามารถรันในโปรเซสเดียวกันได้
- ขยายพื้นผิวการโจมตีที่อาศัย LAP และ LVP
- Chrome:
- แม้มี site isolation แล้ว แต่ในบางกรณี subdomain ของไซต์เดียวกันยังถูกจัดการในโปรเซสเดียวกัน
- จึงยังสามารถโจมตีด้วย LAP และ LVP ได้
การสนับสนุนงานวิจัย
- งานวิจัยนี้ได้รับการสนับสนุนจาก AFOSR, Alfred P Sloan Research Fellowship, ARC Discovery Project, DARPA, DFG, Qualcomm, Cisco, Zama
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
เดโมของ SLAP แสดงให้เห็นได้ดีว่าการป้องกันหลายชั้นสามารถกำหนดความเป็นไปได้ในการโจมตีช่องโหว่ได้อย่างไร ช่องโหว่ของ Safari เกิดขึ้นเพราะไม่สามารถแยกหน้าต่างใหม่เป็นโปรเซสอิสระได้เมื่อมีการเรียก
window.openส่วนที่ทำ reverse engineer การมีอยู่ของ LVP บน M3 น่าสนใจมาก เมื่อโหลด 8 ไบต์ LVP จะทำงานเฉพาะตอนที่ค่าที่โหลดเป็น 0 เท่านั้น ซึ่งอาจเป็นมาตรการเพื่อความปลอดภัยของหน่วยความจำ
การโจมตี Spectre และ Meltdown รวมถึงงานวิจัยที่เกี่ยวข้อง คุ้มค่าที่จะอ่านสำหรับคนที่ยังไม่เคยเห็นมาก่อน
ใน Safari มีการใช้หลักการขยายสัญญาณแคชที่อิงกับ NOT gate เพื่อแยกแยะ cache hit กับ miss แม้ในสภาพแวดล้อมเว็บก็สามารถแยก cache hit และ miss ได้
แสดงให้เห็นว่า site isolation ของ Chrome ไม่ใช่มาตรการบรรเทาที่สมบูรณ์แบบ มี corner case ที่ซับโดเมนสองตัวของไซต์เดียวกันอาจถูกรวมเข้าเป็นโปรเซสเดียวกันได้
วัฒนธรรมการตลาดสำหรับการประกาศช่องโหว่ฮาร์ดแวร์ให้ความรู้สึกแปลก ทำไมถึงไม่แค่รายงานช่องโหว่และเผยแพร่งานวิจัย แต่ต้องทำโดเมนเฉพาะ โลโก้ FAQ และอื่น ๆ ด้วย
เมื่อปีที่แล้วฉันได้พบศาสตราจารย์ Daniel Genkin ในคลาส Intro to Cyber Security เขาบอกว่ากำลังวิจัยการโจมตีแบบ speculative ต่อ Apple CPU ทำให้เข้าใจว่าความปลอดภัยแทบไม่เคยรับประกันได้จริง
มีแนวโน้มที่จะปิดใช้งาน js โดยค่าเริ่มต้นบนไซต์ที่ไม่น่าเชื่อถือ เพราะนี่คือโปรแกรมของใครบางคนที่เราปล่อยให้รันบนเครื่องของเรา
Apple เพิ่งประกาศอัปเดตเวอร์ชันย่อยของ macOS และ iOS ที่รวมการแก้ไขด้านความปลอดภัยไว้ด้วย สงสัยว่ามีใครตรวจสอบหรือยังว่าแก้ช่องโหว่นี้แล้วหรือไม่
ดูเหมือนว่า RUB จะกลายเป็นศูนย์กลางระดับโลกของงานด้านความปลอดภัยเชิงรุกขั้นสูงไปแล้ว สงสัยว่าเมื่อ 10 ปีก่อนเราแค่ไม่ได้ใส่ใจ หรือว่านี่เป็นปรากฏการณ์ใหม่