Mozilla bắt đầu triển khai công nghệ cách ly thư viện RLBox

Các nhà nghiên cứu từ Đại học Stanford, Đại học California ở San Diego và Đại học Texas ở Austin phát triển công cụ RLBox, có thể được sử dụng như một lớp cách ly bổ sung để chặn các lỗ hổng trong thư viện hàm. RLBox nhằm mục đích giải quyết vấn đề bảo mật của các thư viện bên thứ ba không đáng tin cậy, không nằm dưới sự kiểm soát của nhà phát triển nhưng có lỗ hổng bảo mật có thể làm tổn hại đến dự án chính.

Công ty Mozilla các kế hoạch sử dụng RLBox trong các bản dựng Linux của Firefox 74 và các bản dựng macOS của Firefox 75 để tách biệt việc thực thi thư viện than chì, chịu trách nhiệm hiển thị phông chữ. Tuy nhiên, RLBox không dành riêng cho Firefox và có thể được sử dụng để cô lập bất kỳ thư viện nào trong các dự án tùy ý. Sự phát triển RLBox lây lan theo giấy phép MIT. RLBox hiện hỗ trợ nền tảng Linux và macOS, dự kiến ​​sẽ hỗ trợ Windows sau này.

Механизм Công việc của RLBox là biên dịch mã C/C++ của một thư viện biệt lập thành mã WebAssugging trung gian cấp thấp, sau đó được thiết kế dưới dạng mô-đun WebAssembly, các quyền của chúng chỉ được đặt liên quan đến mô-đun này (ví dụ: thư viện để xử lý chuỗi sẽ không thể mở ổ cắm mạng hoặc tệp). Việc chuyển đổi mã C/C++ sang WebAssugging được thực hiện bằng cách sử dụng wasi-sdk.

Để thực thi trực tiếp, mô-đun WebAssembly được biên dịch thành mã máy bằng trình biên dịch Lucet và chạy trong một "quy trình nano" riêng biệt, tách biệt với phần còn lại của bộ nhớ ứng dụng. Trình biên dịch Lucet dựa trên cùng mã với công cụ JIT Xe cẩu, được sử dụng trong Firefox để thực thi WebAssugging.

Mô-đun được lắp ráp hoạt động trong một vùng bộ nhớ riêng biệt và không có quyền truy cập vào phần còn lại của không gian địa chỉ. Nếu một lỗ hổng trong thư viện bị khai thác, kẻ tấn công sẽ bị hạn chế và không thể truy cập vào các vùng bộ nhớ của tiến trình chính hoặc chuyển quyền điều khiển ra ngoài môi trường bị cô lập.

Mozilla bắt đầu triển khai công nghệ cách ly thư viện RLBox

Cấp độ cao được cung cấp cho các nhà phát triển API, cho phép bạn gọi các hàm thư viện ở chế độ cách ly. Trình xử lý WebAssembly hầu như không yêu cầu tài nguyên bổ sung và tương tác với chúng không chậm hơn nhiều so với việc gọi các hàm thông thường (các hàm thư viện được thực thi dưới dạng mã gốc và chi phí chung chỉ phát sinh khi sao chép và kiểm tra dữ liệu trong quá trình tương tác với bộ xử lý bị cô lập). môi trường). Các chức năng thư viện biệt lập không thể được gọi trực tiếp và phải được truy cập bằng cách sử dụng
lớp gọi_sandbox_function().

Ngược lại, nếu cần gọi các hàm bên ngoài từ thư viện, các hàm này phải được xác định rõ ràng bằng phương thức register_callback (theo mặc định, RLBox cung cấp quyền truy cập vào các hàm thư viện chuẩn). Để đảm bảo an toàn cho bộ nhớ, việc cách ly thực thi mã là chưa đủ và còn yêu cầu kiểm tra các luồng dữ liệu được trả về.

Các giá trị được tạo trong môi trường biệt lập được đánh dấu là không đáng tin cậy và bị hạn chế sử dụng vết bẩn và để “làm sạch” họ yêu cầu xác minh và sao chép vào bộ nhớ ứng dụng.
Nếu không dọn dẹp, việc cố gắng sử dụng dữ liệu bị nhiễm độc trong ngữ cảnh yêu cầu dữ liệu thông thường (và ngược lại) sẽ dẫn đến lỗi phát sinh tại thời điểm biên dịch. Các đối số hàm nhỏ, giá trị trả về và cấu trúc được chuyển qua việc sao chép giữa bộ nhớ tiến trình và bộ nhớ hộp cát. Đối với các tập dữ liệu lớn, bộ nhớ được phân bổ trong một môi trường biệt lập và con trỏ tham chiếu hộp cát trực tiếp được trả về quy trình chính.

Nguồn: opennet.ru

Thêm một lời nhận xét