La prossima versione del kernel Linux, la 7.2, includerà il flag OPENAT2_REGULAR per la chiamata di sistema openat2. Questa funzionalità consente ai programmi di assicurarsi di aprire solo file regolari, evitando che vengano reindirizzati a dispositivi speciali come /dev/null o FIFO, che possono causare comportamenti di blocco imprevisti e vulnerabilità di sicurezza.
Come funziona OPENAT2_REGULAR nel kernel 🛡️
Il flag OPENAT2_REGULAR agisce come un filtro nella chiamata openat2. Quando viene attivato, il kernel verifica che il file di destinazione sia di tipo regolare (S_IFREG) prima di consentirne l'apertura. Se il file è un dispositivo a blocchi, un FIFO o un socket, l'operazione fallisce con l'errore EISDIR o EPERM. Questa verifica avviene dopo la risoluzione dei collegamenti simbolici, bloccando il passaggio ad attacchi che utilizzano collegamenti per puntare a dispositivi speciali. L'implementazione è stata richiesta dal gruppo UAPI per proteggere le applicazioni che elaborano file utente.
Addio agli spaventi con /dev/null e i FIFO birichini 😅
Fino ad ora, un programma fiducioso poteva aprire un file e scoprire che era un FIFO che lo lasciava in attesa di dati per sempre, o peggio, un /dev/null che ingoiava tutto il suo output senza fiatare. Con OPENAT2_REGULAR, questi spaventi finiscono: se il file non è regolare, il kernel dice no e lo sviluppatore si risparmia ore di debug. È come mettere un filtro all'ingresso del disco in modo che passino solo file veri, non travestimenti da carnevale.