Auditoría del código fuente

1

Tengo una pregunta relacionada con la revisión del código fuente de los paquetes de Linux.

Descargué un paquete de Ubuntu, digamos samba , pensé en revisar el código fuente de samba para buscar vulnerabilidades de seguridad.

Usé flaw finder para la revisión del código del paquete samba .

Flaw finder generó un informe con muchas vulnerabilidades.

Por ejemplo, hubo una vulnerabilidad con respecto a strcpy que dice usar strlcpy o strncpy en lugar de strcpy como se muestra a continuación.

httpd-2.4.25/modules/aaa/mod_authn_socache.c:276:9: [4] 
  (buffer) strcpy: Does not check for buffer overflows when copying to destination. 
   Consider using strncpy or strlcpy (warning, strncpy is easily misused).

strcpy(new_context, r->server->server_hostname);
  1. El punto aquí es que si la función strcpy es insegura o no. Si es inseguro, ¿por qué la comunidad pública de Ubuntu no ha solucionado esta debilidad en sus paquetes más recientes, que es tan fácil de rastrear con una herramienta de código abierto?

  2. Si queremos asegurar esta función strcpy o el código de samba en sí, ¿cuáles son las opciones?

  3. Disculpe a todos, erróneamente copié el código de apache y mencioné samba.

  4. Hay un punto más sobre esto. He descargado los últimos paquetes de samba y apache del sitio web de Ubuntu y luego usé el buscador de fallas. Por favor, necesito sus sugerencias sobre esto. Si la comunidad de Ubuntu aún no ha corregido estas debilidades de seguridad en sus paquetes más recientes, ¿debería preocuparme por estas debilidades de seguridad o no?

pregunta infosec 18.09.2017 - 11:52
fuente

2 respuestas

7
  

Por ejemplo, hubo una vulnerabilidad con respecto a strcpy ...

flawfinder no reporta vulnerabilidades. Para citar desde la descripción del programa :

  

... examina el código fuente de C / C ++ e informa de posibles debilidades de seguridad ("fallas") ordenadas por nivel de riesgo.

Por lo tanto, flawfinder no encuentra vulnerabilidades, pero solo muestra partes del programa que parecen ser un problema. Esto incluye el uso de funciones que a menudo se usan de manera incorrecta. Para interpretar el resultado, determine el riesgo real y solucione los problemas potenciales, se requiere una comprensión más profunda del programa analizado.

Para llegar a sus preguntas específicas:

  

Para eso usé el buscador de fallas para la revisión del código del paquete samba.
  ...
  httpd-2.4.25 / modules / aaa / mod_authn_socache.c: 276: 9: [4] (buffer) strcpy

Parece que has analizado el servidor web Apache y no samba.

  

El punto aquí es que si la función de Strcpy es insegura o no ??

Cuando mirando el contexto real verá con suficiente comprensión de la programación que asigna suficiente memoria directamente en la línea antes de esta clave, es decir, esto no es realmente un problema.

  

Y si queremos asegurar esta función de Strcpy o el código de samba, ¿cuáles son las opciones?

Las opciones son

  • Use el código fuente correcto en primer lugar. Si desea auditar samba, tome el código fuente para samba y no Apache httpd.
  • Obtenga una comprensión más profunda de lo que está haciendo el código.
  • Determine cuál es realmente el riesgo del problema.
  • Si realmente es un problema, compruebe si esto ya se solucionó en sentido ascendente y no se solucionó en la versión de distribución que utiliza.
  • Solucione el problema sin introducir nuevos errores y envíe una solución a los desarrolladores.
respondido por el Steffen Ullrich 18.09.2017 - 13:04
fuente
1

Existe la posibilidad de un desbordamiento de búfer cuando se utiliza la función strcpy. Sin embargo, esto solo ocurrirá si se usa incorrectamente. Cada llamada a esta función debe ser considerada en su propio contexto. La herramienta que está utilizando no puede discernir este contexto, por lo que solo le dará una advertencia genérica para el uso inseguro de la función.

Este ejemplo en particular puede estar usando un 'server_hostname' desinfectado anterior y puede garantizar que no habrá un desbordamiento de búfer.

Si realmente desea cambiar esto, considere implementar sus sugerencias, tenga cuidado, ya que la API para strcpy y strlcpy son diferentes. Consulte este artículo para obtener una especificación detallada: enlace

Utilice solo la herramienta de inspección de fuente como guía. Considérelo como un diagnóstico automático, es decir, la herramienta solo lo señala en la dirección general de una falla potencial, necesita hacer el trabajo de la pierna y realizar diagnósticos adicionales para comprender completamente el problema.

    
respondido por el Trickycm 18.09.2017 - 12:21
fuente

Lea otras preguntas en las etiquetas