Tấn công kênh kề mới vào bộ xử lý của Intel, ARM, IBM và AMD

14:18 | 29/10/2020
Bùi Đức Chính (theo The Hacker News)

Nguyên nhân của một số cuộc tấn công thực hành suy đoán (speculative execution) trước đây như Meltdown và Foreshadow để chống lại các bộ xử lý hiện đại, bị hiểu sai là do hiệu ứng tìm nạp trước (prefetching effect), dẫn đến việc các nhà cung cấp phần cứng phát hành các bản vá và biện pháp đối phó không hoàn chỉnh.

Một nhóm các học giả đến từ Đại học Công nghệ Graz và Trung tâm CISPA Helmholtz về An toàn thông tin đã chia sẻ những phát hiện của mình. Họ cho biết lý do chính xác tại sao các địa chỉ nhân (kernel) được lưu vào bộ nhớ đệm ngay từ đầu, cũng như đưa ra một số cuộc tấn công mới khai thác các vấn đề cơ bản chưa được xác định trước đây, cho phép kẻ tấn công lấy cắp dữ liệu nhạy cảm.

Nghiên cứu mới này giải thích các cuộc tấn công vi kiến trúc thực chất được gây ra bởi việc tham chiếu suy đoán của các thanh ghi user-space trong nhân. Điều này không chỉ tác động đến các CPU Intel gần đây với các bản vá phần cứng mới nhất, mà còn tác động đến một số bộ xử lý hiện đại của ARM, IBM và AMD mà trước đây được cho là không bị ảnh hưởng.

Các nhà nghiên cứu cho biết, những ảnh hưởng được báo cáo trong một số bài báo học thuật trong  4 năm qua không được hiểu đúng, dẫn đến những giả định không chính xác về các biện pháp đối phó. “Hiệu ứng tìm nạp trước thực tế không liên quan đến các câu lệnh tìm nạp trước bằng phần mềm hoặc hiệu ứng tìm nạp trước trên phần cứng do quyền truy cập bộ nhớ, mà thay vào đó là do sự tham chiếu suy đoán của các thanh ghi user-space trong kernel.”Bên cạnh việc phân tích nguyên nhân sâu xa thực sự của hiệu ứng tìm nạp trước, một số phát hiện chính khác từ nghiên cứu trên là:

Nguyên nhân của một số cuộc tấn công thực hành suy đoán (speculative execution) trước đây như Meltdown và Foreshadow để chống lại các bộ xử lý hiện đại, bị hiểu sai là do hiệu ứng tìm nạp trước (prefetching effect), dẫn đến việc các nhà cung cấp phần cứng phát hành các bản vá và biện pháp đối phó không hoàn chỉnh.

- Một số cuộc tấn công mới khai thác nguyên nhân gốc cơ bản, bao gồm tấn công dịch địa chỉ (address-translation) trong ngữ cảnh hạn chế, rò rỉ trực tiếp các giá trị thanh ghi trong các tình huống cụ thể, và khai thác Foreshadow đầu cuối tới dữ liệu non-L1.

- Một dạng tấn công kênh ngầm xuyên lõi mới (cross-core covert channel) trong một số trường hợp có thể cho phép kẻ tấn công quan sát bộ nhớ đệm của địa chỉ (hoặc giá trị) được lưu trữ trong một thanh ghi mà không cần dựa vào bộ nhớ được chia sẻ.

- Các tiện ích tìm nạp trước Spectre có thể trực tiếp làm rò rỉ dữ liệu. Điều này không chỉ khiến tấn công ZombieLoad hiệu quả trên CPU Intel dẫn tới rò rỉ dữ liệu nhạy cảm từ bộ nhớ đệm hoặc bộ nhớ bên trong, mà còn tác động tới các CPU khác không phải của Intel.

- Trong một số cuộc tấn công như Rowhammer, tấn công bộ nhớ cache và DRAMA, các vấn đề về tham chiếu suy đoán có thể cho phép kẻ tấn công khôi phục địa chỉ vật lý của các biến JavaScript và lấy thông tin nhờ thực thi tạm thời từ xa thông qua trình duyệt web.

Ngoài ra, các nhà nghiên cứu cũng chứng minh rằng lỗ hổng Foreshadow trên CPU Intel có thể bị khai thác ngay cả khi các bản vá khuyến nghị đang được kích hoạt. Điều này có thể thực hiện được do cuộc tấn công có thể được thực hiện trên dữ liệu không nằm trong bộ nhớ đệm L1 trên các phiên bản nhân có chứa các tiện ích tìm nạp trước.

Từ tấn công dịch địa chỉ đến Foreshadow

Phần mềm hệ thống dựa vào cơ chế dịch địa chỉ của CPU để thực hiện cách ly giữa các tiến trình  khác nhau. Mỗi tiến trình có không gian bộ nhớ ảo riêng và không thể tùy ý truy cập các địa chỉ bộ nhớ vật lý bên ngoài. Do đó, dịch địa chỉ được chương trình sử dụng như một lớp trung gian ánh xạ không gian địa chỉ ảo đến địa chỉ vật lý. Không gian địa chỉ ảo cũng bao gồm một không gian địa chỉ nhân để chứa các luồng nhân Linux, giúp phần cứng bên dưới dễ dàng xử lý các lệnh đặc quyền từ các luồng người dùng trong chế độ nhân.

Trong khi các nhân của hệ điều hành có thể được bảo mật trước các cuộc tấn công kênh kề tìm nạp trước thông qua một kỹ thuật được gọi là cách ly bảng trang nhân (Kernel Page-Table Isolation - KPTI hoặc KAISER). Kỹ thuật này thực hiện cách ly nghiêm ngặt giữa user-space và nhân để phần cứng không giữ bất kỳ thông tin nào về địa chỉ nhân trong khi đang chạy ở chế độ người dùng.

Các nhà nghiên cứu nhận thấy rằng, KPTI  không đảm bảo bảo vệ hoàn toàn khỏi các cuộc tấn công dịch địa chỉ khi kẻ tấn công cố gắng kiểm tra xem hai địa chỉ ảo khác nhau có ánh xạ đến cùng một địa chỉ vật lý hay không. Nói cách khác, tấn công dịch địa chỉ cho phép các ứng dụng không có đặc quyền thực hiện tìm nạp các địa chỉ nhân tùy ý vào bộ nhớ đệm, và do đó phân giải địa chỉ ảo thành địa chỉ vật lý trên các hệ thống Linux 64 bit.

Hướng suy nghĩ ban đầu là các cuộc tấn công như vậy có liên quan đến các câu lệnh tìm nạp trước, nhưng phát hiện mới đã chứng minh ngược lại. Từ đó xác nhận rằng, KPTI không phải là một biện pháp đối phó hoàn chỉnh chống lại các cuộc tấn công kênh kề vi kiến trúc đối với sự cách ly nhân.

Thay vào đó, một công cụ tên là Spectre-BTB- SA-IP (Branch Target Buffer, Same Address, In- Place) được khai thác để gây rò rỉ thông tin, tạo ra thực hành suy đoán và có thể dẫn đến các cuộc tấn công lợi dụng lỗ hổng Meltdown và Foreshadow bằng cách bỏ qua bản vá L1TF hiện tại.

Spectre-BTB-SA-IP là một biến thể của lỗ hổng Spectre khai thác bộ đệm mục tiêu nhánh (Branch Target Buffer) - một thành phần giống như bộ nhớ đệm trong các CPU được sử dụng để dự đoán nhánh, nhằm thực hiện các cuộc tấn công trong cùng một không gian địa chỉ và cùng một vị trí nhánh.

Các nhà nghiên cứu cho biết, hiệu ứng tìm nạp trước tương tự có thể được sử dụng để thực hiện tấn công Foreshadow. Nếu có bí mật trong bộ nhớ đệm L3 và địa chỉ bản đồ vật lý trực tiếp được tham chiếu trong nhân hypervisor, thì dữ liệu có thể được tìm nạp vào L1. Điều này cho phép thực hiện tấn công Foreshadow ngay cả khi bản vá cho Foreshadow được kích hoạt trong khi các bản vá Spectre-BTB không kích hoạt. Hệ quả là có thể thực hiện tấn công Foreshadow trên các nhân cũ hơn đã được vá lỗ hổng Foreshadow cùng tất cả các biện pháp được kích hoạt, và trên một nhân được vá đầy đủ nếu các bản vá Spectre-v2 bị vô hiệu hóa.

Kích hoạt bản vá Spectre-BTB như Retpoline

Để nhấn mạnh tác động của các cuộc tấn công kênh kề, các nhà nghiên cứu đã thiết lập một kênh ngầm dựa trên bộ nhớ đệm để tách dữ liệu từ một tiến trình chạy trên CPU Intel Core i7-6500U sang một tiến trình ẩn khác, với tốc độ truyền 10 bit/s để chuyển tiếp tổng cộng 128 byte đến tiến trình nhận.

Ngoài ra, các nhà nghiên cứu cho biết có thể  làm rò rỉ nội dung thanh ghi từ vùng bao SGX của CPU Intel, bằng cách sử dụng một thanh ghi được tham chiếu suy đoán (gọi là “bẫy tham chiếu ngược”- dereference trap) để khôi phục một giá trị 32 bit được lưu trữ trong thanh ghi 64 bit trong 15 phút.

Cuối cùng, một số cuộc tấn công nhất định hiện có thể được thực hiện từ xa thông qua JavaScript trong trình duyệt web, và điền vào các thanh ghi   64 bit, với giá trị mà kẻ tấn công kiểm soát trong JavaScript bằng cách sử dụng WebAssembly.

Để giảm thiểu các cuộc tấn công này, các CPU hiện tại được khuyến nghị kích hoạt các bản vá Spectre-BTB, bao gồm Retpoline, nhằm mục đích ngăn chặn việc chèn mục tiêu nhánh bằng cách cách ly các nhánh gián tiếp khỏi thực hành suy đoán.