- Sandbox V8 là một sandbox nhẹ, in-process dành cho engine V8
- Hiện đã vượt qua giai đoạn thử nghiệm và được đưa vào Chương trình phần thưởng lỗ hổng (VRP) của Chrome
- Vẫn còn các vấn đề bảo mật cần giải quyết, và Chrome phiên bản 123 có thể được xem là bản phát hành "beta" của sandbox
Động lực
- An toàn bộ nhớ vẫn là một vấn đề quan trọng; mọi vụ khai thác Chrome được phát hiện trong 3 năm qua đều bắt đầu từ lỗ hổng hỏng bộ nhớ trong V8
- 60% trong số các lỗ hổng này xảy ra trong V8, nhưng phần lớn không phải là các lỗi hỏng bộ nhớ "điển hình" mà là những vấn đề logic tinh vi
- Hầu hết các giải pháp an toàn bộ nhớ hiện nay không áp dụng được cho V8, và việc chuyển sang ngôn ngữ an toàn bộ nhớ như Rust hoặc các tính năng phần cứng như memory tagging cũng không giúp giải quyết các thách thức bảo mật của V8
Sandbox V8 (heap)
- Ý tưởng cốt lõi của sandbox là cô lập bộ nhớ heap của V8 để hỏng bộ nhớ không "lan" sang các phần khác của tiến trình
- Có thể triển khai bằng hỗ trợ phần cứng, nhưng hiện chưa có tính năng phần cứng phù hợp nên nó được triển khai bằng phần mềm
- Sandbox thay thế các kiểu dữ liệu có thể truy cập toàn bộ bộ nhớ bên ngoài bằng các lựa chọn thay thế "tương thích với sandbox"
- Chỉ heap V8 bên trong sandbox mới nằm trong sandbox này, tương tự mô hình sandboxing của WebAssembly
Hiệu năng
- Ưu điểm chính của cách tiếp cận sandbox là về cơ bản chi phí thấp
- Overhead do sandbox chủ yếu đến từ việc gián tiếp tham chiếu qua bảng con trỏ tới các đối tượng bên ngoài, và hiện overhead dưới 1% trên các workload điển hình
Kiểm thử
- Khả năng kiểm thử một ranh giới bảo mật về thực chất là khả năng kiểm tra thủ công và tự động xem đảm bảo bảo mật đó có thực sự được giữ vững hay không
- Sandbox V8 đáp ứng cả mô hình kẻ tấn công rõ ràng, phương pháp mô phỏng kẻ tấn công, và cách tự động xác định khi ranh giới bảo mật bị phá vỡ
Sử dụng
- Sandbox V8 phải được bật/tắt tại thời điểm build bằng cờ build
v8_enable_sandbox.
- Chỉ khả dụng trên hệ thống 64-bit, và hiện cần đặt trước 1 terabyte không gian địa chỉ ảo.
- Sandbox V8 đã được bật mặc định trên Chrome 64-bit cho Android, ChromeOS, Linux, macOS và Windows từ khoảng 2 năm trước.
Kết luận
- Sandbox V8 là một cơ chế bảo mật mới được thiết kế để ngăn hỏng bộ nhớ trong V8 ảnh hưởng đến bộ nhớ khác của tiến trình
- Các công nghệ an toàn bộ nhớ hiện tại phần lớn không áp dụng được cho các JavaScript engine đã tối ưu hóa, nhưng lại hiệu quả trong việc bảo vệ bề mặt tấn công của sandbox V8
- Sandbox là một bước đi thiết yếu hướng tới an toàn bộ nhớ
Ý kiến của GN⁺
- Sandbox V8 là một biện pháp đối phó hiện đại đối với các lỗ hổng hỏng bộ nhớ, đưa ra lời giải cho những vấn đề mà các công nghệ an toàn bộ nhớ hiện có chưa xử lý được
- Xét đến độ phức tạp của JavaScript engine, sandbox này đóng vai trò quan trọng trong việc củng cố ranh giới bảo mật và cải thiện an toàn bộ nhớ
- Việc sandbox có overhead hiệu năng thấp có thể hấp dẫn với các nhà phát triển, và điều này sẽ giúp nó được chấp nhận rộng rãi hơn
- Tuy nhiên, công nghệ sandbox cũng có thể tạo ra các lỗ hổng bảo mật hoàn toàn mới, và điều này cần được quản lý thông qua giám sát và kiểm thử liên tục
- Việc triển khai hiệu quả sandbox đóng vai trò quan trọng trong việc ngăn kẻ tấn công làm lan rộng hỏng bộ nhớ sang các phần khác của hệ thống, từ đó góp phần tăng cường bảo mật web
Chưa có bình luận nào.