Lỗ hổng từ xa trong việc triển khai giao thức TIPC trong nhân Linux

Một lỗ hổng nghiêm trọng (CVE-2021-43267) đã được xác định trong quá trình triển khai giao thức mạng TIPC (Giao tiếp giữa các quá trình trong suốt) được cung cấp trong nhân Linux. Giao thức này cho phép bạn thực thi mã từ xa với các đặc quyền của nhân bằng cách gửi một tập tin được thiết kế đặc biệt. gói mạng. Sự nguy hiểm của vấn đề được giảm thiểu do cuộc tấn công yêu cầu hỗ trợ TIPC rõ ràng trong hệ thống (tải và định cấu hình mô-đun hạt nhân tipc.ko), điều này không được thực hiện theo mặc định trong các bản phân phối Linux không chuyên biệt.

Giao thức TIPC đã được hỗ trợ kể từ kernel Linux 3.19, nhưng mã dẫn đến lỗ hổng đã được đưa vào kernel 5.10. Lỗ hổng đã được sửa trong kernel 5.15.0, 5.10.77 và 5.14.16. Sự cố xuất hiện và chưa được khắc phục trong Debian 11, Ubuntu 21.04/21.10, SUSE (trong nhánh SLE15-SP4 chưa được phát hành), RHEL (chưa nêu chi tiết liệu bản sửa lỗi dễ bị tổn thương đã được chuyển ngược hay chưa) và Fedora. Bản cập nhật kernel đã được phát hành cho Arch Linux. Các bản phân phối có kernel cũ hơn 5.10, chẳng hạn như Debian 10 và Ubuntu 20.04, không bị ảnh hưởng bởi sự cố này.

Giao thức TIPC ban đầu được phát triển bởi Ericsson, được thiết kế để tổ chức giao tiếp giữa các tiến trình trong một cụm và được kích hoạt chủ yếu trên các nút cụm. TIPC có thể hoạt động qua Ethernet hoặc UDP (cổng mạng 6118). Khi làm việc qua Ethernet, cuộc tấn công có thể được thực hiện từ mạng cục bộ và khi sử dụng UDP, từ mạng toàn cầu nếu cổng không bị tường lửa bao phủ. Cuộc tấn công cũng có thể được thực hiện bởi người dùng cục bộ không có đặc quyền của máy chủ. Để kích hoạt TIPC, bạn cần tải xuống mô-đun hạt nhân tipc.ko và định cấu hình liên kết với giao diện mạng bằng netlink hoặc tiện ích tipc.

Lỗ hổng này biểu hiện ở hàm tipc_crypto_key_rc và nguyên nhân là do thiếu xác minh chính xác sự tương ứng giữa dữ liệu được chỉ định trong tiêu đề và kích thước thực của dữ liệu khi phân tích các gói có loại MSG_CRYPTO, được sử dụng để lấy khóa mã hóa từ các nút khác. trong cụm nhằm mục đích giải mã các tin nhắn được gửi từ các nút này sau đó. Kích thước của dữ liệu được sao chép vào bộ nhớ được tính bằng chênh lệch giữa giá trị của các trường có kích thước thông báo và kích thước tiêu đề, nhưng không tính đến kích thước thực tế của tên thuật toán mã hóa và nội dung của khóa được truyền trong tin nhắn. Giả định rằng kích thước của tên thuật toán là cố định và một thuộc tính riêng có kích thước đó được truyền thêm cho khóa và kẻ tấn công có thể chỉ định một giá trị trong thuộc tính này khác với giá trị thực tế, điều này sẽ dẫn đến việc viết đuôi của tin nhắn nằm ngoài bộ đệm được phân bổ. struct tipc_aead_key { char alg_name[TIPC_AEAD_ALG_NAME]; khóa int không dấu; /* tính bằng byte */ char key[]; };

Lỗ hổng từ xa trong việc triển khai giao thức TIPC trong nhân Linux


Nguồn: opennet.ru

Thêm một lời nhận xét