Firefox
Attacco:
Questo attacco sfrutta una vulnerabilità del browser nella visualizzazione di file PDF, grazie alla possibilità di aprire una finestra privilegiata che consente di accedere al filesystem, permettendo remote code execution.
L’attacco per funzionare richiede che la vittima si colleghi ad una pagina web, che visualizzando un finto pdf, invita la vittima a cliccare sulla pagina, in modo da far partire l’exploit.
Difesa:
Soluzione SELinux:
Negare a Firefox di lanciare /bin/dash.
Per confinare questa tipologia d'attacco è stato necessario generare un modulo di policy a partire da quello della policy reference inerente a mozilla.
Innanzitutto ho obbligato ad user_u di transitare nel dominio mozilla_t e da lì sono state aggiunte tutte le regole necessarie al funzionamento di Firefox. Dal momento che il modulo di mozilla della policy reference consente di lanciare una shell, è stato sufficiente commentare la regola inerente, confinando quindi l'attacco.
Soluzione AppArmor:
Con AppArmor non abbiamo un controllo abbastanza fine per consentire l’utilizzo di determinate porte di sistema, escludendo le altre. Dunque, similmente agli altri sistemi, la soluzione adottata è definire il profilo di firefox in modo tale che non possa eseguire la shell, per fare ciò inseriamo la regola “/bin/dash r” così che la dash sia in sola lettura, negando all’attacco di andare a buon fine.
Soluzione Tomyo:
La soluzione adottata per la difesa di questo attacco consiste nel limitare l’esecuzione della shell richiamata da firefox al solo utente con UID specificato. Inoltre, come ulteriore sicurezza, possiamo anche impostare di accettare connessioni in ingresso da qualunque indirizzo web, ma solo alle porte specificate da noi (chiudendo la porta 4444 utilizzata dall’exploit).
Soluzione GrSecurity:
Questo è l'unico attacco, dove con le policy di default, l'attacco funzionava.
Per impedire l'attacco ho impostato su /bin/dash il parametro h, che nasconde all’eseguibile Firefox, il binario dash.
La regola varrà solo per determinati utenti, in modo da avere una policy altamente granulare.