RLBox, công nghệ cách ly thư viện mới được Mozilla sử dụng

Logo Firefox

Các nhà nghiên cứu của Đại học Stanford, các Đại học California ở san diego y la Trường Đại Học Texas ở Austin Họ đã phát triển một bộ công cụ mà họ đặt tên cho "RLBox",có thể được sử dụng như một mức cách nhiệt bổ sung để chặn các lỗ hổng trong các thư viện chức năng.

RLBox nhằm giải quyết vấn đề bảo mật của thư viện bên thứ ba Không đáng tin cậy không được kiểm soát bởi các nhà phát triển, nhưng các lỗ hổng bảo mật mà dự án chính có thể xâm phạm.

Mozilla có kế hoạch sử dụng RLBox trong các bản dựng Firefox 74 dành cho Linux và sự tổng hợp của macOS trong Firefox 75 để cô lập việc thực thi thư viện Graphite, chịu trách nhiệm đại diện cho các nguồn.

Đồng thời, 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 ý.

Giới thiệu về RLBox

Cơ chế hoạt động RLBox tổng hợp để biên dịch mã C / C ++ từ thư viện biệt lập thành mã WebAssembly trung gian cấp thấp, sau đó được phát hành dưới dạng mô-đun WebAssembly, có quyền được đặt để chỉ liên kết với mô-đun này (ví dụ: thư viện để xử lý chuỗi không thể mở ổ cắm hoặc tệp mạng) Chuyển đổi mã C / C ++ một WebAssembly được thực hiện bằng wasi-sdk.

Để thực hiện 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à nó chạy trong một "quy trình nano" 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 mã giống như công cụ Cranelift JIT được sử dụng trong Firefox để chạy WebAssembly.

Mô-đun đã lắp ráp hoạt động trong một vùng bộ nhớ riêng biệt và nó không có quyền truy cập vào phần còn lại của không gian địa chỉ. Trong trường hợp khai thác lỗ hổng trong thư viện, kẻ tấn công sẽ bị giới hạn 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 bên ngoài hộp cát.

API cấp cao được cung cấp cho các nhà phát triển, cho phép bạn gọi các hàm thư viện ở chế độ cách ly.

Các Bộ điều khiển 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à quá tải chỉ xảy ra khi sao chép và kiểm tra dữ liệu trong quá trình tương tác với hộp cát) .

Các chức năng của một thư viện biệt lập không thể được gọi trực tiếp và để truy cập chúng, bạn phải sử dụng lớp invoke_sandbox_ Chức năng ().

Đổi lại, nếu họ 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 bộ nhớ hoạt động an toàn, cô lập việc thực thi mã là không đủ và cũng bạn cần cung cấp xác minh các luồng dữ liệu trả về.

Các giá trị được tạo trong một môi trường cô lập được đánh dấu là không đáng tin cậy, bị giới hạn bởi các thẻ bị ô nhiễm và yêu cầu xác minh và sao chép vào bộ nhớ ứng dụng để "dọn dẹp".

Nếu không làm sạch, nỗ lực sử dụng dữ liệu ô nhiễm trong bối cảnh yêu cầu dữ liệu thường xuyên (và ngược lại) dẫn đến việc phát sinh lỗi ở giai đoạn biên dịch.

Các đối số hàm nhỏ, giá trị trả về và cấu trúc được truyền bằng cách 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 cấp phát trong một môi trường cô lập và một con trỏ "tham chiếu hộp cát" trực tiếp được trả về quy trình chính.

Các phát triển RLBox được phân phối theo giấy phép MIT. RLBox hiện hỗ trợ Linux và macOS và dự kiến ​​sẽ tương thích với Windows sau này.

Nếu bạn muốn biết thêm về công nghệ mới này mà Mozilla dự định triển khai trên Firefox, bạn có thể tham khảo sự phát triển của nó cũng như thử nghiệm API Trong liên kết sau đây.


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.