Quali sono alcune vulnerabilità delle variabili di ambiente (su qualsiasi piattaforma)?

4

Sto scrivendo una piccola applicazione Python multipiattaforma (un gestore di pacchetti da utilizzare internamente dalla mia corp), e sto pensando di usare qualcosa di simile a questa risposta su Stack Overflow per verificare i privilegi di amministratore / root. Ho notato che l'autore menziona le vulnerabilità con le variabili di ambiente.

Non mi sorprende che le variabili di ambiente siano vulnerabili agli overflow, ecc. e che probabilmente rappresenterebbero una superficie di attacco significativa. Potrei avere alcuni esempi specifici di attacchi contro di loro, specialmente su cosa potrebbe essere esposta la mia applicazione se si basa su di essi? Sia gli esempi di WinNT che quelli di Linux sono i benvenuti.

(Inoltre - per varie ragioni non possiamo usare le soluzioni di gestione dei pacchetti esistenti come Nuget / APT. Manteniamo la nostra distribuzione di software interno e scrivendo una piccola soluzione specializzata è più facile, specialmente per il targeting di più piattaforme)

    
posta nerflad 09.04.2016 - 03:52
fonte

1 risposta

3

Ci sono i soliti rischi associati alla fiducia esplicita o implicita in qualcosa che viene dall'esterno e quindi può essere controllata dall'attaccante. E c'è il rischio che le variabili ambientali offrano una visibilità limitata che non fanno sempre. Alcuni esempi:

  • Variabili implicite nell'ambiente di fiducia come PATH, LD_LIBRARY_PATH, PERL5LIB o simili possono portare a un'esecuzione indesiderata del codice perché queste variabili decidono dove cercare programmi e librerie. Variabili simili come IFS decidono come interpretare le informazioni fornite al programma. E a volte il problema può essere qualsiasi variabile con contenuti dannosi, come la vulnerabilità Shellshock . Ecco perché i programmi che usano privilegi elevati (come sudo) dovrebbero rimuovere o disinfettare tutte le variabili d'ambiente quando vengono eseguite da un utente non privilegiato. E i programmi che impostano le variabili d'ambiente (come il webserver con l'interfaccia CGI) dovrebbero prestare molta attenzione a quali possibili informazioni controllate dagli hacker inseriscono in queste variabili.
  • Non dovresti usare le variabili di ambiente per trasmettere informazioni sensibili (come le password) da un genitore ai processi figli. A seconda del sistema operativo, altri utenti del sistema potrebbero vedere il contenuto delle variabili di ambiente e quindi acquisire queste informazioni sensibili.

Quindi le regole quando si usano le variabili d'ambiente sono:

  • Non fidarti mai del contenuto di queste variabili, né esplicite né implicite. Ciò significa rimuovere o disinfettare le variabili, specialmente quando le variabili possono essere impostate da utenti con un privilegio diverso da quello in esecuzione.
  • Non inserire mai informazioni sensibili in variabili d'ambiente perché altri utenti potrebbero leggerle.
  • Se imposti queste variabili con dati che non hai generato completamente te stesso (ad esempio, un possibile attaccante controllato), fai molta attenzione e disinfetti tutto per disattivarlo.
risposta data 09.04.2016 - 08:25
fonte

Leggi altre domande sui tag