Rust đã là một ứng dụng yêu thích để phát triển Android

Google ra mắt gần đây sự thiêu rụi ngôn ngữ lập trình Rỉ sét giữa các ngôn ngữ được phép để phát triển Android.

Kể từ khi trình biên dịch Rust đã được đưa vào cây nguồn Android vào năm 2019, nhưng hỗ trợ ngôn ngữ vẫn còn ở dạng thử nghiệm. Một số thành phần Rust đầu tiên được chuyển đến Android là những triển khai mới của cơ chế giao tiếp liên quá trình Binder và ngăn xếp Bluetooth.

Triển khai Rust được thực hiện như một phần của dự án tăng cường an ninh, thúc đẩy các kỹ thuật mã hóa an toàn và nâng cao hiệu quả xác định các vấn đề khi làm việc với bộ nhớ trong Android. Theo quan sát, khoảng 70% tất cả các lỗ hổng nguy hiểm được xác định trong Android là do lỗi khi làm việc với bộ nhớ.

Việc sử dụng ngôn ngữ Rust, tập trung vào quản lý bộ nhớ an toàn và cung cấp tính năng quản lý bộ nhớ tự động, nó sẽ giảm nguy cơ bị tổn thương do lỗi trong quá trình xử lý bộ nhớ, chẳng hạn như truy cập vào một vùng bộ nhớ sau khi nó đã được giải phóng và làm tràn giới hạn bộ đệm.

Việc xử lý bộ nhớ an toàn được đảm bảo trong Rust lúc xây dựng bằng cách kiểm tra các tham chiếu, theo dõi quyền sở hữu đối tượng và tuổi thọ đối tượng (phạm vi), cũng như đánh giá tính đúng đắn của quyền truy cập vào bộ nhớ trong thời gian chạy.

Rust cũng cung cấp các phương tiện để bảo vệ chống tràn số nguyên, yêu cầu khởi tạo bắt buộc các giá trị biến trước khi sử dụng, xử lý tốt hơn các lỗi trong thư viện chuẩn, áp dụng khái niệm tham chiếu và biến bất biến theo mặc định, đồng thời cung cấp khả năng viết tĩnh mạnh mẽ để giảm thiểu lỗi logic.

Trên Android, quản lý bộ nhớ an toàn được cung cấp bằng ngôn ngữ Kotlin và Java đã được hỗ trợ, nhưng không thích hợp để phát triển các thành phần hệ thống do chi phí cao.

Rust cho phép đạt được hiệu suất gần với ngôn ngữ C và C ++, cho phép nó được sử dụng để phát triển các phần cấp thấp của nền tảng và các thành phần để giao tiếp với phần cứng.

Để đảm bảo tính bảo mật của mã C và C ++, Android sử dụng tính năng cách ly hộp cát, phân tích tĩnh và kiểm tra fuzzing. Khả năng cô lập của hộp cát bị hạn chế và đã đạt đến giới hạn khả năng của chúng (phân mảnh hơn nữa trong các quy trình là không thực tế theo quan điểm tiêu thụ tài nguyên).

Trong số những hạn chế của việc sử dụng hộp cát, họ đề cập đến chi phí cao và tiêu thụ bộ nhớ cao hơn gây ra bởi nhu cầu tạo các quy trình mới, cũng như độ trễ bổ sung liên quan đến việc sử dụng IPC.

Đồng thời, hộp cát không loại bỏ các lỗ hổng trong mã, mà chỉ làm giảm rủi ro và làm phức tạp cuộc tấn công, vì việc khai thác yêu cầu xác định không phải một mà là một số lỗ hổng.

Phương pháp kiểm tra mã bị hạn chế bởi vì, để phát hiện lỗi, bạn cần tạo điều kiện cho biểu hiện của vấn đề. Không thể bao gồm tất cả các tùy chọn có thể xảy ra, vì vậy nhiều lỗi sẽ không được chú ý.

Đối với các quy trình hệ thống trên Android, Google tuân thủ 'quy tắc của hai', theo mà bất kỳ mã nào được thêm vào không được đáp ứng nhiều hơn hai trong ba điều kiện- Làm việc với dữ liệu đầu vào chưa được xác minh, sử dụng ngôn ngữ lập trình không an toàn (C / C ++) và chạy mà không bị cô lập hộp cát cứng (với các đặc quyền nâng cao).

Theo quy tắc này, mã để xử lý dữ liệu bên ngoài phải được giảm xuống mức đặc quyền ít nhất (bị cô lập) hoặc được viết bằng ngôn ngữ lập trình an toàn.

Google không nhằm mục đích viết lại mã C / C ++ hiện có trong Rust, nhưng anh ấy dự định sử dụng ngôn ngữ này để phát triển mã mới.

Bạn nên sử dụng Rust cho mã mới, vì theo thống kê hầu hết các lỗi xuất hiện trong mã mới hoặc được sửa đổi gần đây. Đặc biệt, khoảng 50% lỗi bộ nhớ được phát hiện trong Android được phát hiện trong mã được viết cách đây chưa đầy một năm.

Fuente: https://security.googleblog.com


Để 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: AB Internet Networks 2008 SL
  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.

  1.   miguel rodriguez dijo

    Trớ trêu thay, khi đối thủ cạnh tranh lớn nhất của bạn chấp nhận thứ mà bạn đã giúp phát triển cho mục đích của riêng mình… Rust đang gia tăng.