2.9 KiB
Relro
Impara l'hacking AWS da zero a ero con htARTE (Esperto Red Team AWS di HackTricks)!
Altri modi per supportare HackTricks:
- Se vuoi vedere la tua azienda pubblicizzata in HackTricks o scaricare HackTricks in PDF Controlla i PIANI DI ABBONAMENTO!
- Ottieni il merchandising ufficiale di PEASS & HackTricks
- Scopri La Famiglia PEASS, la nostra collezione di NFT esclusivi
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi i tuoi trucchi di hacking inviando PR a HackTricks e HackTricks Cloud github repos.
Relro
RELRO sta per Relocation Read-Only, ed è una funzionalità di sicurezza utilizzata nei binari per mitigare i rischi associati agli sovrascritture della GOT (Global Offset Table). Vediamo i due tipi distinti per chiarezza: Partial RELRO e Full RELRO.
Partial RELRO
Partial RELRO adotta un approccio più semplice per migliorare la sicurezza senza influire significativamente sulle prestazioni del binario. Posizionando la GOT sopra le variabili del programma in memoria, Partial RELRO mira a prevenire che gli overflow di buffer raggiungano e corrompano la GOT.
Questo non impedisce alla GOT di essere abusata da vulnerabilità di scrittura arbitraria.
Full RELRO
Full RELRO aumenta la protezione rendendo la GOT completamente in sola lettura. Una volta che il binario inizia, tutti gli indirizzi delle funzioni vengono risolti e caricati nella GOT, quindi, la GOT viene contrassegnata come sola lettura, impedendo efficacemente qualsiasi modifica ad essa durante l'esecuzione.
Tuttavia, il compromesso con Full RELRO riguarda le prestazioni e il tempo di avvio. Poiché è necessario risolvere tutti i simboli dinamici all'avvio prima di contrassegnare la GOT come sola lettura, i binari con Full RELRO abilitato potrebbero avere tempi di caricamento più lunghi. Questo sovraccarico aggiuntivo all'avvio è il motivo per cui Full RELRO non è abilitato per impostazione predefinita in tutti i binari.
È possibile verificare se Full RELRO è abilitato in un binario con:
readelf -l /proc/ID_PROC/exe | grep BIND_NOW
Bypass
Se Full RELRO è abilitato, l'unico modo per evitarlo è trovare un altro modo che non richieda di scrivere nella tabella GOT per ottenere l'esecuzione arbitraria.