Google đã công bố hỗ trợ cho cái được gọi là V8 Sandbox trong trình duyệt web Chrome nhằm nỗ lực giải quyết các vấn đề corruption bộ nhớ.
Ý tưởng là hạn chế tác động của các lỗ hổng V8 bằng cách hạn chế mã được V8 thực thi thành một tập con của không gian địa chỉ ảo của quá trình (“sandbox”) và cô lập nó khỏi phần còn lại của quá trình.
Những thiếu sót ảnh hưởng đến V8 đã chiếm một phần đáng kể của các lỗ hổng zero-day mà Google đã giải quyết giữa năm 2021 và 2023, với tới 16 lỗ hổng bảo mật được phát hiện trong khoảng thời gian đó.
“SandBox giả định rằng một kẻ tấn công có thể tùy ý và đồng thời sửa đổi bất kỳ bộ nhớ nào bên trong không gian địa chỉ sandbox vì nguyên thủy này có thể được xây dựng từ các lỗ hổng V8 thông thường,” nhóm Chromium nói.
“Ngoài ra, người ta giả định rằng một kẻ tấn công sẽ có thể đọc bộ nhớ bên ngoài sandbox, ví dụ, thông qua các kênh phụ trợ phần cứng. Sau đó, sandbox nhằm bảo vệ phần còn lại của quá trình khỏi kẻ tấn công như vậy. Do đó, bất kỳ sự hỏng hóc bộ nhớ nào bên ngoài không gian địa chỉ sandbox đều được coi là vi phạm sandbox.”
Groß nhấn mạnh những thách thức khi giải quyết các lỗ hổng V8 bằng cách chuyển sang một ngôn ngữ an toàn bộ nhớ như Rust hoặc các phương pháp an toàn bộ nhớ phần cứng, chẳng hạn như gắn thẻ bộ nhớ, vì những “vấn đề logic tinh vi” có thể được khai thác để làm hỏng bộ nhớ, không giống như các lỗi an toàn bộ nhớ cổ điển như sử dụng sau khi giải phóng, truy cập ngoài phạm vi, và những người khác. “Hầu hết các lỗ hổng được tìm thấy và khai thác trong V8 ngày nay đều có một điểm chung: việc hỏng hóc bộ nhớ cuối cùng cần phải xảy ra bên trong đống V8 vì trình biên dịch và thời gian chạy (gần như) hoạt động độc quyền trên các thể hiện HeapObject của V8,” Groß nói.
Vì những vấn đề này không thể được bảo vệ bằng cùng một kỹ thuật được sử dụng cho các lỗ hổng hỏng hóc bộ nhớ thông thường, V8 Sandbox được thiết kế để cô lập bộ nhớ đống của V8 sao cho nếu xảy ra bất kỳ hỏng hóc bộ nhớ nào, nó không thể thoát khỏi các giới hạn bảo mật đến các phần khác của bộ nhớ quá trình.
Điều này được thực hiện bằng cách thay thế tất cả các loại dữ liệu có thể truy cập vào bộ nhớ ngoài sandbox bằng các biến thể “tương thích với sandbox”, do đó ngăn chặn hiệu quả một kẻ tấn công truy cập vào bộ nhớ khác. Sandbox có thể được kích hoạt bằng cách đặt “v8_enable_sandbox” thành true trong các đối số gn.
Kết quả đánh giá từ Speedometer và JetStream cho thấy tính năng bảo mật này thêm một gánh nặng khoảng 1% trên các công việc thông thường, cho phép nó được kích hoạt theo mặc định bắt đầu từ phiên bản Chrome 123, bao gồm Android, ChromeOS, Linux, macOS, và Windows.
“V8 Sandbox yêu cầu một hệ thống 64 bit vì nó cần dự trữ một lượng lớn không gian địa chỉ ảo, hiện tại là một terabyte,” Groß nói.
“Sandbox được thúc đẩy bởi việc công nghệ an toàn bộ nhớ hiện tại chủ yếu không thể áp dụng cho các động cơ JavaScript tối ưu hóa. Trong khi những công nghệ này không thể ngăn chặn hỏng hóc bộ nhớ trong chính V8, chúng có thể bảo vệ bề mặt tấn công V8 Sandbox. Do đó, sandbox là một bước cần thiết hướng tới an toàn bộ nhớ.”
Sự phát triển đến khi Google nổi bật vai trò của Kernel Address Sanitizer (KASan) trong việc phát hiện các lỗi bộ nhớ trong mã gốc và giúp củng cố an ninh firmware Android, thêm vào đó, nó đã sử dụng công cụ dựa trên trình biên dịch để phát hiện ra hơn 40 lỗi.
“Sử dụng các bản build được kích hoạt KASan trong quá trình kiểm tra và/hoặc fuzzing có thể giúp bắt lỗi hỏng hóc bộ nhớ và các vấn đề ổn định trước khi chúng đặt trên các thiết bị người dùng,” Eugene Rodionov và Ivan Lozano từ nhóm Android nói.
Nguồn: THN