Chromium Chronicle #5: Lập trình bên ngoài Hộp cát

Tập 5: của Ade ở Mountain View, CA (tháng 8 năm 2019)
Các tập trước

Chrome được chia thành các quá trình. Một vài trong số đó được đặt trong hộp cát, nghĩa là các ứng dụng đó sẽ giảm quyền truy cập vào hệ thống và tài khoản của người dùng. Trong quy trình hộp cát, các lỗi cho phép mã độc chạy sẽ ít nghiêm trọng hơn nhiều.

Quy trình của trình duyệt không có hộp cát nên một lỗi có thể cấp cho mã độc hại toàn quyền truy cập vào toàn bộ thiết bị. Bạn nên làm gì khác đi? Và tình huống như thế nào với các quy trình khác?

Biểu đồ hộp cát

Mọi mã đều có lỗi. Trong quá trình xử lý của trình duyệt, những lỗi đó tạo điều kiện cho mã độc cài đặt một chương trình, lấy cắp dữ liệu người dùng, điều chỉnh chế độ cài đặt của máy tính, truy cập vào nội dung của tất cả các thẻ trình duyệt, dữ liệu đăng nhập, v.v.

Trong các quy trình khác, quyền truy cập vào hệ điều hành bị giới hạn thông qua các quy định hạn chế riêng theo nền tảng. Để biết thêm thông tin, hãy xem hướng dẫn triển khai hộp cát của Chrome.

Bạn hãy nhớ tránh những lỗi phổ biến sau đây:

quy tắc hai

  • Không được phân tích cú pháp hoặc diễn giải dữ liệu không đáng tin cậy bằng C++ trong quá trình duyệt web.
  • Không tin tưởng nguồn gốc mà trình kết xuất tuyên bố đại diện. Bạn có thể sử dụng RenderFrameHost của trình duyệt để lấy nguồn gốc hiện tại một cách an toàn.


Nên

Thay vào đó, hãy sử dụng các phương pháp hay nhất sau đây:

  • Hãy hết sức hoang tưởng nếu mã của bạn đang nằm trong quá trình của trình duyệt.
  • Xác thực tất cả IPC từ các quy trình khác. Giả định rằng tất cả các quy trình khác đã bị xâm phạm và đánh lừa bạn.
  • Thực hiện quá trình xử lý trong trình kết xuất, quy trình tiện ích hay một số quy trình hộp cát khác. Tốt nhất là bạn cũng nên sử dụng một ngôn ngữ an toàn đối với bộ nhớ, chẳng hạn như JavaScript (giải quyết trên 50% lỗi bảo mật).

Trong nhiều năm, chúng tôi đã chạy các ngăn xếp mạng (ví dụ: HTTP, DNS, QUIC) trong quá trình xử lý trình duyệt, điều này dẫn đến một số lỗ hổng bảo mật nghiêm trọng. Trên một số nền tảng, việc nối mạng giờ đây có quy trình riêng, với hộp cát sẽ xuất hiện.

Nguồn thông tin khác

  • Quy tắc 2 của Chromium: chỉ có tối đa 2 dữ liệu không an toàn, mã không an toàn và quy trình không an toàn.
  • Xác thực dữ liệu IPC: hướng dẫn về cách đảm bảo rằng IPC trong quy trình kết xuất không chứa đầy sợi dữ liệu và thông tin trình bày sai.