5.1.2 bảo vệ các đối số trong bộ nhớ người sử dụngMột giải pháp cho vấn đề ngăn chặn chủng tộc đối số sao chép đối số vào một phần chỉ đọc của memoryin không gian địa chỉ của trình không đáng tin cậy. Thiết lập phần này có thể được thực hiện bởi dành riêng cho hạt nhân mã hoặc bằng cách buộc trình mmap và mprotect một vùng bộ nhớ. Trước khi cuộc gọi hệ thống đối số được kiểm tra, họ có thể được sao chép vào khu vực này bởi Janus. Cách tiếp cận này được thực hiện bởi các phiên bản trước của Janus mà sẽ tạo ra một vùng bộ nhớ chỉ đọc bằng cách gọi điện thoại mmap trong bối cảnh của quá trình không đáng tin cậy khi quá trình đó "đính kèm", sau đó theo dõi các vị trí này không gian đầu trong không gian địa chỉ không đáng tin cậy của các ứng dụng. Sự đúng đắn của cách tiếp cận này dựa trên Janus khôn ngoan canh gác mprotect, giao diện mmap và mremap để đảm bảo rằng phần này chỉ đọc của bộ nhớ không được giả mạo với.Cách tiếp cận này là hấp dẫn, như ít làm việc phải được thực hiện trong hạt nhân để thực hiện nó. Subterfugue [1] Hệ thống actuallydoes này bằng cách sử dụng chỉ ptrace, mặc dù không hiệu quả của việc sử dụng ptrace để sao chép các đối số làm này prohibitivelyexpensive, givena moreefficient cơ chế này có vẻ như một cách tiếp cận hấp dẫn. Mối quan tâm về đảm bảo quyền truy cập vào không gian đầu người dùng bị hạn chế đầy đủ và hiệu quả dẫn chúng ta từ bỏ cách tiếp cận này ở Janus.5.1.3 kiểm tra đối số không nằm trong bộ nhớ chia sẻChủng tộc đối số chỉ có thể xảy ra nếu đối số nằm trong bộ nhớ dùng chung không được bảo vệ. Trên phương pháp tiếp cận để ngăn chặn điều này hạn chế giao diện cho phép việc tạo ra các bộ nhớ dùng chung, bản sao để tạo nhiều chủ đề, các ứng dụng nhất định của mmap và tiện nghi SYSV cho việc tạo các khu vực bộ nhớ dùng chung.Đối với nhiều ứng dụng, đây là một giải pháp khả thi. Tương đối ít Linux ứng dụng sử dụng đa luồng. Đó là sự thật của hệ điều hành dựa trên BSD, mà cho đến gần đây [31] đã không cung cấp hạt nhân hỗ trợ cho đa luồng. Sử dụng các tiện nghi khác của bộ nhớ dùng chung cũng là không terribly phổ biến rộng rãi.Chúng tôi có thể kiểm tra rằng đối số không nằm trong bộ nhớ dùng chung cấp độ người dùng bằng cách kiểm tra các cấp phép trên vùng bộ nhớ ảo đối số hiện đang cư trú. Điều này có thể được thực hiện thông qua hệ thống tập tin proc dưới Linux. Đối với cách tiếp cận này là chính xác chúng tôi phải đảm bảo không chỉ rằng khu vực bộ nhớ ảo mà một cuộc tranh cãi nằm trong không được chia sẻ, nhưng cũng có quá trình không đáng tin cậy có bản sao riêng của mình. Cho riêng mmaped bộ nhớ khu vực này có thể được áp dụng bằng cách đọc của chúng tôi trong quá trình của bộ nhớ và ghi chúng trở lại vào cùng một vị trí để đảm bảo rằng trình có một bản sao riêng. Điều này là cần thiết như một tư nhân mmaped tập tin có thể phản ánh những thay đổi trong các tập tin cơ bản, một quá trình không được bảo đảm để có được bản sao của riêng mình của một khu vực của một tập tin mmaped cho đến khi nó viết để khu vực đó.Trong khi cách tiếp cận này thi hành một số giới hạn về các quát của một công cụ, nó đòi hỏi không có sửa đổi hạt nhân và các nỗ lực tối thiểu trên một phần của công việc.
đang được dịch, vui lòng đợi..