O_DIRECT è un flag di I/O dei file di Linux che chiede al kernel di trasferire i dati direttamente tra un'applicazione e il dispositivo di archiviazione, bypassando la page cache. Nell'I/O buffered normale, il kernel può tenere i dati dei file in memoria e ritardare le scritture; O_DIRECT viene usato quando un'applicazione desidera un controllo più stretto sulla latenza, sulla cache o sulla consistenza dei dati.
Nelle attività di sicurezza, O_DIRECT è importante perché cambia il modo in cui le scritture su file interagiscono con le strutture interne del filesystem. L'I/O diretto può esporre finestre temporali e casi limite che le scritture buffered non mostrano, specialmente nei filesystem con copy-on-write, reflink o logiche di condivisione dei blocchi. Gli aggressori possono abusare di questi percorsi per creare race condition o forzare aggiornamenti inattesi dei blocchi, mentre i difensori usano la stessa conoscenza per testare difetti del kernel, analizzare le funzionalità del filesystem e capire quali carichi di lavoro possono attivare bug del livello di archiviazione. O_DIRECT non è pericoloso di per sé, ma può diventare parte di una condizione di exploit affidabile quando un filesystem gestisce in modo errato scritture dirette concorrenti.


