Ứng dụng và rủi ro an ninh của Giá trị Sentinel trong Chrome V8
Sentinel Value là giá trị đặc biệt thường được sử dụng trong thuật toán, thường được dùng làm điều kiện dừng trong các thuật toán vòng lặp hoặc đệ quy. Kỹ thuật này được sử dụng rộng rãi trong mã nguồn của Chrome. Gần đây, các nhà nghiên cứu an ninh đã phát hiện ra phương pháp thực hiện mã tùy ý trong sandbox của Chrome thông qua việc rò rỉ các đối tượng Sentinel Value cụ thể.
Trong động cơ V8, có nhiều đối tượng gốc không nên bị lộ ra môi trường JavaScript. Ngoài đối tượng TheHole đã được báo cáo trước đó, bài viết này tập trung thảo luận về vấn đề lộ ra của đối tượng Uninitialized Oddball. Phương pháp này hiện vẫn khả dụng trong phiên bản mới nhất của V8 và chưa được sửa chữa.
Cần lưu ý rằng phương pháp khai thác sự rò rỉ của đối tượng Oddball chưa khởi tạo có tính phổ quát cao. Nhiều lỗ hổng lịch sử (như CVE-2021-30551, CVE-2022-1486, v.v.) đều liên quan đến sự rò rỉ của các đối tượng như vậy. Việc phát hiện phương pháp này có thể làm giảm độ khó trong việc khai thác các lỗ hổng liên quan.
Bằng cách sửa đổi các hàm gốc của V8, có thể dễ dàng rò rỉ đối tượng Uninitialized Oddball vào môi trường JavaScript. Sử dụng phương pháp này, kẻ tấn công có thể vượt qua cơ chế bảo vệ tăng cường kiểu của V8, thực hiện các thao tác đọc và ghi bộ nhớ gần như tùy ý.
Trong mã JavaScript đã được tối ưu hóa, do thiếu kiểm tra đối với mảng map, việc tính toán trực tiếp để trả về giá trị mảng có rủi ro về an toàn. Khuyến nghị khi hàm tối ưu trả về các phần tử của mảng, nên tăng cường kiểm tra đối với mảng map để nâng cao tính an toàn.
Ảnh hưởng của các vấn đề này có thể vượt quá dự kiến. Một số ứng dụng sử dụng phiên bản V8 cũ có thể vẫn gặp rủi ro. Ví dụ, tính đến thời điểm hiện tại, Skype vẫn chưa khắc phục lỗ hổng này. Trên hệ thống 32 bit, do thiếu cơ chế nén địa chỉ, kẻ tấn công có thể dễ dàng thực hiện việc đọc và ghi nhớ tùy ý.
Nói chung, các vấn đề an ninh liên quan đến Sentinel Value đáng được chú ý hơn. Không chỉ Uninitialized Oddball và đối tượng TheHole có thể gây ra rủi ro an ninh, mà các Sentinel Value khác cũng có thể tồn tại rủi ro tương tự. Đề nghị đưa những giá trị đặc biệt này vào phạm vi kiểm thử mờ để phát hiện các con đường khai thác tiềm tàng.
Dù các vấn đề này có được coi là lỗ hổng bảo mật chính thức hay không, chúng có thể rút ngắn đáng kể thời gian mà kẻ tấn công có thể tận dụng triệt để. Do đó, các bên liên quan nên luôn cảnh giác và kịp thời khắc phục các rủi ro tiềm ẩn.
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.
Phân tích lỗ hổng rò rỉ Giá trị Sentinel của động cơ Chrome V8 và rủi ro an ninh
Ứng dụng và rủi ro an ninh của Giá trị Sentinel trong Chrome V8
Sentinel Value là giá trị đặc biệt thường được sử dụng trong thuật toán, thường được dùng làm điều kiện dừng trong các thuật toán vòng lặp hoặc đệ quy. Kỹ thuật này được sử dụng rộng rãi trong mã nguồn của Chrome. Gần đây, các nhà nghiên cứu an ninh đã phát hiện ra phương pháp thực hiện mã tùy ý trong sandbox của Chrome thông qua việc rò rỉ các đối tượng Sentinel Value cụ thể.
Trong động cơ V8, có nhiều đối tượng gốc không nên bị lộ ra môi trường JavaScript. Ngoài đối tượng TheHole đã được báo cáo trước đó, bài viết này tập trung thảo luận về vấn đề lộ ra của đối tượng Uninitialized Oddball. Phương pháp này hiện vẫn khả dụng trong phiên bản mới nhất của V8 và chưa được sửa chữa.
Cần lưu ý rằng phương pháp khai thác sự rò rỉ của đối tượng Oddball chưa khởi tạo có tính phổ quát cao. Nhiều lỗ hổng lịch sử (như CVE-2021-30551, CVE-2022-1486, v.v.) đều liên quan đến sự rò rỉ của các đối tượng như vậy. Việc phát hiện phương pháp này có thể làm giảm độ khó trong việc khai thác các lỗ hổng liên quan.
Bằng cách sửa đổi các hàm gốc của V8, có thể dễ dàng rò rỉ đối tượng Uninitialized Oddball vào môi trường JavaScript. Sử dụng phương pháp này, kẻ tấn công có thể vượt qua cơ chế bảo vệ tăng cường kiểu của V8, thực hiện các thao tác đọc và ghi bộ nhớ gần như tùy ý.
Trong mã JavaScript đã được tối ưu hóa, do thiếu kiểm tra đối với mảng map, việc tính toán trực tiếp để trả về giá trị mảng có rủi ro về an toàn. Khuyến nghị khi hàm tối ưu trả về các phần tử của mảng, nên tăng cường kiểm tra đối với mảng map để nâng cao tính an toàn.
Ảnh hưởng của các vấn đề này có thể vượt quá dự kiến. Một số ứng dụng sử dụng phiên bản V8 cũ có thể vẫn gặp rủi ro. Ví dụ, tính đến thời điểm hiện tại, Skype vẫn chưa khắc phục lỗ hổng này. Trên hệ thống 32 bit, do thiếu cơ chế nén địa chỉ, kẻ tấn công có thể dễ dàng thực hiện việc đọc và ghi nhớ tùy ý.
Nói chung, các vấn đề an ninh liên quan đến Sentinel Value đáng được chú ý hơn. Không chỉ Uninitialized Oddball và đối tượng TheHole có thể gây ra rủi ro an ninh, mà các Sentinel Value khác cũng có thể tồn tại rủi ro tương tự. Đề nghị đưa những giá trị đặc biệt này vào phạm vi kiểm thử mờ để phát hiện các con đường khai thác tiềm tàng.
Dù các vấn đề này có được coi là lỗ hổng bảo mật chính thức hay không, chúng có thể rút ngắn đáng kể thời gian mà kẻ tấn công có thể tận dụng triệt để. Do đó, các bên liên quan nên luôn cảnh giác và kịp thời khắc phục các rủi ro tiềm ẩn.