Một số câu hỏi cơ bản về bảo mật của nhân Linux [đã đóng]


8

Tôi không biết nhiều về nhân Linux và tôi có một số câu hỏi.

  1. Mục đích chính của việc tách bộ nhớ kernel khỏi bộ nhớ không gian người dùng là gì? Để chắc chắn rằng một ứng dụng người dùng không thể làm bất cứ điều gì xấu cho kernel?

  2. Có bao nhiêu cách để một ứng dụng cấp người dùng chuyển điều khiển sang kernel? Những gì tôi có thể đưa ra bao gồm (1) gọi một cuộc gọi hệ thống, (2) ánh xạ bộ nhớ vào kernel (nhưng tôi nghĩ mmap () cũng là một cuộc gọi hệ thống) và (3) đang tải một mô-đun hạt nhân (nhưng tôi đoán lsmod cũng gọi một số cuộc gọi hệ thống). Tôi có đúng không? Có cách nào khác mà tôi bỏ lỡ không?

  3. Có bao nhiêu cách để tấn công kernel? Tôi có thể có một số chi tiết ngắn gọn về họ?

  4. Nếu tôi có được quyền root, điều đó có nghĩa là tôi hoàn toàn kiểm soát kernel? Cụ thể, tôi có thể làm bất cứ điều gì tôi muốn với kernel và phần cứng? Hoặc tôi vẫn có quyền lực hạn chế trên kernel?

Tôi thực sự đánh giá cao nếu ai đó có thể giúp tôi tìm ra câu trả lời cho những câu hỏi này.


1
Có một số câu hỏi hay ở đây nhưng bạn có thể chia chúng thành các câu hỏi cụ thể hơn với một chủ đề chính cho mỗi câu hỏi không?
Caleb

Câu trả lời:


5

Tôi sẽ cố gắng trả lời ngắn gọn nhất có thể. Các câu hỏi bạn đang hỏi thường được giải quyết trong các khóa học hệ điều hành giới thiệu tại các trường đại học nhưng tôi sẽ cho rằng bạn chưa tham gia khóa học như vậy.

  1. Cách ly bộ nhớ cho các quá trình không gian người dùng là rất mong muốn - không chỉ để bảo vệ kernel khỏi các chương trình không gian người dùng độc hại mà còn bảo vệ các chương trình không gian người dùng với nhau. Điều này thường được gọi là Bộ nhớ ảo . Nó cũng làm cho việc thực hiện phân trang dễ dàng hơn, điều này cũng được mong muốn vì các lý do khác (phân mảnh đơn giản hơn, trình liên kết / bộ nạp đơn giản hơn, v.v.).

  2. Ngắt (không phải tất cả đều nằm trong sự kiểm soát của ứng dụng cấp người dùng). Việc đưa lên bộ xử lý cũng mất "quyền kiểm soát" từ quá trình (ví dụ, waitvv cũng là các cuộc gọi hệ thống). Hạt nhân có thể tự quyết định mở khóa một ứng dụng.

  3. Đó là một câu hỏi rất rộng. Kernel với các cuộc gọi hệ thống được thực hiện kém là dễ bị tổn thương. Khả năng ghi vào bộ nhớ vật lý sẽ là một cách khác. Có những lỗ hổng khác có thể phát sinh từ các hướng dẫn được triển khai kém (ví dụ lỗ hổng sysret trong bộ xử lý Intel).

  4. Quyền root không giống như đặc quyền kernel. Một ứng dụng chạy như người dùng root vẫn đang sử dụng bộ nhớ ảo, vẫn phải thực hiện các cuộc gọi hệ thống, vẫn phải tuân theo các quy tắc khác mà bất kỳ ứng dụng cấp người dùng nào cũng phải tuân theo.

Nếu bạn muốn tôi cung cấp thêm chi tiết về một số câu trả lời, hãy cho tôi biết.

Nếu ai đó có thể cải thiện một số câu trả lời, xin vui lòng chỉ ra nó.


Cảm ơn bạn đã trả lời của bạn. Bạn đã nói "Ngắt (không phải tất cả trong số đó là quyền kiểm soát ứng dụng cấp người dùng).", Có nghĩa là chỉ các ngắt phần mềm mới kiểm soát cấp độ người dùng, trong khi ngắt phần cứng thì không. Nó có đúng không?
hebothu

Tôi tin rằng không gian người dùng phải bằng cách nào đó yêu cầu không gian hạt nhân cho phép nó xử lý một số ngắt. Vì vậy, hạt nhân về cơ bản vẫn trong tầm kiểm soát của các ngắt. Cụ thể, kernel vẫn đang xử lý các ngắt và chuyển chúng vào không gian người dùng nếu một ứng dụng không gian người dùng quan tâm để nhận nó. Tra cứu Linux UIO.
mtahmed
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.