RELRO, abbreviazione di Relocation Read-Only, è una funzionalità di hardening ELF che protegge i dati relativi alle relocation dopo l'avvio del programma. Durante il caricamento, il dynamic linker risolve gli indirizzi dei simboli e poi può marcare le tabelle di relocation critiche come di sola lettura, rendendole più difficili da sovrascrivere. In pratica, questo limita gli attacchi che cercano di deviare l'esecuzione manomettendo la Global Offset Table (GOT) o altre strutture gestite dal linker.
Per chi difende, RELRO è un utile segnale in fase di build: il full RELRO è più forte perché protegge una parte maggiore dei dati di relocation del binario, mentre il partial RELRO lascia disponibili più a lungo alcuni target scrivibili. Nell'analisi di malware, osservare il partial RELRO non dimostra sofisticazione; indica semplicemente che il campione è stato compilato con comuni mitigazioni Linux. Gli attaccanti preferiscono comunque binari senza queste protezioni perché sono più facili da agganciare, patchare o deviare durante lo sfruttamento. RELRO è un livello di difesa, non una barriera completa.


