Google chứng minh việc khai thác lỗ hổng Spectre thông qua việc thực thi JavaScript trên trình duyệt

Google đã xuất bản một số nguyên mẫu khai thác cho thấy khả năng khai thác lỗ hổng lớp Spectre khi thực thi mã JavaScript trong trình duyệt, bỏ qua các phương thức bảo vệ đã thêm trước đó. Việc khai thác có thể được sử dụng để giành quyền truy cập vào bộ nhớ của quá trình xử lý nội dung web trong tab hiện tại. Để kiểm tra hoạt động khai thác, trang web Leaky.page đã được ra mắt và mã mô tả logic của công việc đã được đăng trên GitHub.

Nguyên mẫu được đề xuất được thiết kế để tấn công các hệ thống có bộ xử lý Intel Core i7-6500U trong môi trường Linux và Chrome 88. Để sử dụng cách khai thác cho các môi trường khác, cần phải sửa đổi. Phương pháp khai thác không dành riêng cho bộ xử lý Intel - sau khi điều chỉnh thích hợp, việc khai thác đã được xác nhận là hoạt động trên các hệ thống có CPU của các nhà sản xuất khác, bao gồm cả Apple M1 dựa trên kiến ​​trúc ARM. Sau những điều chỉnh nhỏ, việc khai thác cũng có thể thực hiện được trong các hệ điều hành khác và trong các trình duyệt khác dựa trên công cụ Chrome.

Trong môi trường dựa trên bộ xử lý Chrome 88 và Intel Skylake tiêu chuẩn, có thể rò rỉ dữ liệu từ quy trình chịu trách nhiệm xử lý nội dung web trong tab Chrome hiện tại (quy trình kết xuất) với tốc độ 1 kilobyte mỗi giây. Ngoài ra, các nguyên mẫu thay thế đã được phát triển, chẳng hạn như một cách khai thác cho phép, với chi phí là giảm độ ổn định, tăng tốc độ rò rỉ lên 8kB/s khi sử dụng bộ hẹn giờ performance.now() với độ chính xác 5 micro giây (0.005 mili giây). ). Một phiên bản cũng đã được chuẩn bị để hoạt động với độ chính xác của bộ đếm thời gian là một phần nghìn giây, có thể được sử dụng để tổ chức quyền truy cập vào bộ nhớ của một quy trình khác với tốc độ khoảng 60 byte mỗi giây.

Mã demo được xuất bản bao gồm ba phần. Phần đầu tiên hiệu chỉnh bộ hẹn giờ để ước tính thời gian thực hiện các thao tác cần thiết để khôi phục dữ liệu còn lại trong bộ nhớ đệm của bộ xử lý do thực hiện các lệnh CPU mang tính suy đoán. Phần thứ hai xác định bố cục bộ nhớ được sử dụng khi phân bổ mảng JavaScript.

Phần thứ ba trực tiếp khai thác lỗ hổng Spectre để xác định nội dung bộ nhớ của quy trình hiện tại nhằm tạo điều kiện cho việc thực hiện suy đoán một số thao tác nhất định, kết quả của thao tác này sẽ bị bộ xử lý loại bỏ sau khi xác định dự đoán không thành công, nhưng có dấu vết của quá trình thực thi được lưu vào bộ đệm chung và có thể được khôi phục bằng các phương pháp xác định nội dung của bộ đệm bởi các kênh của bên thứ ba nhằm phân tích những thay đổi về thời gian truy cập vào dữ liệu được lưu trong bộ nhớ đệm và không được lưu trong bộ nhớ đệm.

Kỹ thuật khai thác được đề xuất có thể thực hiện mà không cần bộ định thời có độ chính xác cao thông qua API performance.now() và không hỗ trợ loại SharedArrayBuffer, cho phép tạo mảng trong bộ nhớ dùng chung. Việc khai thác bao gồm tiện ích Spectre, gây ra việc thực thi mã suy đoán có kiểm soát và bộ phân tích rò rỉ kênh bên, phát hiện dữ liệu được lưu trong bộ nhớ đệm thu được trong quá trình thực thi suy đoán.

Tiện ích được triển khai bằng cách sử dụng một mảng JavaScript trong đó nỗ lực được thực hiện để truy cập vào một khu vực bên ngoài ranh giới bộ đệm, ảnh hưởng đến trạng thái của khối dự đoán nhánh do sự hiện diện của kiểm tra kích thước bộ đệm được trình biên dịch thêm vào (bộ xử lý thực hiện theo suy đoán truy cập trước thời hạn, nhưng khôi phục trạng thái sau khi kiểm tra). Để phân tích nội dung của bộ đệm trong điều kiện độ chính xác của bộ đếm thời gian không đủ, một phương pháp được đề xuất nhằm đánh lừa chiến lược loại bỏ dữ liệu của Tree-PLRU được sử dụng trong bộ xử lý và cho phép, bằng cách tăng số chu kỳ, tăng đáng kể sự khác biệt về thời gian khi quay trở lại. một giá trị từ bộ đệm và khi không có giá trị nào trong bộ đệm.

Cần lưu ý rằng Google đã xuất bản nguyên mẫu khai thác để cho thấy tính khả thi của các cuộc tấn công sử dụng lỗ hổng lớp Spectre và khuyến khích các nhà phát triển web sử dụng các kỹ thuật nhằm giảm thiểu rủi ro từ các cuộc tấn công như vậy. Đồng thời, Google tin rằng nếu không làm lại đáng kể nguyên mẫu được đề xuất, thì không thể tạo ra các khai thác phổ biến sẵn sàng không chỉ để trình diễn mà còn để sử dụng rộng rãi.

Để giảm rủi ro, chủ sở hữu trang web được khuyến khích sử dụng các tiêu đề được triển khai gần đây Chính sách mở nguồn chéo (COOP), Chính sách nhúng đa nguồn gốc (COEP), Chính sách tài nguyên nhiều nguồn gốc (CORP), Yêu cầu siêu dữ liệu tìm nạp, X-Frame- Tùy chọn, X -Content-Type-Options và SameSite Cookie. Các cơ chế này không trực tiếp bảo vệ khỏi các cuộc tấn công nhưng chúng cho phép bạn cách ly dữ liệu trang web khỏi bị rò rỉ vào các quy trình trong đó mã JavaScript của kẻ tấn công có thể được thực thi (rò rỉ xảy ra từ bộ nhớ của quy trình hiện tại, ngoài mã của kẻ tấn công). , cũng có thể xử lý dữ liệu từ một trang web khác được mở trong cùng tab đó). Ý tưởng chính là tách việc thực thi mã trang web trong các quy trình khác nhau khỏi mã của bên thứ ba nhận được từ các nguồn không đáng tin cậy, chẳng hạn như được đưa vào thông qua iframe.



Nguồn: opennet.ru

Thêm một lời nhận xét