Dato che è un requisito frequente per consentire agli utenti non privilegiati l'accesso limitato alle funzioni privilegiate: Talvolta gli amministratori di sistema Jobbing lo forniscono sotto forma di script di shell, che vengono quindi richiamati tramite un wrapper setuid
, come così:
int main()
{
setuid( 0 );
system( "/path/to/script.sh" );
return 0;
}
(Le prove per questa asserzione possono essere trovate cercando setuid script non funziona sul tuo motore di ricerca preferito o su overflow dello stack . No, non dovrebbero farlo, ma lo sono. Quando i consigli sulla sicurezza sono troppo difficili, o troppo oscuri, per gli amministratori di sistema da seguire, è necessaria un'altra soluzione.)
Si noti che questo non può essere semplicemente ignoranza. Chi si aspetterebbe che uno script contenente solo questo sarebbe pericoloso?
#!/bin/bash
kill -HUP $(< /var/run/demonname.pid)
Ovviamente l'intento è chiedere a demonname di rileggere il suo file di configurazione. Non chiama nient'altro che bash built-in (quindi non dovrebbe usare il percorso) e non consulta l'ambiente una sola volta. A mio parere, anche un amministratore di sistema esperto potrebbe essere perdonato per aver pensato che un sottotitoli era OK in questo caso .
Come precedentemente scoperto, Shellshock e (anche senza di esso) la funzione Importa funzione da ambiente (FIE) di bash, pongono vulnerabilità di escalation dei privilegi.
Supponendo che:
- tali cose esistono nell'installazione, e tu non sai che lo fanno, e
- puoi assumere in modo affidabile che ne verranno creati di nuovi ...
Sarebbe consigliabile:
- scaricare bash e usare qualcos'altro per sempre e sempre?
- patch bash per estrarre completamente la FIE (l'opzione "nuke from orbit") ?
- patch bash per autorizzare i percorsi completi degli script che sono autorizzati a utilizzare questa funzione?
- patch
system
epopen
per cancellare l'ambiente per impostazione predefinita se eseguito come root? (Le persone non dovrebbero usare queste funzioni). - Invia l'amministratore ogni volta che qualcuno chiama
system
come utente root? O avvia uno script di shell come root? - o cosa?
In altre parole, FIE è utilizzato nella produzione per scopi diversi dallo sfruttamento di sistemi? Se è così possiamo autorizzare tali usi e vietarlo ovunque? Se no, non possiamo semplicemente strappare la funzionalità ?