Khám Phá Những Rủi Ro An Ninh Của Giá Trị Sentinel Trong Động Cơ Chrome V8
Giá trị Sentinel là một loại giá trị đặc biệt trong thuật toán, thường được sử dụng như một điều kiện dừng trong các thuật toán vòng lặp hoặc đệ quy. Trong mã nguồn Chrome có nhiều loại giá trị Sentinel, một số trong đó có thể gây ra lỗ hổng bảo mật. Bài viết này sẽ thảo luận về việc vượt qua cơ chế bảo vệ HardenProtect của động cơ Chrome V8 thông qua việc rò rỉ đối tượng Uninitialized Oddball.
Giá trị Sentinel trong V8
Trong động cơ V8, có nhiều đối tượng nguyên thủy được định nghĩa, và các đối tượng này được sắp xếp liền kề nhau trong bộ nhớ. Nếu các đối tượng nguyên thủy không nên bị lộ ra ngoài JavaScript mà lại bị lộ, điều này có thể dẫn đến việc thực thi mã tùy ý trong sandbox.
Vượt qua bảo vệ HardenType
Bằng cách sửa đổi các hàm native của V8, có thể để lộ đối tượng Uninitialized Oddball vào JavaScript. Sử dụng đối tượng bị lộ này, có thể thực hiện các thao tác đọc và ghi gần như tùy ý, từ đó vượt qua bảo vệ HardenType.
Cách thực hiện cụ thể là:
Sửa đổi hàm %TheHole() để nó trả về đối tượng Uninitialized Oddball
Tạo mã JavaScript đặc biệt, sử dụng hàm tối ưu hóa mà không kiểm tra mảng map, trực tiếp tính toán độ lệch và trả về giá trị mảng.
Thực hiện đọc và ghi tùy ý thông qua sự nhầm lẫn loại
Cảnh báo rủi ro PatchGap
Phương pháp vượt qua này không chỉ áp dụng cho phiên bản V8 mới nhất mà còn có thể ảnh hưởng đến phần mềm sử dụng phiên bản V8 cũ. Ví dụ, Skype hiện vẫn chưa khắc phục lỗ hổng này. Trong kiến trúc x86, do thiếu nén địa chỉ, phạm vi đọc và ghi tùy ý có thể lớn hơn.
Ngoài ra, phương pháp vượt qua mới này còn có thể giảm độ khó khai thác các lỗ hổng liên quan khác, chẳng hạn như Issue1314616 và Issue1216437.
Tóm tắt và suy ngẫm
Cũng có nhiều giá trị Sentinel khác trong V8, và chúng có thể cũng tiềm ẩn nguy cơ an ninh. Hướng nghiên cứu trong tương lai có thể bao gồm:
Khám phá xem liệu các lỗ hổng Oddball không được khởi tạo khác có thể thực hiện RCE của V8 hay không
Cân nhắc việc đưa giá trị Sentinel vào biến trong kiểm thử mờ để phát hiện nhiều lỗ hổng tiềm ẩn hơn.
Chú ý xem những vấn đề này có được coi là vấn đề an ninh chính thức hay không, và đánh giá ảnh hưởng của chúng đối với việc rút ngắn chu kỳ khai thác hoàn toàn của hacker.
Dù những vấn đề này có được phân loại chính thức là vấn đề an ninh hay không, chúng vẫn có thể rút ngắn đáng kể thời gian mà hacker có thể khai thác hoàn toàn. Do đó, việc liên tục theo dõi và nghiên cứu các vấn đề an ninh liên quan đến giá trị Sentinel là rất quan trọng.
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
17 thích
Phần thưởng
17
6
Chia sẻ
Bình luận
0/400
AirdropSweaterFan
· 07-08 03:03
Lại là lỗ hổng v8? Tháng trước mới sửa một đống.
Xem bản gốcTrả lời0
HashBard
· 07-05 03:39
omg v8's sentinels giống như thơ ca... những cái bị hỏng tiết lộ tất cả bí mật fr fr
Xem bản gốcTrả lời0
RetiredMiner
· 07-05 03:38
Con bug này tôi có thể viết một exp ngay cả khi nhắm mắt.
Phân tích và khai thác lỗ hổng bảo mật Giá trị Sentinel của động cơ Chrome V8
Khám Phá Những Rủi Ro An Ninh Của Giá Trị Sentinel Trong Động Cơ Chrome V8
Giá trị Sentinel là một loại giá trị đặc biệt trong thuật toán, thường được sử dụng như một điều kiện dừng trong các thuật toán vòng lặp hoặc đệ quy. Trong mã nguồn Chrome có nhiều loại giá trị Sentinel, một số trong đó có thể gây ra lỗ hổng bảo mật. Bài viết này sẽ thảo luận về việc vượt qua cơ chế bảo vệ HardenProtect của động cơ Chrome V8 thông qua việc rò rỉ đối tượng Uninitialized Oddball.
Giá trị Sentinel trong V8
Trong động cơ V8, có nhiều đối tượng nguyên thủy được định nghĩa, và các đối tượng này được sắp xếp liền kề nhau trong bộ nhớ. Nếu các đối tượng nguyên thủy không nên bị lộ ra ngoài JavaScript mà lại bị lộ, điều này có thể dẫn đến việc thực thi mã tùy ý trong sandbox.
Vượt qua bảo vệ HardenType
Bằng cách sửa đổi các hàm native của V8, có thể để lộ đối tượng Uninitialized Oddball vào JavaScript. Sử dụng đối tượng bị lộ này, có thể thực hiện các thao tác đọc và ghi gần như tùy ý, từ đó vượt qua bảo vệ HardenType.
Cách thực hiện cụ thể là:
Cảnh báo rủi ro PatchGap
Phương pháp vượt qua này không chỉ áp dụng cho phiên bản V8 mới nhất mà còn có thể ảnh hưởng đến phần mềm sử dụng phiên bản V8 cũ. Ví dụ, Skype hiện vẫn chưa khắc phục lỗ hổng này. Trong kiến trúc x86, do thiếu nén địa chỉ, phạm vi đọc và ghi tùy ý có thể lớn hơn.
Ngoài ra, phương pháp vượt qua mới này còn có thể giảm độ khó khai thác các lỗ hổng liên quan khác, chẳng hạn như Issue1314616 và Issue1216437.
Tóm tắt và suy ngẫm
Cũng có nhiều giá trị Sentinel khác trong V8, và chúng có thể cũng tiềm ẩn nguy cơ an ninh. Hướng nghiên cứu trong tương lai có thể bao gồm:
Dù những vấn đề này có được phân loại chính thức là vấn đề an ninh hay không, chúng vẫn có thể rút ngắn đáng kể thời gian mà hacker có thể khai thác hoàn toàn. Do đó, việc liên tục theo dõi và nghiên cứu các vấn đề an ninh liên quan đến giá trị Sentinel là rất quan trọng.