Non sarei d'accordo con questa affermazione, in quanto non c'è nulla sugli script che li rendono intrinsecamente insicuri. Gli script di Bash sono perfettamente sicuri se vengono seguite alcune semplici linee guida:
- Lo script contiene informazioni che altri non dovrebbero essere in grado di visualizzare? Se è così, assicurati che sia leggibile solo dal proprietario.
- Lo script dipende dai dati di input di someWherE? In tal caso, assicurarsi che i dati di input non possano essere contaminati in alcun modo o che i dati contaminati possano essere rilevati e scartati.
- È importante che gli altri provino a eseguire lo script ? Se è così, come per il primo punto, assicurarsi che nessuno possa eseguirlo e preferibilmente non leggerlo. chmod 0700 è generalmente una buona idea per gli script che eseguono funzioni di sistema.
- E i casi in cui ci si vuole uno script per avere un setuid (tramite il suo interprete) sono estremamente rare
I due punti che separano uno script da un programma compilato sarebbe che la fonte è visibile e che un interprete lo esegue. Finché l'interprete non è stato compromesso (come avere un bit setuid su di esso), staresti bene.
Quando si scrivono script per eseguire attività di sistema, errori di battitura e errori generici umani durante la scrittura rappresentano in qualche modo un potenziale errore di sicurezza, ma ciò si verifica anche con programmi compilati (e molte persone tendono a ignora il fatto che i programmi compilati possono anche essere smontati)
Vale la pena notare che nella maggior parte (se non tutti) i sapori di Linux, la maggior parte (se non tutti, in effetti, non può pensare a nessuno che non lo sia) i servizi sono avviati tramite shellscript.
Quando uno script non è leggibile, non è eseguibile. Setuid sugli script non è nemmeno possibile. –