Google vừa công bố một tính năng mới có tên V8 Sandbox trên trình duyệt web Chrome nhằm giải quyết các vấn đề liên quan đến lỗi hỏng bộ nhớ.

Theo Samuel Groß, trưởng nhóm bảo mật V8, sandbox này được thiết kế để ngăn chặn "lỗi hỏng bộ nhớ trong V8 lan rộng ra toàn bộ tiến trình chính".

Gã khổng lồ tìm kiếm mô tả V8 Sandbox như một sandbox nhẹ, hoạt động trong tiến trình, dành cho các bộ máy JavaScript và WebAssembly. Mục tiêu chính là giảm thiểu các lỗ hổng phổ biến trong V8.

Ý tưởng đằng sau V8 Sandbox là hạn chế tác động của các lỗ hổng bằng cách giới hạn mã được thực thi bởi V8 trong một phần không gian địa chỉ ảo của tiến trình (hay còn gọi là "sandbox") và cách ly nó khỏi phần còn lại của tiến trình.

Các lỗ hổng liên quan đến V8 chiếm một phần đáng kể trong số các lỗ hổng zero-day mà Google đã vá từ năm 2021 đến 2023, với 16 lỗ hổng bảo mật được phát hiện trong khoảng thời gian này.

Nhóm Chromium cho biết: "Sandbox giả định rằng kẻ tấn công có thể sửa đổi bất kỳ bộ nhớ nào bên trong không gian địa chỉ sandbox một cách tùy ý và đồng thời, vì hành động này có thể được tạo ra từ các lỗ hổng V8 điển hình."

"Hơn nữa, sandbox cũng giả định rằng kẻ tấn công sẽ có thể đọc bộ nhớ bên ngoài sandbox, ví dụ như thông qua các kênh phụ của phần cứng. Do đó, mục tiêu của sandbox là bảo vệ phần còn lại của tiến trình khỏi những cuộc tấn công như vậy. Bất kỳ sự xâm phạm bộ nhớ nào bên ngoài không gian địa chỉ sandbox đều được coi là vi phạm sandbox," nhóm này cho biết thêm.

Ông Groß nhấn mạnh những thách thức trong việc giải quyết các lỗ hổng V8 bằng cách chuyển sang ngôn ngữ an toàn cho bộ nhớ như Rust hoặc các phương pháp bảo đảm an toàn bộ nhớ phần cứng, chẳng hạn như đánh dấu bộ nhớ. Lý do là vì các "vấn đề logic tinh vi" có thể bị 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 khác.

"Hầu hết các lỗ hổng được tìm thấy và khai thác trong V8 hiện nay đều có một điểm chung: sự hỏng bộ nhớ cuối cùng xảy ra bên trong đống (heap) của V8 vì trình biên dịch và trình chạy (hầu như) chỉ hoạt động trên các đối tượng V8 HeapObject," Groß cho biết.

Những vấn đề này không thể được bảo vệ bởi các kỹ thuật tương tự được sử dụng cho các lỗ hổng hỏng bộ nhớ thông thường. Vì thế V8 Sandbox được thiết kế để cách ly bộ nhớ đống của V8 sao cho dù bất kỳ lỗi hỏng bộ nhớ nào xảy ra, nó không thể thoát khỏi giới hạn bảo mật để lan sang các phần khác của bộ nhớ tiến trình.

Điều này được thực hiện bằng cách thay thế tất cả các kiểu dữ liệu có thể truy cập bộ nhớ ngoài sandbox bằng các lựa chọn khác tương thích với sandbox. Việc này ngăn chặn kẻ tấn công truy cập vào các bộ nhớ khác một cách hiệu quả. Sandbox có thể được bật bằng cách đặt "v8_enable_sandbox" thành true trong gn args khi bên dịch V8.

Kết quả đo lường từ Speedometer và JetStream cho thấy tính năng bảo mật này phát sinh thêm khoảng 1% yêu cầu về tải chạy. Tính năng này có thể được kích hoạt mặc định bắt đầu từ Chrome phiên bản 123 trên Android, ChromeOS, Linux, macOS và Windows.

"V8 Sandbox yêu cầu hệ thống 64-bit vì nó cần dành một lượng lớn không gian địa chỉ ảo, hiện tại là một terabyte," Groß nói.

"Chúng tôi tạo ra sandbox vì các kỹ thuật an toàn bộ nhớ hiện tại phần lớn không áp dụng được để tối ưu hóa các bộ máy JavaScript. Tuy các công nghệ này không ngăn chặn được lỗi hỏng bộ nhớ trong V8, chúng có thể bảo vệ bề mặt tấn công của V8 Sandbox. Do đó, sandbox là một bước cần thiết hướng tới an toàn bộ nhớ."

Tính năng này ra đời khi Google nhấn mạnh vai trò của Kernel Address Sanitizer (KASan) trong việc phát hiện lỗi bộ nhớ trong mã gốc và gia cố bảo mật cho firmware trên Android. Công ty này đồng thời cho biết thêm rằng họ đã 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 dựng có KASan trong quá trình kiểm thử có thể giúp phát hiện các lỗ hổng hỏng bộ nhớ và các vấn đề về độ ổn định trước khi chúng xuất hiện trên thiết bị của người dùng," Eugene Rodionov và Ivan Lozano từ nhóm Android cho biết.

Theo The Hacker News.

Chia sẻ bài viết này