Questo non è affatto un rischio per la sicurezza, perché puoi sempre impostare solo variabili d'ambiente per il tuo ambiente attuale (es. Sessione Bash corrente) e, usando il export
comando, i suoi ambienti figlio (script che avvii, sottotitoli, ecc.). È impossibile eseguire l'escalation di una variabile di ambiente creata o modificata nell'ambiente padre. Ciò include che è impossibile per gli utenti regolari apportare modifiche a livello di sistema, ovviamente.
Pertanto, l'unico ambiente che potrebbe essere interessato se si esegue export LD_LIBRARY_PATH=...
è la shell corrente e eventuali sottotitoli che potrebbero essere generati in seguito. Supponiamo che modifichi il percorso di ricerca per includere le librerie infette all'inizio, ovvero con la massima priorità. Quindi esegui un eseguibile che carica una delle librerie infette senza nemmeno saperlo. Che succede ora?
Hai codice dannoso (dalla libreria infetta) in esecuzione con il tuo account utente con regolari privilegi di non amministratore. Potrebbe sembrare brutto, ma in realtà ... e allora? Funziona con privilegi utente regolari, il che significa che non può influenzare l'intero sistema. A proposito, eseguire direttamente un eseguibile con lo stesso codice dannoso sarebbe stato molto più semplice che modificare il percorso di ricerca della libreria e attendere che un normale eseguibile lo caricasse.
Conclusione: un utente normale può modificare solo il proprio percorso di ricerca delle librerie, il che significa che può anche caricare solo quelle librerie stesse nel proprio account utente normale con regolari privilegi non di sistema. Detto questo, non fa alcuna differenza se forzano il caricamento di una libreria infetta o eseguono direttamente un eseguibile infetto. Non otterresti assolutamente nulla se quella variabile di ambiente non potesse essere sovrascritta dagli utenti.
PS: Ci sono anche eseguibili che hanno il setuid o setgid flag impostato, il che significa che non funzioneranno come l'utente / gruppo di colui che li gestisce, ma di colui che li possiede . Ad esempio l' sudo
eseguibile è di proprietà di root e ha il flag setuid impostato, il che significa che viene sempre eseguito come root quando eseguito. Per motivi di sicurezza, la $LD_LIBRARY_PATH
variabile viene ignorata dagli eseguibili con uno dei flag setuid / setgid impostati per assicurarsi che l'utente normale non possa eseguire un eseguibile in esecuzione con privilegi di root per caricare librerie arbitrarie.
(Grazie a @Rinzwind per averlo segnalato!)