Esistono metodi per verificare ciò che si sta effettivamente eseguendo da uno script bash?
Di 'la tua script bash sta chiamando diversi comandi (per esempio: tar
, mail
, scp
, mysqldump
) e si è disposti a fare in modo che tar
sia il reale, vero tar
, che è determinabile dal root
utente ne sia il proprietario del file e la directory principale e l'unico con i permessi di scrittura e non alcuni /tmp/surprise/tar
con www-data
o apache2
essendo il proprietario.
Certo che conosco PATH
e l'ambiente, sono curioso di sapere se questo può essere verificato ulteriormente da uno script bash in esecuzione e, in caso affermativo, come esattamente?
Esempio: (pseudo-codice)
tarfile=$(which tar)
isroot=$(ls -l "$tarfile") | grep "root root"
#and so on...
which
non dire correttamente cosa tar
farà, come ha risposto Xhienne, ls
potrebbe essere hackerato per restituire informazioni false sui file, se presenti. Inoltre grep
potrebbe essere hackerato per restituire informazioni false; ciò potrebbe essere evitato usando invece la corrispondenza della shell, ma la shell potrebbe essere hackerata. E la shell potrebbe essere hackerata per dare risultati errati type
in primo luogo - o sostituita interamente poiché la sostituibilità della shell è stata un'importante innovazione di Unix rispetto ai sistemi operativi di 50 anni. Vedi l'indirizzo di Turing del 1984 di Ken Thompson. Sono le tartarughe fino in fondo.
TE
) - che ha un database con firme (cioè più ampio di un checksum MD5. Quando TE è attivo E un file è nel database è possibile scegliere se il programma è in esecuzione - o avverte solo che non corrispondeva al database. Inoltre, ci sono altre due impostazioni: TEP
(percorso di esecuzione sicuro) e TLP
(percorso di biblioteca fidato). Solo i programmi in TEP possono essere eseguiti e le librerie possono essere caricate solo con la directory è inclusa in TLP. In Linux I c'è qualcosa chiamato 'AppArmor' che può esserti d'aiuto