In questo talk sulla separazione dei privilegi, Theo de Raadt spiega che ntpd di OpenBSD ha un processo master che chiama settimeofday()
, un processo DNS responsabile per l'interrogazione dei server DNS e un processo del protocollo NTP che è responsabile della comunicazione di UDP ai server NTP. Ha questo da dire sul processo DNS:
The other thing we've got is a separate DNS servicer process, cause we wanted to be able to do DNS, but we didn't want the master process to do it because DNS libraries sometimes have bugs, and we didn't want the internet speaker to do it because... it's... it just didn't make sense.
Supponiamo che l'impegno non esista (questo design lo precede, come ho capito io). Ovviamente questo design è piuttosto inutile da solo, come se il servizio di rete fosse compromesso e l'autore dell'attacco sia root sul sistema. Di conseguenza, il processo principale imposterà entrambi i sottoprocessi, che porteranno immediatamente i privilegi a nobody
o qualcosa del genere. In questo modo, se c'è un problema di sicurezza nella libreria DNS o nel codice NTP, l'autore dell'attacco non ha accesso in scrittura al file di sistema, alle home directory, ecc.
Tutto ciò ha senso per me. Tuttavia, ciò che non capisco è il motivo per cui la separazione tra i processi DNS e UDP è utile. Non importa quale sia stato compromesso; l'autore dell'attacco è in esecuzione come lo stesso utente in entrambi i casi. Puoi inserire il processo DNS, ad es. un nobody2
utente, ma anche in questo caso, nobody2
sarà altrettanto non privilegiato di nobody
.
Con il pegno, il vantaggio è ovvio poiché ad es. il processo DNS può impegnarsi a fare solo query DNS, il che sarebbe dannatamente inutile per un utente malintenzionato. Tuttavia, supponiamo che questo impegno non sia un fattore da quando questo design è stato introdotto prima dell'impegno.
Ci sono dei vantaggi per la sicurezza del design ntpd a tre processi che mi manca? O era solo una decisione progettuale non correlata alla sicurezza (forse considerando la possibilità di un futuro sistema simile a un pegno)?