Per quanto riguarda la cosa dell'occhio umano - storicamente gli script di init RC al centro di RHEL e tale, il clone di base "SYS V" init, non era qualcosa che è stato scritto con estrema robustezza in mente, non è come hanno fatto una lavagna progettazione della macchina di stato in là. E non saresti stato in grado di inviare solo patch per la maggior parte delle distro importanti. Se non ci sono specifiche scritte e un design sw reale sul tuo init, scoprirai che le persone hanno paura di cambiarlo.
Tuttavia, l'impatto della fragilità era piuttosto basso, così come le dimensioni delle singole attività. Esegui una sceneggiatura. Esegui il prossimo. Non avere file temporanei. Essere apolidi internamente tranne che per un segnalino corsa che fa andare le cose sia verso il "bersaglio" desiderato, sia verso il contrario.
Non c'erano interfacce tranne il comando init o telinit.
In un corretto unix, init 0 simpy termina init, lasciandoti in un limbo. Linux (per comodità e per facilitare la vita a persone che non leggono un manuale) si era già allontanato dal progetto semplicistico, e sembra che non ci sia mai stata la considerazione (mi dispiace) che il clone di init debba essere una specie di "MIL" -SPEC "qualità.
Ora stiamo avendo la stessa cosa, e di nuovo quelle preoccupazioni non sono le più elevate, ma ora ci vuole una parte molto più grande nell'elaborazione delle attività, nel modo in cui si interfaccia con il kernel, in quanto è accessibile a non root utenti e in quanto elabora l'input al di fuori di quando viene eseguita un'attività di avvio.
Queste sono semplici differenze. Il problema è che, ancora una volta, aspetti come l'irrigidimento o il fallimento dello stato operativo sicuro / fallito non sono considerati elementi fondamentali. Ci sono alcune misure in questa direzione (ad esempio, se risolti automaticamente si respawn se viene eliminato dal traffico malevolo) ma non molto .
Ora lasciamo presumere che il processo di sviluppo e la reattività alle preoccupazioni cambieranno. Quello dovrebbe essere bello. (avendo lavorato con poche alternative non credo che sarebbe successo, dal momento che nessuno degli altri è stato ostile in alcun modo)
Quindi rimaniamo con un problema: la cosa a molti occhi è discutibile.
Nel normale sistema di init, a causa della mancanza di interfacce, il "vettore di attacco" sta ricevendo uno script di init, che solo root può fare.
Poi è permesso fare qualsiasi cosa ritenga necessario, e tu sei alla mercé dell'autore per quanto riguarda il fatto di lasciar andare i privati. Se sa come usare su, sarà su, se non lo fa allora sarà sudo, e così via.
Ma l'unico modo in cui attaccherà il tuo sistema init è se inserisce qualcosa che sovrascrive il binario / script. Non riuscirà nemmeno a "persistere" dentro , dal momento che qualsiasi variabile che esporterebbe verrebbe schiacciata quando verrà eseguito lo script successivo.
La lingua (idealmente, solo POSIX) è al punto in cui si ottiene un buco di secondo per ogni 10 anni, e normalmente nessuno.
E, voglio sottolineare un po '- c'è solo troppo poco per attaccare e nessun modo in cui può ottenere un attacco dopo che il sistema è attivo.
Quelle differenze ci sono. Possono essere motivo di preoccupazione o no. Ma l'argomento della "base di codice condivisa" è per lo più discutibile.
L'argomento per cui ti sei sbarazzato dei brutti wrapper di priv-drop ha due punti di discussione. uno, che quelli sono o design difettoso (nat locale è una cosa) o necessità (ssh) e due, che nel mondo sw abbiamo appreso che per qualsiasi problema relativo alla sicurezza dobbiamo dare la priorità ai nostri peggiori problemi, e piuttosto esagerare risolvendolo che no
Questo non sta succedendo.
In questo momento poche persone sono alla ricerca di exploit, ma non è che questo sia un argomento interessante per i ricercatori del settore. Una volta che ciò accade e si incontra con una base di miliardi di dispositivi installati, che non ottengono patch, sono un po 'preoccupato.
Potremmo avere benefici nel mondo tecnologico. Per le persone che traggono beneficio da qualsiasi cosa i nostri sistemi facciano, ci sono dei benefici nella misura in cui i servizi di riavvio automatico stanno diventando più comuni (perché apparentemente era troppo difficile leggere su daemontools per configurazioni non HA), ma non voglio essere intorno e ho bisogno di giustificare se ripetiamo alcune merde come CodeRed nel nostro init.
Mostrami come chiudere che ora in contrasto con l'impronta di un singolo (!) script di shell eseguito all'avvio. Le contromisure sono diventate un po 'più complicate. E per quanto riguarda il daemon-reexec, mi chiedo ancora perché un zypper ps -s
vedrà ancora in seguito le vecchie parti systemd nella memoria.
Ho saltato il confronto con SMF - che uno degli sviluppatori systemd ha chiamato "Solaris" o alcuni paralleli ad AIX, come la registrazione binaria e SRC.
SMF ha avuto un processo di progettazione molto aperto, inclusivo, ponderato e documentato e penso che siano le grandi differenze. Non ho idea di come sarà mai riparato.