Nhân bị nhiễm độc trong Linux là gì?


99

Trong một số điều kiện nhất định, nhân Linux có thể bị hỏng . Ví dụ, tải trình điều khiển video độc quyền vào kernel làm mờ kernel. Tình trạng này có thể hiển thị trong nhật ký hệ thống, thông báo lỗi kernel (rất tiếc và hoảng loạn) và thông qua các công cụ như lsmod, và duy trì cho đến khi hệ thống được khởi động lại.

Điều đó có nghĩa là gì? Nó có ảnh hưởng đến khả năng sử dụng hệ thống của tôi không và nó có thể ảnh hưởng đến các tùy chọn hỗ trợ của tôi như thế nào?



@Gilles, tôi nghĩ rằng câu hỏi bạn liên kết đến nên được hợp nhất vào câu hỏi này. Ngoài ra, không rõ ràng rằng một câu hỏi là một bản sao của câu hỏi khác.
bwDraco

1
Tôi hy vọng biến điều này thành phiên bản chính tắc của câu hỏi; xem chỉnh sửa gần đây nhất cho câu hỏi.
bwDraco

9
@MichaelMrozek: 1) Tôi không thấy vấn đề đang tồn tại, vì nó là không rõ ràng mà người dùng được hỏi "gì 'nhiễm' có nghĩa là", và 2) những câu hỏi như worded là khá cụ thể cho một lệnh duy nhất, lsmod. Tôi đã viết câu hỏi và câu trả lời này để làm cho nó chung chung hơn để ai đó hỏi "ý nghĩa của nó" có nghĩa là gì "có thể tìm thấy nó dễ dàng.
bwDraco

1
Họ có thể đã sử dụng một từ trung tính hơn một chút so với "nhuốm màu".
Roger Dahl

Câu trả lời:


125

Khi kernel bị nhiễm độc, điều đó có nghĩa là nó ở trạng thái không được cộng đồng hỗ trợ . Hầu hết các nhà phát triển kernel sẽ bỏ qua các báo cáo lỗi liên quan đến hạt nhân bị nhiễm độc và các thành viên cộng đồng có thể yêu cầu bạn sửa điều kiện làm mờ trước khi họ có thể tiến hành chẩn đoán các vấn đề liên quan đến kernel. Ngoài ra, một số chức năng gỡ lỗi và các lệnh gọi API có thể bị vô hiệu hóa khi kernel bị nhiễm độc.

Trong hầu hết các trường hợp liên quan đến trình điều khiển độc quyền, bạn có thể bỏ qua tình trạng mờ nhạt một cách an toàn , nhưng một số tình huống khiến kernel bị nhiễm độc có thể là dấu hiệu của sự cố hệ thống nghiêm trọng.

Tính năng này nhằm xác định các điều kiện có thể gây khó khăn cho việc khắc phục sự cố hạt nhân. Ví dụ, việc tải một mô-đun độc quyền có thể làm cho đầu ra gỡ lỗi kernel không đáng tin cậy vì các nhà phát triển kernel không có quyền truy cập vào mã nguồn của mô-đun và do đó không thể xác định mô-đun có thể đã làm gì với kernel. Tương tự, nếu hạt nhân trước đó đã gặp phải tình trạng lỗi hoặc nếu xảy ra lỗi phần cứng nghiêm trọng, thông tin gỡ lỗi do hạt nhân tạo ra có thể không đáng tin cậy.

