En cuanto a la cosa de los globos oculares: históricamente los guiones de init RC en el núcleo de RHEL y el clon de inicio "SYS V" básico, no era algo que se escribiera con una robustez extrema en mente, no es como lo hicieron en una pizarra. diseño de la máquina de estado allí. Y no habrías podido enviar parches para él en la mayoría de las principales distribuciones. Si no hay ninguna especificación escrita y un diseño real de sw en tu inicio, verás que la gente tiene miedo de cambiarlo.
Sin embargo, el impacto de la fragilidad era bastante bajo, al igual que el tamaño de las tareas individuales. Ejecutar un script. Ejecutar el siguiente. No tengo ningún archivo temporal. Ser apátrida internamente, excepto por un contador de carreras que hace que las cosas vayan hacia el "objetivo" deseado o hacia el opuesto.
No había interfaces excepto el comando init o telinit.
En un unix adecuado, un init 0 simpy termina a init, dejándote en el limbo. Linux (para mayor comodidad y facilidad de uso para las personas que no leen un manual) ya se había alejado del diseño simplista, y parece que nunca se tuvo en cuenta (lo siento) que el clon init debería ser una especie de "MIL -SPEC "calidad.
Ahora estamos teniendo lo mismo, y nuevamente, esas preocupaciones no son las más importantes, pero ahora toma una parte mucho más importante en el procesamiento de las tareas, en la forma en que interactúa con el kernel, en el sentido de que es accesible a usuarios no root. usuarios y en el que procesa la entrada fuera de cuando se realiza una tarea de inicio.
Esas son meras diferencias. El problema es que, de nuevo, aspectos como el endurecimiento o la falla del estado operativo seguro / fallido no se consideran elementos fundamentales. Hay algunas medidas en esa dirección (es decir, si se resuelven, reaparecen automáticamente si el tráfico malicioso las abandona) pero no mucho .
Ahora asumamos que el proceso de desarrollo y la capacidad de respuesta ante las inquietudes cambiarían. Eso sería genial. (después de haber trabajado con algunos en su alternativa, no creo que sucediera, ya que ninguno de los otros ha sido hostil de ninguna manera)
Entonces nos quedamos con un problema: la cosa de muchos globos oculares es cuestionable.
En el sistema de inicio normal, debido a la falta de interfaces, el "vector de ataque" está implementando un script de inicio, que solo la raíz puede hacer.
Luego se le permite hacer lo que considere necesario, y usted está a merced del autor en lo que respecta a la eliminación de privs. Si él sabe cómo usar su, será su, si no lo hace será sudo, y así sucesivamente.
Pero la única forma en que atacará su sistema de inicio es si pone algo allí que sobrescriba el binario / script. Ni siquiera lo "persistirá" dentro , ya que cualquier variable que exportaría se aplastaría cuando se ejecute el siguiente script.
El lenguaje (sh, idealmente, solo POSIX) es hasta el punto en el que obtuvo un segundo agujero por cada 10 años, y normalmente ninguno.
Y, quiero enfatizar eso un poco, simplemente hay muy poco para atacar y no hay forma de que pueda atacarlo después de que el sistema haya terminado.
Esas diferencias están ahí. Pueden ser motivo de preocupación o no. Pero el argumento de "base de código compartido" es en su mayor parte discutible.
El argumento de que se deshace de los envoltorios de priv priv drop tiene dos puntos de discusión. uno, que son malos diseños (nat nat es una cosa) o necesidades (ssh) y dos, que en el mundo británico hemos aprendido que para cualquier problema relacionado con la seguridad debemos priorizarlo entre nuestros peores problemas, y más bien Exagerar resolviéndolo que no.
Esto no está pasando.
En este momento, pocas personas están buscando exploits, pero no es como este es un tema interesante para los investigadores de la sección. Una vez que eso sucede y se reúne con una base de miles de millones de dispositivos instalados que no se están parchando, estoy un poco preocupado.
Podríamos tener beneficios en el mundo de la tecnología. Para las personas que se benefician de lo que sea que hagan nuestros sistemas, hay beneficios en la medida en que el reinicio automático de los servicios se está volviendo más común (porque aparentemente fue demasiado difícil de leer en daemontools para configuraciones que no son de alta disponibilidad), pero no quiero estar cerca Y necesitamos justificar si repetimos alguna mierda como CodeRed en nuestro inicio.
Mostrar cómo apagar ahora a diferencia de la huella de un solo script de shell (!) que se ejecuta en el arranque. La contramedida se ha vuelto un poco más complicada. Y en cuanto a daemon-reexec, todavía me pregunto por qué un zypper ps -s
todavía vería las partes antiguas de systemd en la memoria posteriormente.
He omitido la comparación con SMF, uno de los desarrolladores de systemd llamado "Solaris" o algunos paralelos a AIX, como el registro binario y el SRC.
SMF tuvo un proceso de diseño muy abierto, inclusivo, reflexivo y documentado, y creo que esa es la gran diferencia. No tengo idea de cómo eso será remendado.