¿Es digno de confianza SELinux, a pesar de que fue desarrollado por la NSA?

Para responder a su pregunta, es importante comprender qué es SELinux, cómo se implementa y cómo afecta la seguridad del sistema.

Lo primero que hay que entender es que SELinux se implementa utilizando el Marco del Módulo de Seguridad de Linux (LSM). El marco LSM hasta hace muy poco se ha utilizado para proporcionar restricciones adicionales en el sistema por encima de lo que ya se proporciona a través del sistema de control de acceso discrecional (DAC). El sistema DAC son sus ACL, UID / GID y bits de permiso. La idea detrás de LSM es que era necesario proporcionar restricciones de acceso más allá de lo que está representado en DAC. Entonces, la premisa número 1 es que los LSM solo pueden / deberían restringir aún más los permisos y, a menos que algo esté mal con la ubicación del gancho en el núcleo, ese debería ser el caso.

La razón por la cual es así es por la forma en que se realizan las comprobaciones de acceso en el núcleo. Para que se otorgue cualquier permiso, debe pasar inicialmente la verificación de control de acceso DAC. A menudo, las personas se quejan de los problemas de SELinux y, sin embargo, no ven las denegaciones de AVC porque, para empezar, ni siquiera están pasando la verificación DAC. Esto significa que SELinux nunca debería otorgarle la capacidad de hacer algo que su usuario no pueda hacer. SELinux solo debe tomar lo que su usuario está autorizado a hacer y restringirlo aún más. SELinux no utiliza la autorización del usuario para determinar el acceso a los recursos. Basa sus decisiones en etiquetas de seguridad asignadas a procesos y recursos en el sistema y luego las compara con un conjunto de reglas en la política de seguridad. Si observa el código del kernel, verá que la verificación de datos se realiza primero, seguida de una llamada a una función security_ *. Las funciones security_ * son la api para el marco LSM y, bajo el capó, cada módulo implementa sus propias versiones de los ganchos.

Ahora, esto no quiere decir que no haya habido errores que no hayan violado este principio. Aquí hay dos ejemplos de ellos. En la historia del desarrollo de SELinux que conozco (y he estado involucrado durante más de 7 años en este punto) solo ha habido dos errores que han causado un problema. El primero nunca llegó a ser un núcleo liberado, pero se comprometió en un núcleo de desarrollo fue una comparación de euid contra uid 0. Se suponía que era una comparación de equivalencia y era un error tipográfico de una asignación (== vs =). Esto hizo que, cuando se realizó el control, convirtiera euid en uid 0 en lugar de compararlo. Fue encontrado y corregido antes de que se lanzara el núcleo con el error. El segundo error estaba en la lógica de cómo manejamos mmap_minaddr. Debido a la forma en que se establecieron las verificaciones en el código, la verificación de SELinux anuló la configuración del núcleo si se otorgaron ciertos permisos de SELinux. El error aquí fue que SELinux violó el propósito de los LSM. El marco LSM solo está ahí para restringir aún más los permisos, no para otorgarlos. Esto fue una violación de este director. Que yo sepa, estos son los únicos dos errores en SELinux que han resultado en un privilegio.

Por eso, desde una perspectiva de diseño, está bien. Sin embargo, desde la perspectiva del código, ha habido cientos de personas que han estado involucradas en el código SELinux a través de su desarrollo y mantenimiento.
Editar

En primer lugar, gracias por A2A.
Para la respuesta, sí lo es. Y la razón principal de esto es que no importa quién lo desarrolló en primer lugar, es de código abierto. Sabemos cuál es el código, podemos auditarlo y, en el peor de los casos, encontrar un problema, solucionarlo o deshacerlo. En segundo lugar, aunque fue algo iniciado por la NSA, la comunidad lo ha manejado desde entonces. Por lo tanto, tratarlo como un software propietario es absurdo. La NSA ciertamente tiene su forma de sabotear proyectos de código abierto, pero en realidad SELinux no es diferente a ningún otro proyecto. Por lo tanto, no debería ser lo único en lo que confiamos, ya que todo el software tiene errores, pero tampoco tiene sentido evitarlo o no usarlo.

Gracias por A2A 🙂

Bueno, no puedo decir la respuesta firme. Pero déjame poner algo de información aquí. Vea el siguiente video. No se trata de SELinux sino de Linux. La misma lógica se aplica a SELinux también.

SELinux hasta ahora es conocido por su madurez para Red Hat Enterprise Linux y lo siento como un buen defensor.

Tiene errores, pocos conocidos y podrían ser (¡supongo que aquí!) Pocos desconocidos. Estos errores pueden actuar como puertas traseras. Estoy de acuerdo con la respuesta de Paul Reiber, pero hay muchas opiniones al respecto . Todos eran vulnerables a eso. Incluso Facebook lo arregló cinco o seis días antes de que las noticias se hicieran públicas (lo escuché, aunque podría no ser información auténtica) y Google monitoreó mucho su tráfico, y también encontraron el problema antes de que las noticias se hicieran públicas. Hay tantos ejemplos que puedo contar.

Así que creo que no se implementan puertas traseras a sabiendas. Las puertas traseras son principalmente los hacks que ocurren debido a los errores conocidos / desconocidos.

¿Qué pasa si aún no se ha descubierto la hemorragia? Ver Heartbleed

¡Lo mismo se aplica para SELinux también! El código está abierto, de modo que todos tienen la oportunidad de examinarlo y descubrir errores y corregirlos / informarlos. Casi todo el mundo usa SELinux y aquellos que tienen conocimiento de la comprensión del código deben investigarlo y devolverlo a la comunidad para mejorar. 🙂

No. ¿Recuerdas los latidos del corazón? El hecho de que el código sea estándar abierto y parte de una solución de seguridad no significa que sea seguro.

¿También puedes confiar en los compiladores? …no. http://cm.bell-labs.com/who/ken/

More Interesting

¿Qué problemas de seguridad surgen en un entorno de tiempo compartido? ¿Puede una máquina de tiempo compartido tener el mismo grado de seguridad que una máquina dedicada?

¿De qué manera los principales motores de búsqueda mantienen en secreto su algoritmo de clasificación?

¿Es una buena idea que una compañía de informática independiente realice un análisis manual del registro y los archivos de Microsoft Windows una vez al mes para eliminar los virus?

Cómo proteger con contraseña un archivo o carpeta de mí mismo y enviar la contraseña a alguien

Para un desarrollador web junior, ¿cuál es el mejor cambio de carrera que puede hacer, seguridad cibernética o aprendizaje automático?

¿Cómo haría un proveedor para ofrecer créditos de CPE para CISSP o servicios de información relacionados?

Cómo recuperar mi cuenta de Gmail pirateada

¿Kali Linux tiene RDP disponible? ¿Cómo edito esa configuración si es así?

¿Cómo se puede hacer un cambio profesional en la seguridad de la información sin un título universitario técnico?

¿Cuáles son los objetivos de la detección de amenazas cibernéticas?

¿1Password agregará una opción para eliminar el llavero / bóveda después de X intentos fallidos?

¿Qué tan bueno es avg antivirus?

¿Cuáles son las imágenes de entrada o instalación rotas más comúnmente para malware en puntos finales?

¿Cuál es el trabajo de un arquitecto de seguridad?

¿Qué sucede si la empresa donde tengo los datos de mi tarjeta de débito es pirateada y los hackers roban dinero de mi cuenta? ¿Alguien compensará mi pérdida?