
questo è un repository che sta affrontando un problema di escalation nel proprio sistema Linux e una notizia riguardante il problema del "Dirty pipeline"
Max Kellermann, uno sviluppatore presso CM4all (un'azienda tedesca di web hosting), lo ha scoperto all'inizio del 2022, ma non cercando una vulnerabilità. Stava eseguendo il debug quando ha scoperto che il cliente era insoddisfatto perché i log sul loro server si corrodevano spontaneamente. Kellermann ha trascorso mesi a rintracciarlo. Il suo lavoro lo ha portato infine a una condizione profonda nel modo in cui il kernel Linux gestisce le pipe e la cache delle pagine. Si è reso conto che il bug trovato per spiegare la corruzione dei log era in realtà qualcosa di molto più grave: una vulnerabilità di escalation completa dei privilegi (Una vulnerabilità di escalation completa dei privilegi è una falla di sicurezza critica che consente a un attaccante con accesso di basso livello — come un utente standard, un ospite o un'applicazione non privilegiata — di ottenere il controllo amministrativo, superutente o root su un sistema. Ciò significa che l'attaccante bypassa tutti i confini di sicurezza previsti, ottenendo il controllo completo per modificare file di sistema, installare software, rubare dati o eliminare file). L'ha divulgata responsabilmente al team del kernel Linux e a Linus Torvalds stesso. È stata corretta nel giro di giorni. Il vero problema è: quando splice() trasferiva dati in una pipe, dimenticava di cancellare questo flag sul buffer di destinazione. Quindi la pagina splice'd (che punta direttamente nella cache delle pagine di sola lettura di un file) aveva ancora CAN_MERGE impostato. Ora se scrivi su quella pipe, il kernel vede CAN_MERGE, presume che la pagina sia scrivibile e fonde i tuoi dati direttamente nella cache delle pagine — che è il contenuto in memoria del file — senza alcun controllo dei permessi. Risultato: puoi sovrascrivere il contenuto di qualsiasi file leggibile da te, inclusi i binari SUID (set user ID) di root come su, passwd, sudo. Perché il bug è stato così importante? Alcune ragioni: