soporte requisitos hat caracteristicas c linux security centos redhat

requisitos - Reparación manual de la vulnerabilidad de Ghost en el servidor heredado



red hat linux (1)

Tengo un servidor de Redhat ES 3.x heredado (que no puedo instalar después debido a limitaciones en una aplicación antigua no compatible) y estoy intentando parchear manualmente glibc para la vulnerabilidad de Ghost.

Según el análisis de Qualys ( http://www.openwall.com/lists/oss-security/2015/01/27/9 ), parece que debería ser fácil modificar la fuente de glib para manejar la pila / pila problema de desbordamiento Pero me gustaría tener algunos ojos más en mi procedimiento para ver si me perdí algo, etc.

Esto es lo que hice. Primero construí y preparé el árbol fuente de glib del SRPM:

rpm -ivh glibc-2.3.2-95.50.src.rpm rpmbuild -bp /usr/src/redhat/SPECS/glibc.spec cd /usr/src/redhat/BUILD cp -av glibc-2.3.2-200309260658 glibc-org cd glibc-2.3.2-200309260658

A continuación, edité nss / digits_dots.c principalmente en base a este párrafo del artículo anterior de Qalys:

Las líneas 121-125 preparan punteros para almacenar cuatro (4) entidades distintas en el búfer: host_addr, h_addr_ptrs, h_alias_ptr y hostname. El tamaño de (* h_alias_ptr) - el tamaño de un puntero de char - no se encuentra en el cálculo de size_needed.

vi nss/digits_dots.c I edited these two statements: 105: size_needed = (sizeof (*host_addr) + sizeof (*h_addr_ptrs) + strlen (name) + 1); 277: size_needed = (sizeof (*host_addr) + sizeof (*h_addr_ptrs) + strlen (name) + 1); to this: 105: size_needed = (sizeof (*host_addr) + sizeof (*h_addr_ptrs) + strlen (name) + sizeof (*h_alias_ptr) + 1); 277: size_needed = (sizeof (*host_addr) + sizeof (*h_addr_ptrs) + strlen (name) + sizeof (*h_alias_ptr) + 1);

Luego, creé un archivo de parche + actualicé el archivo de especificación para incluir mis parches + binarios construidos:

cd /usr/src/redhat/BUILD diff -Npru glibc-org glibc-2.3.2-200309260658 > glibc-digit_dots-ghost.patch cp glibc-digit_dots-ghost.patch ../SOURCES/ cd /usr/src/redhat/SPECS vi glibc.spec rpmbuild -ba glibc.spec

Por último, actualicé glibc usando los nuevos binarios (RPM):

cd /usr/src/redhat/RPMS/i386 rpm -Uvh --nodeps glibc-2.3.2-95.51.i386.rpm glibc-devel-2.3.2-95.51.i386.rpm glibc-profile-2.3.2-95.51.i386.rpm glibc-utils-2.3.2-95.51.i386.rpm glibc-common-2.3.2-95.51.i386.rpm glibc-headers-2.3.2-95.51.i386.rpm

Después de reiniciar el servidor, volví a ejecutar el probador fantasma ( https://webshare.uchicago.edu/orgs/ITServices/itsec/Downloads/GHOST.c ).

Esta vez obtuve "no debería suceder" en lugar de "vulnerable", lo que supongo que es bueno. Pero esperaba ser "no vulnerable". ¿Perdí algo, o es solo que mi solución es diferente de la solución oficial en las distribuciones admitidas?


He estado buscando un parche similar para la versión anterior de Fedora ... Encontré esta sesión de preguntas y respuestas en ServerFault, que trata sobre parches de Debian Lenny más antiguo:

https://serverfault.com/questions/662971/how-to-patch-cve-2015-0235-ghost-on-debian-lenny-and-squeeze

En una de las respuestas, se vinculan al parche glibc oficial, que muestra varias ediciones adicionales a las tuyas. Probablemente sea el *status = NSS_STATUS_NOTFOUND; faltante *status = NSS_STATUS_NOTFOUND; eso está entrando en el estado "no debería suceder".

¡Espero que ayude! (Lo siento, no tengo suficientes puntos Rep para votar su pregunta ...)