Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.
Trang này được dịch bởi Cloud Translation API.
Switch to English

ShadowCallStack

ShadowCallStack (SCS) là một LLVM thiết bị đo đạc chế độ bảo vệ chống ghi đè địa chỉ trả lại (như stack đệm tràn) bằng cách tiết kiệm địa chỉ trả lại một chức năng để một ShadowCallStack phân bổ riêng trong hàm prolog chức năng nonleaf và tải các địa chỉ trả lại từ ShadowCallStack trong hàm epilog. Địa chỉ trả về cũng được lưu trữ trên ngăn xếp thông thường để tương thích với trình giải nén, nhưng nếu không thì không được sử dụng. Điều này đảm bảo rằng các cuộc tấn công sửa đổi địa chỉ trả về trên ngăn xếp thông thường không ảnh hưởng đến luồng điều khiển chương trình.

Trên aarch64, thiết bị đo đạc sử dụng thanh ghi x18 để tham chiếu đến x18 , có nghĩa là các tham chiếu đến ShadowCallStack không cần phải được lưu trữ trong bộ nhớ. Điều này làm cho nó có thể thực hiện một thời gian chạy để tránh làm lộ địa chỉ của ShadowCallStack cho những kẻ tấn công có thể đọc bộ nhớ tùy ý.

Thực hiện

Android hỗ trợ ShadowCallStack cho cả nhân và không gian người dùng.

Bật SCS cho hạt nhân

Để bật ShadowCallStack cho hạt nhân, hãy thêm dòng sau vào tệp cấu hình hạt nhân:

CONFIG_SHADOW_CALL_STACK=y

Bật SCS trong không gian người dùng

Để bật ShadowCallStack trong các thành phần không gian người dùng, hãy thêm các dòng sau vào tệp kế hoạch chi tiết của thành phần:

sanitize: {
  scs: true
}

SCS giả định rằng x18 ghi x18 được dành riêng để lưu trữ địa chỉ của ShadowCallStack và không được sử dụng cho bất kỳ mục đích nào khác. Trong khi tất cả các thư viện hệ thống được biên dịch để dành riêng cho x18 ghi x18 , điều này có khả năng xảy ra vấn đề nếu SCS được bật cho các thành phần không gian người dùng tương tác với mã kế thừa trong quá trình (ví dụ: các thư viện có thể được tải bởi các ứng dụng của bên thứ ba), điều này có thể làm tắc nghẽn x18 ghi x18 . Do đó, chúng tôi chỉ khuyên bạn nên bật SCS trong các thành phần độc lập sẽ không được tải vào các tệp nhị phân kế thừa.

Thẩm định

Không có bài kiểm tra CTS dành riêng cho SCS. Thay vào đó, hãy đảm bảo rằng các bài kiểm tra CTS vượt qua khi có và không bật SCS để xác minh rằng SCS không ảnh hưởng đến thiết bị.