Cộng đồng nhân Linux đang giải quyết các lỗ hổng bảo mật tồn tại lâu đời trong việc xử lý core dump đã gây khó khăn cho các hệ thống trong nhiều năm. Với bản phát hành nhân 5.13 sắp tới, những thay đổi quan trọng đang được triển khai để khắc phục các lỗ hổng bảo mật nghiêm trọng này ảnh hưởng đến cách hệ thống xử lý core dump từ các tiến trình không có đặc quyền.
Core dump là ảnh chụp nhanh bộ nhớ và trạng thái của chương trình khi nó gặp sự cố, giúp các nhà phát triển gỡ lỗi các vấn đề. Tuy nhiên, việc triển khai hiện tại đã tạo ra những rủi ro bảo mật nghiêm trọng mà kẻ tấn công có thể khai thác để có được đặc quyền nâng cao trên hệ thống.
Cài Đặt Toàn Cục Tạo Ra Rủi Ro Bảo Mật
Một trong những vấn đề lớn nhất với hệ thống core dump hiện tại của Linux là tính chất toàn cục của nó. Trình xử lý core dump chạy với đầy đủ đặc quyền root trong root namespace, khiến nó chỉ có thể truy cập được bởi quản trị viên hệ thống. Lỗ hổng thiết kế này có nghĩa là khi một chương trình gặp sự cố, quá trình core dump có thể bị kẻ tấn công khai thác để có được quyền truy cập toàn hệ thống.
Cộng đồng đã lâu nhận ra vấn đề thiết kế cơ bản này. Các nhà phát triển đã đề xuất các giải pháp như cách ly namespace hoặc ủy thác việc xử lý core dump cho các tiến trình cụ thể, nhưng những nỗ lực trước đây để triển khai các bản vá này chưa bao giờ được đưa vào nhân chính.
Lỗ hổng Bảo mật Core Dump:
- Cài đặt core dump toàn cục chỉ có thể truy cập bởi người dùng root
- Trình xử lý core dump chạy với đầy đủ quyền hạn trong không gian tên root
- Kẻ tấn công có thể chặn các socket và tiến trình core dump
- Các chương trình Set-uid-root tạo ra cơ hội leo thang đặc quyền thông qua core dump
- Lỗ hổng time-of-check-time-of-use trong quá trình xử lý sự cố
Leo Thang Đặc Quyền Thông Qua Core Dump
Các lỗ hổng bảo mật trở nên đặc biệt nguy hiểm khi xử lý các chương trình chạy với đặc quyền nâng cao. Khi những chương trình như vậy gặp sự cố và tạo ra core dump, kẻ tấn công có thể chặn hoặc thao túng quá trình core dump để duy trì những đặc quyền nâng cao đó. Điều này tạo ra một con đường cho các cuộc tấn công leo thang đặc quyền có thể làm tổn hại toàn bộ hệ thống.
Cách tiếp cận hiện tại của nhân là chạy các trình xử lý core dump như các trình trợ giúp chế độ người dùng với đầy đủ đặc quyền trong root namespace khiến những cuộc tấn công này trở nên khả thi. Kẻ tấn công có thể khai thác khoảng thời gian giữa khi sự cố xảy ra và khi trình xử lý core dump bảo mật tiến trình.
Mô Hình Bảo Mật Mới Dựa Trên Namespace
Các bản vá sắp tới giới thiệu cách tiếp cận dựa trên namespace để xử lý core dump. Thay vì chạy tất cả các hoạt động core dump trong root namespace với đầy đủ đặc quyền, hệ thống mới đảm bảo rằng các trình xử lý core dump hoạt động trong cùng namespace với tiến trình bị sự cố. Cách tiếp cận ngăn chặn này giảm đáng kể bề mặt tấn công.
Các thay đổi bao gồm sửa đổi cách nhân theo dõi quyền sở hữu tiến trình và thông tin xác thực namespace. Bằng cách đảm bảo rằng các trình xử lý core dump kế thừa bối cảnh namespace phù hợp, hệ thống có thể ngăn chặn kẻ tấn công sử dụng core dump để thoát khỏi ranh giới bảo mật dự định của chúng.
Các Thay Đổi Bảo Mật Chính trong Linux Kernel 5.13:
- Các trình xử lý core dump hiện hoạt động trong không gian tên của tiến trình bị lỗi thay vì không gian tên root
- Cài đặt prctl mới cho phép các tiến trình lựa chọn core dump ngẫu nhiên hóa
- Theo dõi thông tin xác thực không gian tên ngăn chặn các cuộc tấn công leo thang đặc quyền
- Các trình xử lý core dump ở chế độ người dùng không còn chạy với đầy đủ quyền root theo mặc định
Cộng Đồng Tranh Luận Chi Tiết Triển Khai
Các cuộc thảo luận kỹ thuật trong cộng đồng đã tập trung vào các cách tiếp cận thay thế để bảo mật việc xử lý core dump. Một số nhà phát triển đặt câu hỏi tại sao các trình xử lý core dump không được chạy như những người dùng chuyên dụng với đặc quyền hạn chế thay vì như các tiến trình root.
Bạn có thể tưởng tượng một API thiết lập UID của người dùng này, và nhân có thể dễ dàng chạy trình xử lý coredump như người dùng đó, nhưng nhân không thể dễ dàng tự động hóa việc tạo ra một namespace phức tạp để chứa tiến trình đó.
Những người khác đã đề xuất rằng sự phức tạp của việc truyền core file cho container có thể không đáng với những rủi ro bảo mật liên quan, đặc biệt là vì hầu hết cơ sở hạ tầng báo cáo sự cố hoạt động ở mức cao hơn.
Những thách thức triển khai rất đáng kể vì việc thiết lập cách ly namespace phù hợp đòi hỏi các hoạt động nhân phức tạp phải xảy ra trước khi bất kỳ mã có thể khai thác nào chạy. Ràng buộc thời gian này khiến các giải pháp đơn giản hơn như giảm đặc quyền dựa trên người dùng không đủ cho bảo mật hoàn toàn.
Tác Động Đến Quản Trị Hệ Thống
Những cải tiến bảo mật này sẽ thay đổi cách quản trị viên hệ thống quản lý việc thu thập và phân tích core dump. Mặc dù các thay đổi làm cho hệ thống an toàn hơn, chúng cũng có thể ảnh hưởng đến các công cụ và quy trình làm việc hiện có phụ thuộc vào hành vi core dump hiện tại.
Các bản vá đại diện cho nhiều năm nghiên cứu và phát triển bảo mật, giải quyết các lỗ hổng đã tồn tại trong các hệ thống Linux trong một thời gian dài. Quản trị viên hệ thống và các nhóm bảo mật nên chuẩn bị cho những thay đổi này khi chúng được triển khai với nhân 5.13 và các phiên bản sau.
Phản ứng của cộng đồng nhìn chung tích cực, với nhiều người nhận ra rằng những cải tiến bảo mật đã trễ hạn này là cần thiết bất chấp sự phức tạp của chúng. Các thay đổi cho thấy cách các công nghệ container và namespace hiện đại đang được áp dụng để giải quyết các vấn đề bảo mật Unix truyền thống.
Tham khảo: Slowing the flow of core-dump-related CVIs