Non sei proprio sicuro di cosa stai chiedendo. Quando esegui programmi, funzionano come te. Puoi su
per eseguirli come un altro utente, ma devi prima diventare l'altro utente (ovvero devi conoscere la loro password).
Penso che lo scenario che stai descrivendo sia un file creato dall'utente victim
con le seguenti autorizzazioni:
-rwxrwxrwx 1 victim victim exec_file
e vuoi user
per essere in grado di eseguire il file e farlo funzionare come victim
.
victim
potrebbe usare setuid
per impostare il bit speciale dell'eseguibile in questo modo:
victim$ chmod u+s exec_file
victim$ ls
-rwsrwxrwx 1 victim victim exec_file
Ora quando user
esegue il file, verrà eseguito come victim
. Questa non è una vulnerabilità o un attacco poiché victim
lo ha impostato esplicitamente in questo modo.
Potresti pensare che quanto segue funzionerebbe:
user$ ls
-rwxrwxrwx 1 user user exec_file
user$ chmod u+s exec_file
user$ chown victim exec_file
user$ ./execfile # I'm victim now, right?
ma linux ti impedirà di eseguire il chown
a meno che tu non lo abbia sudo
, ... ma se hai già sudo
di poteri, non si tratta di un attacco.
La cosa più vicina che posso pensare di fare di questo un vero attacco è se più utenti eseguono questo programma regolarmente, e hai permessi di scrittura su di esso, quindi puoi sostituirlo con il tuo codice e aspettare il proprietario (o chiunque altro) per tornare indietro e eseguirlo. Ora qualcun altro sta eseguendo il tuo codice malevolo come se stessi. In generale, una cattiva idea è dare agli utenti il permesso di scrittura sui file che altri utenti eseguiranno. Molto meglio avere questo tipo:
-rwxr-xr-x 1 user user exec_file
o anche meglio:
-rwxr-xr-x 1 root root exec_file