Per determinare in modo definitivo il grado in cui questo potrebbe o potrebbe non essere "un passo prudente", penso che dovresti fare qualche ricerca di sicurezza originale sulle possibili sostituzioni, che includono:
- trattino di Debian
- Ksh di OpenBSD
- Busybox ash
- MirBSD / MirOS mksh
- ... e sicuramente altri
La risposta di Mark suggerisce che almeno OpenBSD ha già ricevuto un controllo di sicurezza, ma non sono sicuro della portata o se ci sono prove a sostegno di ciò (chiaramente, non hanno applicato alcun controllo a una pietra miliare della sicurezza delle comunicazioni (OpenSSL ) fino a poco tempo fa quando lo hanno biforcato in LibreSSL). D'altra parte, è abbastanza chiaro per me che nessuno si è preso la briga di leggere la fonte di Bash per sicurezza fino a poco tempo fa, o "shellshock" sarebbe stato scoperto molto tempo fa; l'intera cosa che "importa la funzione" è un'enorme bandiera rossa che ogni ricercatore di sicurezza esaminerebbe non appena l'hanno visto (e si spera che raccomandi l'intera funzionalità per la rimozione). Ma per gli altri, non è così chiaro.
Ciò che è chiaro, tuttavia, è che tutti i precedenti hanno una superficie di attacco molto più piccola di Bash. Affinché un utente malintenzionato possa assumere il controllo di un programma, deve esserci un canale di input. Ovviamente possono essere cose non ovvie come limiti di risorse, clock di sistema, ecc. Ma sono ancora input; un programma senza alcun input è banalmente non vulnerabile. Il bug di progettazione della sicurezza in Bash è che sta prendendo input potenzialmente non attendibili (i contenuti di variabili di ambiente arbitrarie) e li sottopone ad elaborazione complicata (analisi come codice). D'altra parte, per quanto ne sappia, nessuna delle shell sopra elencate esegue alcuna elaborazione dei contenuti delle variabili di ambiente (eccetto quelle individuali con significato stabilito specificato come LANG
e LC_*
, ENV
, IFS
, PATH
, PS1
, ecc.) o altro input; semplicemente trattano i contenuti come dati astratti che sono passati attraverso.
Quindi, dal punto di vista della progettazione della sicurezza, anche senza audire queste alternative, stimerei che fossero scelte più sicure di Bash. Se questo rimarrà il caso non è chiaro. Certamente Bash sta ricevendo molta nuova attenzione in questo momento, che altre shell hanno meno probabilità di ricevere, quindi potremmo finire con la maggior parte dei problemi di Bash che vengono risolti mentre i problemi in altre shell rimangono sconosciuti. Quindi devi considerare vari fattori, ad esempio se è probabile che tu scelga di mirare individualmente, nel qual caso utilizzare software meno mainstream potrebbe essere una responsabilità.
Personalmente, uso Busybox nella maggior parte dei casi. Se non altro, sia cenere che cruscotto usano circa 1/5 della memoria di bash e si avviano 2-8 volte più velocemente, quindi sono scelte molto pratiche anche da un punto di vista non di sicurezza.