CVE-2025-68183 in Linuxinformazioni

Riassunto

di VulDB • 23/06/2026

Nel kernel Linux è stata risolta la seguente vulnerabilità:

ima: non cancellare il flag IMA_DIGSIG durante l'impostazione o la rimozione di xattr non-IMA

Attualmente, quando sia IMA che EVM sono in modalità fix (correzione), la firma IMA viene reimpostata sull'hash IMA se un programma prima memorizza la firma IMA in security.ima e successivamente scrive/rimuove qualche altro attributo esteso di sicurezza (xattr) per il file.

Ad esempio, su Fedora, dopo aver avviato il kernel con "ima_appraise=fix evm=fix ima_policy=appraise_tcb" e installato rpm-plugin-ima, l'installazione/reinstallazione di un pacchetto non genera una corretta firma IMA di riferimento. Viene invece generato l'hash IMA:

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

Questo accade perché, durante l'impostazione di security.selinux, il flag IMA_DIGSIG che era stato impostato in precedenza viene cancellato. Di conseguenza, quando il file viene chiuso, viene generato l'hash IMA.

Allo stesso modo, la firma IMA può essere cancellata alla chiusura del file dopo aver rimosso un xattr di sicurezza come security.evm o aver impostato/rimosso gli ACL (Access Control List).

Si impedisce la sostituzione della firma del file IMA con l'hash del file impedendo che il flag IMA_DIGSIG venga reimpostato.

Ecco un riproduttore C minimale che imposta security.selinux come ultimo passaggio, che può anche essere sostituito rimuovendo security.evm o impostando gli 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; }

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

Responsabile

Linux

Prenotare

16/12/2025

Divulgazione

16/12/2025

Moderazione

accettato

CPE

pronto

EPSS

0.00137

KEV

no

Attività

basso

Fonti

Do you know our Splunk app?

Download it now for free!