Lỗ hổng CVE nghiêm trọng: Nguy cơ chiếm quyền điều khiển trên Linux Kernel

Lỗ hổng CVE nghiêm trọng: Nguy cơ chiếm quyền điều khiển trên Linux Kernel
CLOUD SERVER
Vững hạ tầng • Chắc thành công
☁️
⚡ Hiệu năng cao
🛡️ Bảo mật
📈 Mở rộng dễ dàng
🕒 Hỗ trợ 24/7
TÌM HIỂU NGAY

Lỗ hổng Use-after-Free trong Linux Kernel Bridge Subsystem

Một bản proof-of-concept (PoC) công khai đã được phát hành cho một lỗ hổng use-after-free ảnh hưởng đến subsystem bridge của Linux kernel. Lỗ hổng này đặc biệt liên quan đến việc triển khai Spanning Tree Protocol (STP) trong tệp net/bridge.

Vấn đề này có thể khiến các bộ đếm thời gian STP vẫn hoạt động ngay cả sau khi thiết bị mạng bridge mà chúng thuộc về đã bị xóa. Điều này tạo ra một tình trạng mất an toàn bộ nhớ nguy hiểm trong bộ nhớ cache kmalloc-cg-8k.

Nguyên nhân và Cách thức hoạt động của Lỗ hổng

Lỗ hổng use-after-free xảy ra khi STP kernel được kích hoạt trên một bridge đang ở trạng thái hành chính tắt (administratively down) và một cổng bridge chuyển sang trạng thái LEARNING. Trong điều kiện này, kernel có thể kích hoạt các bộ đếm thời gian STP định kỳ mà không kiểm tra cờ IFF_UP của giao diện mạng.

Các bộ đếm thời gian này hỗ trợ máy trạng thái STP, một cơ chế ngăn chặn vòng lặp lớp 2 bằng cách quản lý các trạng thái cổng bridge và các thay đổi về cấu trúc liên kết mạng. Linux lưu trữ các bộ đếm thời gian như hello_timer, tcn_timer, topology_change_timer và các bộ đếm thời gian dành riêng cho cổng trong cấu trúc struct net_bridge. Cấu trúc này được lưu trữ trong vùng dữ liệu riêng của net_device của bridge.

Do đó, các bộ đếm thời gian này phải được gỡ bỏ trước khi thiết bị mạng cơ sở bị giải phóng. Nếu chúng vẫn còn trong hàng đợi sau khi bộ nhớ đã được giải phóng, kernel có thể cố gắng thực thi một hàm gọi lại (callback) của bộ đếm thời gian thông qua một tham chiếu bộ nhớ lỗi thời.

Sự khác biệt trong hành vi dọn dẹp

Theo SSD Disclosure, lỗi này bắt nguồn từ sự khác biệt trong hành vi dọn dẹp giữa việc tắt giao diện mạng thông thường và việc xóa trực tiếp bridge. Trong quá trình chuyển đổi UP-to-DOWN tiêu chuẩn, đường dẫn ndo_stop sẽ gọi đến br_stp_disable_bridge(). Hàm này sẽ đồng bộ hủy bỏ các bộ đếm thời gian STP thông qua del_timer_sync(), ngăn chặn các hàm gọi lại đang chờ xử lý truy cập vào dữ liệu bridge đã được giải phóng.

Tuy nhiên, khi xóa một bridge thông qua đường dẫn delink, hàm br_dev_delete() sẽ được gọi và quy trình này không kích hoạt cùng một quy trình dọn dẹp STP. Nếu giao diện mạng đã ở trạng thái tắt, quy trình hủy đăng ký thiết bị cũng có thể bỏ qua ndo_stop.

Điều này dẫn đến việc các bộ đếm thời gian đã được kích hoạt vẫn gắn liền với một bộ đếm thời gian trên mỗi CPU (per-CPU timer base) ngay cả khi net_device liên quan sau đó bị giải phóng. Khi quy trình xử lý bộ đếm thời gian của kernel sau đó xử lý bộ đếm thời gian lơ lửng trong ngữ cảnh softirq, nó có thể truy cập vào bộ nhớ đã được giải phóng.

Tác động tiềm ẩn và Khuyến nghị

Các nhà nghiên cứu lưu ý rằng việc phân bổ lại có kiểm soát đối tượng bộ nhớ đã giải phóng có thể biến lỗi này thành một phương thức chiếm quyền điều khiển luồng thực thi (control-flow hijacking), nâng cao tác động vượt ra ngoài kịch bản sập hệ thống hoặc từ chối dịch vụ (Denial-of-Service). Bản PoC công khai trình diễn vòng đời bị ảnh hưởng và nhấn mạnh tầm quan trọng của việc khắc phục kịp thời trong các môi trường cho phép thay đổi cấu hình bridge.

Một bản vá cho Linux kernel đã được giới thiệu trong commit 2a00517db8de4be7df3d483b215c5544fb30a191. Các hệ thống chạy các phiên bản kernel trước commit này được coi là bị ảnh hưởng và cần được cập nhật thông qua các gói kernel được hỗ trợ bởi bản phân phối của họ. Cho đến khi các bản vá được triển khai, quản trị viên nên hạn chế khả năng người dùng không đáng tin cậy tạo, sửa đổi hoặc xóa giao diện bridge, đồng thời xem xét các tác vụ sử dụng STP kernel.

Việc quản lý các bản vá bảo mật kịp thời là một phần thiết yếu của chiến lược an ninh mạng. Cập nhật bản vá thường xuyên giúp giảm thiểu rủi ro bảo mật từ các lỗ hổng đã biết, bao gồm cả những lỗ hổng có thể dẫn đến chiếm quyền điều khiển.