¿Cómo verificar que setuid sea correcto, seguro y de prueba?

1

He estado buscando en las vulnerabilidades de setuid. Particularmente, estoy buscando en OS X (10.5+) pero también se aplican otros distos modernos * nix. Por ejemplo, encontré un archivo suid de escritura mundial instalado por una aplicación de terceros en mi caja de OS X a través de buscar. De acuerdo con la práctica estándar, solo los archivos críticos deben ser suid como chmod y passwd. Mi pregunta es, ¿cómo pruebo este archivo para detectar vulnerabilidades más allá de simplemente desactivarlo? Por ejemplo, pude ver el archivo en sí y hacer que ejecute un comando simple pero no pude hacer que chmod otra cuenta de usuario. ¿Esto significa simplemente que se codificó correctamente o existe una función OS X que ayuda a proteger suid vulns? Cualquier recurso, o correcciones en mis pensamientos, sería excelente. Si conoces una aplicación de terceros * nix insegura * o distribuciones vulnerables a la escalada de privilegios suid para aprender, eso sería doblemente excelente. Gracias.

    
pregunta Richard Belisle 07.09.2012 - 17:11
fuente

2 respuestas

5
  

Según la práctica estándar, solo los archivos críticos

Todos los ejecutables que ejecutes son "críticos", ya que se ejecutan con tu UID y tienen todos tus permisos. Podrían hacer cosas malas a tus archivos, eso es "crítico" para mí. Los ejecutables ejecutados por root son aún más "críticos".

Es común, pero incorrecto, centrarse en los archivos SUID cuando se discuten posibles fallas de seguridad de un sistema Un * x; Todos los ejecutables deben ser considerados. Simplemente hay más formas de corromper un programa SUID.

  

De acuerdo con la práctica estándar, solo los archivos críticos deben ser suid como chmod y passwd.

No, solo ejecutables específicamente diseñados para ejecutarse como SUID.

Escribir un programa SUID es un tema completo, demasiado grande para ser apropiado para una respuesta aquí.

  

Mi pregunta es, ¿cómo pruebo este archivo para detectar vulnerabilidades?

Para realizar una evaluación de vulnerabilidad de un programa, primero debe saber qué propósito tiene, cómo y cuándo debe ejecutarse.

  

Mi pregunta es, ¿cómo pruebo este archivo para detectar vulnerabilidades más allá de simplemente desactivarlo?

¡Usted simplemente no "apaga" partes de su sistema solo porque tiene miedo! Un programa es SUID por una razón; si elimina el bit SUID, el sistema podría funcionar mal.

  

Por ejemplo, pude ver el archivo en sí y hacer que ejecute un comando simple, pero no pude cambiarlo a otra cuenta de usuario.

Un programa confiable que puede ser modificado por cualquiera es un problema de seguridad, incluso si no es SUID.

  

Si conoces una tercera parte insegura * nix aplicaciones o distribuciones vulnerables a la escalada de privilegios suid para aprender, eso sería doblemente excelente.

Hay un largo y vergonzoso historial de vulnerabilidades en los programas SUID. Solo buscar "explotar" o "vulnerabilidad" y "suid" devuelve muchos de estos.

    
respondido por el curiousguy 07.09.2012 - 18:41
fuente
3
  

¿Cómo puedo probar este archivo para detectar vulnerabilidades?

Nunca puedes probar que cualquier sistema es seguro. El hecho de que el archivo esté configurado y se pueda escribir por todos los medios por definición es una vulnerabilidad, no importa lo que el archivo actualmente contiene / contiene actualmente.

  

Pude ver el archivo en sí

implica que es un script en lugar de un ejecutable; la mayoría de los shells tienen protecciones incorporadas para ellos evitar la ejecución de otros scripts con la identidad setuid.

Pero que el script se pueda escribir en todo el mundo significa que cualquiera podría escribir algo de código, por ejemplo C, y luego sobrescribir el script setuid con su propio programa que se ejecutará con el privilegio setuid.

    
respondido por el symcbean 07.09.2012 - 17:56
fuente

Lea otras preguntas en las etiquetas