Kỹ thuật mới khai thác lỗ hổng Spectre trên Chrome

Một nhóm các nhà nghiên cứu từ các trường đại học Mỹ, Úc và Israel đã đề xuất một kỹ thuật tấn công kênh bên mới để khai thác các lỗ hổng loại Spectre trong các trình duyệt dựa trên công cụ Chrome. Cuộc tấn công có tên mã là Spook.js, cho phép bạn bỏ qua cơ chế cách ly trang web bằng cách chạy mã JavaScript và đọc nội dung của toàn bộ không gian địa chỉ của quy trình hiện tại, tức là. truy cập dữ liệu từ các trang đang chạy trong các tab khác nhưng được xử lý trong cùng một quy trình.

Vì Chrome chạy các trang web khác nhau trong các quy trình khác nhau nên khả năng thực hiện các cuộc tấn công thực tế bị giới hạn ở các dịch vụ cho phép những người dùng khác nhau lưu trữ trang của họ. Phương pháp này cho phép, từ một trang mà kẻ tấn công có cơ hội nhúng mã JavaScript của mình, xác định sự hiện diện của các trang khác được người dùng mở từ cùng một trang và trích xuất thông tin bí mật từ chúng, ví dụ: thông tin xác thực hoặc chi tiết ngân hàng được thay thế bằng hệ thống tự động điền các trường trong biểu mẫu web. Để minh họa, nó cho thấy cách bạn có thể tấn công blog của người khác trên dịch vụ Tumblr nếu chủ sở hữu của nó mở blog của kẻ tấn công được lưu trữ trên cùng một dịch vụ trong một tab khác.

Một tùy chọn khác để sử dụng phương pháp này là tấn công vào các tiện ích bổ sung của trình duyệt, cho phép khi cài đặt một tiện ích bổ sung do kẻ tấn công kiểm soát, trích xuất dữ liệu từ các tiện ích bổ sung khác. Ví dụ: chúng tôi chỉ ra cách cài đặt một tiện ích bổ sung độc hại, bạn có thể trích xuất thông tin bí mật từ trình quản lý mật khẩu LastPass.

Các nhà nghiên cứu đã xuất bản nguyên mẫu khai thác hoạt động trong Chrome 89 trên các hệ thống có CPUIntel i7-6700K và i7-7600U. Khi tạo mã khai thác, các nguyên mẫu mã JavaScript do Google xuất bản trước đây đã được sử dụng để thực hiện các cuộc tấn công lớp Spectre. Cần lưu ý rằng các nhà nghiên cứu đã có thể chuẩn bị các hoạt động khai thác cho các hệ thống dựa trên bộ xử lý Intel và Apple M1, giúp tổ chức đọc bộ nhớ ở tốc độ 500 byte mỗi giây và độ chính xác 96%. Người ta cho rằng phương pháp này cũng có thể áp dụng cho bộ xử lý AMD, nhưng không thể chuẩn bị khai thác đầy đủ chức năng.

Cuộc tấn công có thể áp dụng cho mọi trình duyệt dựa trên công cụ Chrome, bao gồm Google Chrome, Microsoft Edge và Brave. Các nhà nghiên cứu cũng tin rằng phương pháp này có thể được điều chỉnh để hoạt động với Firefox, nhưng vì công cụ Firefox rất khác với Chrome nên công việc tạo ra một cách khai thác như vậy sẽ được dành cho tương lai.

Để bảo vệ khỏi các cuộc tấn công dựa trên trình duyệt liên quan đến việc thực thi các hướng dẫn mang tính suy đoán, Chrome triển khai phân đoạn không gian địa chỉ - tính năng cách ly hộp cát cho phép JavaScript chỉ hoạt động với các con trỏ 32 bit và chia sẻ bộ nhớ của các trình xử lý trong các đống 4GB rời rạc. Để cung cấp quyền truy cập vào toàn bộ không gian địa chỉ quy trình và vượt qua giới hạn 32 bit, các nhà nghiên cứu đã sử dụng một kỹ thuật có tên là Type Confusion, kỹ thuật này buộc công cụ JavaScript xử lý một đối tượng có loại không chính xác, khiến nó có thể tạo thành một đối tượng 64 bit. con trỏ dựa trên sự kết hợp của hai giá trị 32 bit.

Bản chất của cuộc tấn công là khi xử lý một đối tượng độc hại được thiết kế đặc biệt trong công cụ JavaScript, các điều kiện được tạo ra dẫn đến việc thực thi suy đoán các lệnh truy cập vào mảng. Đối tượng được chọn theo cách mà các trường do kẻ tấn công kiểm soát được đặt trong khu vực sử dụng con trỏ 64 bit. Do loại đối tượng độc hại không khớp với loại mảng đang được xử lý nên trong điều kiện bình thường, những hành động như vậy sẽ bị chặn trong Chrome bằng cơ chế hủy tối ưu hóa mã được sử dụng để truy cập mảng. Để giải quyết vấn đề này, mã cho cuộc tấn công Type Confusion được đặt trong khối “if” có điều kiện, khối này không được kích hoạt trong điều kiện bình thường nhưng được thực thi ở chế độ suy đoán, nếu bộ xử lý dự đoán không chính xác việc phân nhánh tiếp theo.

Do đó, bộ xử lý truy cập theo cách suy đoán con trỏ 64 bit được tạo và khôi phục trạng thái sau khi xác định dự đoán không thành công, nhưng dấu vết thực thi vẫn còn trong bộ đệm chung và có thể được khôi phục bằng các phương pháp phát hiện bộ đệm kênh bên để phân tích các thay đổi trong 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. Để phân tích nội dung của bộ đệm trong điều kiện bộ đếm thời gian có sẵn trong JavaScript không đủ độ chính xác, một phương pháp do Google đề xuất đã được sử dụng để đánh lừa chiến lược loại bỏ bộ đệm 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 có và không có giá trị trong bộ đệm. .

Nguồn: opennet.ru

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