Apptainer: lỗi use-after-free trong ext4 ở chế độ setuid-root có thể gây DoS kernel và leo thang đặc quyền

Lưu ý: Dữ liệu này chỉ có tính chất tham khảo, phục vụ nghiên cứu an ninh mạng.CyStack khuyến nghị người dùng không sử dụng các thông tin này nhằm các mục đích bất hợp pháp

Lỗ hổng CVE-2023-30549 là gì?

Lỗ hổng CVE-2023-30549 là lỗ hổng Use After Free ảnh hưởng tới apptainer (phiên bản bị ảnh hưởng: < 1.1.8). Lỗ hổng này được xếp hạng ở mức Cao, với điểm CVSS 7.8. Các nguồn hiện có chưa ghi nhận lỗ hổng này bị khai thác.

Giới thiệu chung

Dữ liệu gốc

Apptainer là một nền tảng container mã nguồn mở cho Linux. Có một lỗi use-after-free trong ext4 có thể bị khai thác trên các phiên bản Apptainer < 1.1.0 và các cài đặt có apptainer-suid < 1.1.8 trên những hệ điều hành cũ hơn mà CVE đó chưa được vá. Các hệ điều hành này gồm Red Hat Enterprise Linux 7, Debian 10 buster (trừ khi package linux-5.10 được cài đặt), Ubuntu 18.04 bionic và Ubuntu 20.04 focal. Lỗi use-after-free trong kernel có thể được dùng để tấn công kernel nhằm gây denial of service và có khả năng leo thang đặc quyền. Apptainer 1.1.8 bao gồm một bản vá mặc định vô hiệu hóa việc mount các loại filesystem extfs trong chế độ setuid-root, đồng thời tiếp tục cho phép mount filesystem extfs ở chế độ không setuid "rootless" bằng fuse2fs. Có một số biện pháp khắc phục có thể áp dụng. Có thể không cài đặt apptainer-suid (đối với các phiên bản 1.1.0 đến 1.1.7) hoặc đặt allow setuid = no trong apptainer.conf. Cách này yêu cầu bật unprivileged user namespaces và, ngoại trừ các phiên bản apptainer 1.1.x, sẽ ngăn việc mount các file sif, file extfs và file squashfs cùng với một số ảnh hưởng ít nghiêm trọng hơn. (Các file sif được mã hóa cũng không được hỗ trợ ở chế độ unprivileged trong apptainer 1.1.x.). Ngoài ra, có thể dùng các tùy chọn limit containers trong apptainer.conf/singularity.conf để giới hạn file sif cho các user, group và/hoặc path tin cậy, đồng thời đặt allow container extfs = no để ngăn mount các file extfs overlay. Riêng tùy chọn sau không ngăn việc mount các phân vùng extfs overlay bên trong file SIF, vì vậy vẫn cần các tùy chọn nêu trước.

Sản phẩm và phạm vi ảnh hưởng

  • Apptainer: Record chuẩn hóa đánh dấu các phiên bản < 1.1.8 là affected. Upstream advisory cũng liệt kê < 1.1.8 là affected và 1.1.8 là patched. Điều kiện khai thác gắn với việc sử dụng setuid-root; advisory nêu cụ thể Apptainer < 1.1.0 và các cài đặt có apptainer-suid < 1.1.8.
  • Hệ điều hành cũ: Red Hat Enterprise Linux 7, Debian 10 buster trừ khi package linux-5.10 được cài đặt, Ubuntu 18.04 bionic và Ubuntu 20.04 focal, trong trường hợp lỗi kernel underlying chưa được vá.
  • Phạm vi liên quan: CNA advisory mô tả tất cả phiên bản Singularity trong cấu hình mặc định trên các hệ thống nêu trên. Sylabs phản đối việc coi đây là lỗi bảo mật riêng của Singularity và cho rằng cần xử lý lỗi kernel; đây là khác biệt quan điểm về phạm vi sản phẩm.
  • Bản phân phối: Debian tracker liệt kê package singularity-container trong unstable được sửa tại 3.11.4+ds1-1. SUSE liệt kê apptainer >= 1.3.0-bp155.3.3.2 cho SUSE Package Hub 15 SP5 và openSUSE Leap 15.5, cùng apptainer >= 1.1.8-1.1 cho openSUSE Tumbleweed. Các mốc này chỉ áp dụng cho những nhánh package tương ứng, không chứng minh mọi nhánh song song hoặc phát hành sau đó đều được bao phủ.

Chi tiết kỹ thuật

Đây là lỗi CWE-416: Use After Free trong filesystem driver ext4 của kernel Linux. Ở chế độ setuid-root, Apptainer cho phép người dùng mount các filesystem extfs, gồm cả ext3 được xử lý bởi driver ext4, và squashfs bằng kernel driver trong khi người dùng có quyền ghi vào dữ liệu filesystem thô. Luồng tấn công ở mức cao là: người dùng cung cấp hoặc chạy một container image extfs được tạo đặc biệt; runtime setuid-root yêu cầu kernel mount dữ liệu đó; kernel xử lý dữ liệu đã bị kiểm soát và có thể kích hoạt lỗi use-after-free. Đối tượng do attacker kiểm soát có thể là extfs container image hoặc phân vùng extfs overlay bên trong SIF. Bằng chứng hiện có không nêu tên hàm, payload hay một đường khai thác leo thang đặc quyền có thể tái lập; chi tiết dễ bị lạm dụng nằm trong xử lý vòng đời bộ nhớ của kernel.

Khả năng khai thác

