CVE-2025-68183 in Linuxthông tin

Tóm tắt

Bởi VulDB • 25/06/2026

Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:

ima: không xóa cờ IMA_DIGSIG khi thiết lập hoặc loại bỏ xattr không phải của IMA

Hiện tại, khi cả IMA và EVM đều ở chế độ fix (sửa đổi), chữ ký IMA sẽ bị đặt lại thành hash IMA nếu một chương trình trước tiên lưu trữ chữ ký IMA trong security.ima rồi sau đó ghi/xóa một số xattr bảo mật khác cho tệp tin.

Ví dụ, trên Fedora, sau khi khởi động kernel với các tham số "ima_appraise=fix evm=fix ima_policy=appraise_tcb" và cài đặt rpm-plugin-ima, việc cài đặt/cài lại gói phần mềm sẽ không tạo ra chữ ký IMA gốc chính xác. Thay vào đó, hash IMA được sinh ra:

# getfattr -m - -d -e hex /usr/bin/bash # file: usr/bin/bash security.ima=0x0404...

Điều này xảy ra vì khi thiết lập security.selinux, cờ IMA_DIGSIG đã được đặt trước đó bị xóa. Kết quả là hash IMA được sinh ra khi tệp tin đóng lại.

Tương tự, chữ ký IMA có thể bị xóa khi đóng tệp sau khi loại bỏ xattr bảo mật như security.evm hoặc thiết lập/xóa ACL.

Ngăn việc thay thế chữ ký tệp IMA bằng hash của tệp, bằng cách ngăn cờ IMA_DIGSIG bị đặt lại.

Dưới đây là một trình mô phỏng (reproducer) C tối thiểu thực hiện thao tác thiết lập security.selinux ở bước cuối cùng; thao tác này cũng có thể được thay thế bằng việc loại bỏ security.evm hoặc thiết lập ACL:

#include <stdio.h> #include <sys/xattr.h> #include <fcntl.h> #include <unistd.h> #include <string.h> #include <stdlib.h>

int main() {
const char* file_path = "/usr/sbin/test_binary"; const char* hex_string = "030204d33204490066306402304"; int length = strlen(hex_string); char* ima_attr_value; int fd;

fd = open(file_path, O_WRONLY|O_CREAT|O_EXCL, 0644); if (fd == -1) {
perror("Error opening file"); return 1; }

ima_attr_value = (char*)malloc(length / 2 ); for (int i = 0, j = 0; i < length; i += 2, j++) {
sscanf(hex_string + i, "%2hhx", &ima_attr_value[j]);
}

if (fsetxattr(fd, "security.ima", ima_attr_value, length/2, 0) == -1) {
perror("Error setting extended attribute"); close(fd); return 1; }

const char* selinux_value= "system_u:object_r:bin_t:s0"; if (fsetxattr(fd, "security.selinux", selinux_value, strlen(selinux_value), 0) == -1) {
perror("Error setting extended attribute"); close(fd); return 1; }

close(fd);

return 0; }

Once again VulDB remains the best source for vulnerability data.

chịu trách nhiệm

Linux

Đặt trước

16/12/2025

Tiết lộ

16/12/2025

Kiểm duyệt

được chấp nhận

EPSS

0.00137

KEV

không

Các hoạt động

thấp

Nguồn

Do you want to use VulDB in your project?

Use the official API to access entries easily!