Skip to content

Un binario tiene capabilities de archivo en lugar del bit setuid: ¿es por eso inofensivo?

Respuesta breve

No. Las capabilities de archivo (con setcap) dividen el poder de root en unidades, así que un programa comprometido con una sola capability causa menos daño que uno setuid root, que obtiene todas. Pero menos no es nada: CAP_SYS_ADMIN está sobrecargada y la página man aconseja evitarla; revisa qué capability se concedió y por qué.

Muchos ingenieros ven «setcap en vez de setuid» como una solución que zanja el asunto. Una buena respuesta reconoce la mejora y aun así revisa la capability concreta.

Qué cambian las capabilities

Las man-pages de Linux explican que las capabilities dividen los privilegios tradicionalmente asociados al superusuario en unidades distintas que se activan y desactivan de forma independiente. El objetivo declarado: si se compromete un programa con una o más capabilities, el daño posible es menor que con el mismo programa como root completo. Desde Linux 2.6.24 se pueden asociar capabilities a ejecutables mediante atributos extendidos (setcap), alternativa al bit setuid. Un proceso que ejecuta ese archivo obtiene solo las capabilities concedidas, no todas como un programa setuid root sin capabilities de archivo.

Por qué no es inofensivo

No todas pesan lo mismo. CAP_NET_BIND_SERVICE permite a un programa sin privilegios escuchar en puertos menores de 1024: una concesión estrecha y razonable. CAP_SYS_ADMIN es distinta: la página man advierte que no se elija si se puede evitar, porque una gran parte de las comprobaciones se asocian a ella. Un binario que la tenga, o un fallo en un programa con capabilities, puede seguir siendo vía de escalada; los pentesters los enumeran (getcap -r /).

Qué buscan los entrevistadores

«Menor radio de impacto, no cero»: mínimo privilegio aplicado por capability.

Posibles preguntas de seguimiento

  • ¿Cómo auditarías un host Linux en busca de binarios con capabilities de archivo?
  • ¿Por qué CAP_SYS_ADMIN se considera casi root y qué usar en su lugar?
  • ¿Cuándo elegirías CAP_NET_BIND_SERVICE en lugar de ejecutar un servicio como root?

Fuentes

Consigue 100 preguntas de entrevista de ciberseguridad + respuestas

Déjanos tu correo y te enviaremos el pack en PDF gratuito y el mazo de flashcards.

Sin spam. Cancela tu suscripción cuando quieras.