Estos archivos es un parche rápido para el código fuente de alguna aplicación.
Corrigen algún error y hacen que sea mas fácil repararlo.
El beneficio de estos archivos es que nos dicen exactamente donde esta el error o los horrores

Un ejemplo de esto lo explico aqui
ntpd stack-based buffer-overflow vulnerability
Segun podremos leer en FreeBSD-SA-09:11.ntpd.asc esta vulnerabilidad
afecta a las aplicaciones ntpd que tengan activado el Autokey usando el modelo de autenticacion.
El parche de este bug esta aqui http://security.FreeBSD.org/patches/SA-09:11/ntpd.patch
Si lo vemos con detalle analizamos parte del código:
Código
Index: contrib/ntp/ntpd/ntp_crypto.c
===================================================================
--- contrib/ntp/ntpd/ntp_crypto.c (revision 192562)
+++ contrib/ntp/ntpd/ntp_crypto.c (working copy)
@@ -570,7 +570,7 @@
peer->issuer = emalloc(vallen + 1);
strcpy(peer->issuer, peer->subject);
temp32 = (fstamp >> 16) & 0xffff;
- sprintf(statstr,
+ snprintf(statstr, NTP_MAXSTRLEN,
"flags 0x%x host %s signature %s", fstamp,
peer->subject, OBJ_nid2ln(temp32));
record_crypto_stats(&peer->srcadr, statstr);
Si vemos el resto del parche solo se esta protegiendo a la variable statstr en la cual se escribia anteriormente
con sprintf y fue cambiado por snprintf dicha función si vemos la ayuda controla la cantidad de caracteres
que se escriben sobre ella.
Si vemos el archivo contrib/ntp/ntpd/ntp_crypto.c la variable esta declarada locamente como:
Código
char statstr[NTP_MAXSTRLEN];
Tiene tamaño fijo y las lineas de código que pueden escribir mas datos de los debidos son los sprintf que
contienen %s en la cadena de formato. Y si vemos el código con detenimiento
veremos que solo existen 5 sprintf que pueden realizar esto.
Ahora habría que ver con detenimiento cual de esas variables cadena son mandadas por el cliente
y ya tendríamos manera de controlar a la maquina remota.
Saludos










Autor





En línea