Khả năng tiếp cận là local: attacker cần quyền chạy hoặc khiến container được thực thi qua đường dẫn setuid-root bị ảnh hưởng. Record cho biết yêu cầu quyền thấp và không cần user interaction; không có đường khai thác từ xa qua mạng được mô tả. CNA advisory yêu cầu filesystem image hoặc overlay được tạo đặc biệt, trong khi record chuẩn hóa mô tả attack complexity thấp; bằng chứng hiện có không cung cấp chuỗi khai thác có thể tái lập. Record được cung cấp đánh dấu không có public exploit và không ghi nhận trạng thái known exploited; điều này không chứng minh rằng việc khai thác chưa từng xảy ra. Sylabs cho biết extfs image hoặc SIF overlay được tạo đặc biệt có thể gây denial of service trên host bị ảnh hưởng, đồng thời cho rằng vấn đề nằm ở kernel thay vì là lỗi riêng của Singularity.

Tác động kỹ thuật

Kết quả kỹ thuật chính là denial of service đối với kernel của host. Vì lỗi use-after-free trong kernel có thể được tiếp cận thông qua đường mount đặc quyền, việc làm hỏng trạng thái kernel có khả năng ảnh hưởng đến tính bí mật hoặc toàn vẹn và có thể được dùng để leo thang đặc quyền; bằng chứng hiện có không chứng minh chắc chắn đường đi đó. Phạm vi có thể mở rộng từ container runtime sang kernel của host thay vì chỉ ảnh hưởng đến một container. Hệ quả tổ chức có thể gồm gián đoạn workload container hoặc HPC dùng chung và, nếu privilege escalation thành công, khả năng xâm phạm dữ liệu hoặc cơ chế kiểm soát của host. Không có nạn nhân, chiến dịch hoặc sự cố rò rỉ cụ thể nào được bằng chứng nêu tên.

Tác động đến tổ chức

Trên host bị ảnh hưởng, người dùng container cục bộ có thể làm crash hoặc gây mất ổn định kernel của host khi chạy filesystem image được tạo đặc biệt thông qua Apptainer setuid-root. Nếu đạt được privilege escalation, tác động có thể mở rộng từ gián đoạn dịch vụ sang ảnh hưởng đến tính bí mật và toàn vẹn của dữ liệu host, nhưng kết quả này chỉ được mô tả là có khả năng, chưa được bằng chứng cung cấp xác nhận. Vô hiệu hóa setuid mount hoặc chuyển sang rootless execution có thể giảm rủi ro nhưng gây đánh đổi vận hành, gồm hạn chế đối với một số SIF, extfs, squashfs, encrypted SIF, execution-control, supplementary groups hoặc host filesystem ACL tùy runtime và cấu hình. Với hệ thống HPC hoặc shared container host, denial of service có thể làm gián đoạn nhiều workload dùng chung.

Cách khắc phục

  1. Cài bản sửa upstream 1.1.8, hoặc package bảo mật chính xác do nhà cung cấp phân phối cho nhánh hệ điều hành đang sử dụng. Bản sửa của Apptainer mặc định vô hiệu hóa mount filesystem extfs trong chế độ setuid-root nhưng vẫn cho phép mount extfs ở chế độ rootless thông qua fuse2fs.
  2. Vá kernel của host bằng bản cập nhật từ nhà cung cấp hệ điều hành và reboot theo hướng dẫn của nhà cung cấp. Việc nâng cấp Apptainer là defense-in-depth và không thay thế cho bản vá kernel underlying.
  3. Nếu chưa thể nâng cấp, với các phiên bản 1.1.0 đến 1.1.7, gỡ package apptainer-suid hoặc đặt allow setuid = no trong apptainer.conf. Cách này yêu cầu unprivileged user namespaces được bật và có thể làm mất khả năng mount SIF, extfs hoặc squashfs cùng các chức năng khác. Với triển khai Singularity, dùng file cấu hình tương ứng singularity.conf.
  4. Nếu bắt buộc duy trì setuid, dùng các tùy chọn limit containers trong apptainer.conf hoặc singularity.conf để giới hạn SIF cho user, group hoặc path tin cậy, đồng thời đặt allow container extfs = no để cấm extfs overlay files. Tùy chọn cuối cùng không tự nó ngăn được extfs overlay partition bên trong SIF, nên không nên dùng riêng lẻ.
  5. Xác nhận lại tác động chức năng trước khi áp dụng rootless mode hoặc vô hiệu hóa setuid, đặc biệt với encrypted SIF, execution-control và các workflow phụ thuộc supplementary groups hoặc host filesystem ACL.

Cách phát hiện

  1. Kiểm kê bản cài đặt Apptainer, package apptainer-suid, và việc binary được build kèm phần setuid-root hay không.
  2. Kiểm tra apptainer.conf và cấu hình liên quan để xác định các thiết lập allow setuid, allow setuid-mount, allow container extfs, limit containers, cũng như việc unprivileged user namespaces có được bật hay không.
  3. Đối chiếu host OS và kernel với trạng thái bản vá của lỗi ext4 underlying, đặc biệt trên các nhánh RHEL cũ, Debian buster và Ubuntu bionic hoặc focal được nêu trong phạm vi ảnh hưởng.
  4. Rà soát audit record và lịch sử thực thi để tìm các lần mount extfs, extfs overlay hoặc SIF thông qua chế độ setuid-root. Đây là kiểm tra theo hành vi, không phải IOC đã được xác nhận.
  5. Không có log event, payload hay indicator cụ thể nào được nguồn cung cấp. Việc không thấy bằng chứng trong log không chứng minh host an toàn.
Nguồn (28)
Tìm hiểu thêm

Kiểm tra chuyên sâu cùng giải pháp quản lý rủi ro Web toàn diện

Giải pháp CyStack VulnScan liên tục phát hiện tài sản, xác minh lỗ hổng và giúp đội ngũ bảo mật ưu tiên khắc phục cho toàn bộ doanh nghiệp.