Hạt nhân có thể bị nhiễm độc vì bất kỳ lý do nào , bao gồm (nhưng không giới hạn ở) những điều sau đây:

  • Việc sử dụng mô-đun hạt nhân độc quyền (hoặc không tương thích GPL) Đây là nguyên nhân phổ biến nhất của hạt nhân bị nhiễm độc và thường là kết quả của việc tải trình điều khiển video NVIDIA hoặc AMD độc quyền
  • Việc sử dụng trình điều khiển dàn , là một phần của mã nguồn kernel nhưng chưa được kiểm tra đầy đủ
  • Việc sử dụng các mô-đun ngoài cây không được bao gồm trong mã nguồn nhân Linux
  • Buộc tải hoặc dỡ bỏ mô-đun hạt nhân (chẳng hạn như chèn một mô-đun không được xây dựng cho phiên bản hiện tại của hạt nhân)
  • Việc sử dụng hạt nhân SMP (đa bộ xử lý) trên một số CPU không xử lý không được hỗ trợ nhất định, chủ yếu là bộ xử lý AMD Athlon cũ
  • Trọng của ACPI DSDT, đôi khi cần thiết để sửa chữa cho lỗi điện quản lý (xem ở đây để biết chi tiết)
  • Một số điều kiện lỗi nghiêm trọng, chẳng hạn như ngoại lệ kiểm tra máy và lỗi nhân
  • Một số lỗi nghiêm trọng trong phần sụn hệ thống (BIOS, UEFI) mà kernel phải làm việc xung quanh

Mỗi điều kiện này được biểu thị bằng một cờ cụ thể trong kernel. Một số nhà cung cấp Linux, chẳng hạn như SUSE, thêm các cờ mờ bổ sung để chỉ ra các điều kiện như tải mô-đun không được nhà cung cấp hỗ trợ.

Thêm thông tin có sẵn trong tài liệu kernel . Các cờ mờ được liệt kê ở đó (với _ một chữ in hoa cho 'trống')

  • G | P : G nếu tất cả các mô-đun được tải có GPL hoặc giấy phép tương thích, nếu không, mô-đun độc quyền đã được tải. Các mô-đun không có MODULE_LICENSE hoặc với MODULE_LICENSE không được nhận dạng bởi insmod vì tương thích GPL được coi là độc quyền.
  • F | _ : nếu bất kỳ mô-đun nào được tải bằng "insmod -f" nếu không thì tất cả các mô-đun được tải bình thường.
  • S | _ : nếu xảy ra lỗi trên hạt nhân SMP chạy trên phần cứng chưa được chứng nhận là an toàn để chạy bộ xử lý đa năng. Hiện tại điều này chỉ xảy ra trên các Athon khác nhau không có khả năng SMP.
  • R | _ : nếu một mô-đun bị buộc tải rmmod -f, nếu không, nếu tất cả các mô-đun được tải bình thường.
  • M | _ : nếu bất kỳ bộ xử lý nào đã báo cáo Ngoại lệ kiểm tra máy , nếu không sẽ không xảy ra ngoại lệ kiểm tra máy.
  • B | _ : nếu chức năng phát hành trang đã tìm thấy một tham chiếu trang xấu hoặc một số cờ trang không mong muốn.
  • U | _ : nếu người dùng hoặc ứng dụng người dùng yêu cầu cụ thể rằng cờ Tained được đặt.
  • D | _ : nếu kernel đã chết gần đây, tức là có OOPS hoặc BUG.
  • A | _ : nếu bảng ACPI bị ghi đè.
  • W | _ : nếu cảnh báo đã được đưa ra trước đó bởi kernel (Mặc dù một số cảnh báo có thể đặt cờ mờ cụ thể hơn.)
  • C | _ : nếu trình điều khiển dàn đã được tải.
  • I | _ : nếu kernel đang xử lý một lỗi nghiêm trọng trong phần sụn nền tảng (BIOS hoặc tương tự).
  • O | _ : nếu mô-đun được xây dựng bên ngoài ("ngoài cây") đã được tải.
  • E | _ : nếu một mô-đun không dấu đã được tải trong một chữ ký mô-đun hỗ trợ kernel.
  • L | _ : nếu trước đó đã xảy ra khóa mềm trên hệ thống.
  • K | _ : nếu kernel đã được vá trực tiếp.

Câu trả lời này thiếu rất nhiều thông tin từ bản sao câu hỏi này bị thay thế.

2
Tôi sẽ thêm ít nhất một khả năng quan trọng của kịch bản "mô-đun chưa ký" - một rootkit kernel đã được tải vào kernel hoặc khai thác kernel vừa được thực thi.
kravietz
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.