Khi PoC được công bố, ksmbd trở thành điểm yếu mới trên hệ thống Linux

WhiteHat Team

Administrators
Thành viên BQT
09/04/2020
115
1.171 bài viết
Khi PoC được công bố, ksmbd trở thành điểm yếu mới trên hệ thống Linux
Những ngày gần đây, cộng đồng an ninh mạng xôn xao trước hai nghiên cứu độc lập công bố PoC hoàn chỉnh cho CVE-2025-37947, một lỗ hổng ghi ngoài vùng nhớ trong module ksmbd của nhân Linux. Điều khiến nhiều người lo ngại là cả hai phân tích đều mô tả được chuỗi khai thác dẫn tới leo thang đặc quyền cục bộ lên root và điều kiện kích hoạt tương đối phổ biến: chỉ cần một tài khoản SMB đã xác thực và một chia sẻ cho phép ghi với streams_xattr bật là có thể mở đường cho chuỗi khai thác leo thang lên quyền root.

Linux.png

Vấn đề bắt nguồn từ cách ksmbd tính toán kích thước khi xử lý ghi vào stream dùng extended attributes. Khi vị trí ghi (pos) và số byte yêu cầu vượt ngưỡng XATTR_SIZE_MAX (65.536 byte), mã vẫn cấp bộ đệm theo kích thước đã cắt nhưng không giảm giá trị count truyền vào lệnh sao chép, vì vậy memcpy tiếp tục sao chép nhiều byte hơn bộ đệm chứa được. Trong PoC, hàm thiết lập pos = 0x10000 và count = 8 rồi gọi memcpy lên buffer cấp phát bằng kvmalloc(), dẫn tới tám byte bị ghi tràn ra ngoài vùng nhớ đã khởi tạo bằng không, hành vi này tạo ra một khả năng ghi tràn bộ đệm mà chuỗi khai thác tận dụng để hỏng các cấu trúc kernel lân cận.

Nguy hại ở chỗ đây không phải một race condition khó lặp lại, mà là một khả năng ghi tràn bộ đệm có tính quyết định, nên việc lợi dụng nó để thao tác bộ nhớ kernel trở nên thực tế và ổn định hơn. Những người công bố PoC đã điều khiển bố cục vùng nhớ bằng các thao tác cấp phát và giải phóng có chủ ý để đặt vùng tràn cạnh một đối tượng kernel mục tiêu, từ đó mở đường cho các bước khai thác tiếp theo.

Hai nghiên cứu độc lập được thực hiện bởi chuyên gia bảo mật Norbert Szetei và nhóm Doyensec đều chứng minh khả năng khai thác thực tế của CVE-2025-37947. Trong bản PoC của Norbert Szetei cho biết anh đã sắp xếp vùng tràn sao cho nằm ngay cạnh một đối tượng tin nhắn nội bộ của kernel (msg_msg), tận dụng cơ chế quản lý bộ nhớ SLUB để kiểm soát vị trí cấp phát. Nhờ vậy, khi dữ liệu bị ghi tràn, nó có thể tác động trực tiếp lên đối tượng mục tiêu. Doyensec sau đó chứng minh rằng việc làm hỏng phần tiêu đề của đối tượng này có thể khiến hệ thống dùng lại vùng nhớ đã bị giải phóng, làm rò rỉ địa chỉ trong bộ nhớ kernel.

Từ những địa chỉ bị lộ, kẻ tấn công có thể vượt qua cơ chế bảo vệ KASLR, ghi đè con trỏ hàm trong một cấu trúc khác (pipe_buffer) để điều khiển luồng thực thi. Cuối cùng, họ chuyển hướng ngăn xếp và kích hoạt chuỗi mã độc quyền (ROP) để giành quyền root. Toàn bộ quy trình này đã được thử nghiệm thành công trên Ubuntu 22.04.5 LTS, kernel 5.15.0-153-generic.

Việc công khai mã khai thác trên GitHub đồng nghĩa với việc nhiều bước kỹ thuật trước đây trở nên dễ tiếp cận hơn và trong trường hợp này chỉ cần một tài khoản SMB có quyền ghi để gây nguy hại. Khai thác từ xa vẫn gặp nhiều khó khăn bởi nó thường đòi hỏi thêm một lỗ hổng rò rỉ thông tin để ổn định việc sắp xếp heap và bẻ KASLR, nhưng bản PoC công khai vẫn đặt áp lực lớn lên các tổ chức buộc họ phải hành động nhanh để giảm thiểu rủi ro.

Để tránh bị khai thác bởi CVE-2025-37947, việc phản ứng nhanh và quản trị phòng ngừa đóng vai trò then chốt. Các tổ chức cần đồng thời xử lý kỹ thuật lẫn tăng cường giám sát để ngăn chặn rủi ro tái diễn. Trọng tâm là khắc phục triệt để và thu hẹp bề mặt tấn công trong khi chờ bản vá được áp dụng rộng rãi.
  • Cập nhật kernel theo bản vá từ upstream hoặc nhà phân phối để loại bỏ lỗi logic kiểm tra pos
  • Vô hiệu hóa module streams_xattr nếu không cần thiết nhằm hạn chế điểm vào khai thác
  • Thu hồi quyền ghi trên các chia sẻ SMB không bắt buộc, chỉ giữ lại những quyền thực sự cần thiết
  • Cô lập máy chủ ksmbd khỏi các vùng mạng không tin cậy để giảm khả năng tiếp cận trực tiếp
Ngoài ra, việc tăng cường theo dõi và tuân thủ nguyên tắc bảo mật căn bản sẽ giúp phát hiện sớm hành vi bất thường.
  • Giám sát nhật ký kernel (/var/log/kern.log) để phát hiện dấu hiệu ghi ngoài bộ đệm hoặc hoạt động SMB đáng ngờ
  • Áp dụng nguyên tắc quyền ít nhất cho các tài khoản SMB, tránh cấp quyền ghi rộng.
  • Phân tách các dịch vụ quan trọng ra khỏi vùng mạng có độ tin cậy thấp
  • Bổ sung kiểm tra biên (boundary check) trong quy trình code review để ngăn lỗi tương tự xuất hiện trong tương lai
Khi PoC đã được công khai, lỗ hổng không còn là chuyện lý thuyết nữa mà trở thành mục tiêu béo bở cho kẻ tấn công, vì vậy các quản trị viên cần áp dụng ngay bản vá, tắt tạm thời các tính năng không cần thiết và thu hẹp quyền truy cập để tránh rủi ro không đáng có.

Tổng hợp
 
Chỉnh sửa lần cuối:
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Thẻ
chroot‑to‑root cve-2025-37947 ksmbd linux
Bên trên