Comprobar parches CVE en Linux

Introducción

Hoy en día los sistemas operativos de software libre están siendo actualizados a menudo con parches de seguridad. A menudo necesitamos saber aquellos fallos de seguridad que han sido parcheados y estos códigos identificativos son los llamados CVE (Common Vulnerabilities and Exposures).

Existen distintas bases de datos actualizadas donde van clasificando estos tipos de vulnerabilidades como por ejemplo:

Y por ejemplo para las distribuciones que se suelen usar más:

Parches CVE en Ubuntu y Debian

La información que necesitamos la podemos encontrar en la siguiente ruta:

/usr/share/doc/$NOMBRE-DEL-PAQUETE/changelog.Debian.gz

Solo tenemos que sustituir $NOMBRE-DEL-PAQUETE por el paquete que estemos buscando. Por ejemplo en este caso vamos a poner que nos abra los parches de seguridad sobre el paquete «nginx».

less /usr/share/doc/nginx/changelog.Debian.gz

La salida del comando sería

nginx (1.4.6-1ubuntu3.2) trusty-proposed; urgency=medium
* d/modules/nginx-http-push: Apply upstream bugfix. (LP: #1216817)
 * src/ngx_http_push_module_setup.c: Modify push module code with
 upstream changes to fix an issue with initialization when using
 `fastcgi_cache` or `proxy_cache`.
 * tests/nginx-cachemanager.conf: (new file) Include upstream change
 of adding an nginx-cachemanager.conf file to the tests.
-- Thomas Ward <teward@ubuntu.com> Mon, 09 Feb 2015 12:08:50 -0500
nginx (1.4.6-1ubuntu3.1) trusty-security; urgency=medium
* SECURITY UPDATE: incorrect cached SSL session reuse (LP: #1370478)
 - debian/patches/CVE-2014-3616.patch: include hash of certificate in
 session id context in src/event/ngx_event_openssl.c.
 - CVE-2014-3616
-- Marc Deslauriers <marc.deslauriers@ubuntu.com> Wed, 17 Sep 2014 08:56:46 -0400
...

Recordamos que en el caso de que el comando less no nos deje ver los archivos comprimidos, tenemos algunos que nos lo permiten como son el zcat y zless. Nos harán el mismo trabajo y podemos ver los logs detenidamente.

Ahora bien si lo que queremos es buscar si una vulnerabilidad está parcheada este sería nuestro comando:

zgrep -i $IDENTIFICADOR-CVE $RUTA_CHANGELOG

En nuestro caso seguimos con el mismo ejemplo anterior sobre el paquete nginx:

zgrep -i CVE-2014-3616 /usr/share/doc/nginx/changelog.Debian.gz

Este comando nos permite buscar en el fichero changelog.Debian.gz de nginx ignorando las mayúsculas y minúsculas de lo que buscamos.

Parches CVE Redhat y Cent0s

Al contrario que las distribuciones DEBIAN aquí podemos usar un comando directamente en vez de tener que mirar los changelogs del paquete instalado. Con el siguiente comando nos dará todos los cambios ocurrido en dicho paquete.

rpm -q --changelog NOMBREPAQUETE

Al ser un fichero generalmente grande y descriptivo tenemos que apoyarnos en comandos que nos permitan la paginación o centrarnos en el CVE que queremos ver si está solventado. Para ello nos apoyaremos en los comandos «more», «less» y «grep».

#Paginando el fichero
rpm -q --changelog nginx | more

#Leyendo el fichero
rpm -q --changelog nginx | less

#Buscando el CVE concreto, ignorando las mayúsculas y minúsculas
rpm -q --changelog nginx | grep -i CVE-2014-3616

El último punto que vamos a tratar es a la hora de revisar los cambios que tiene un paquete RPM. Imaginad por un momento que nos hemos descargado un paquete RPM y queremos ver los cambios de seguridad que han tenido. Para ello tenemos el siguiente comando:

rpm -qp --changelog rsnapshot-1.3.0-1.noarch.rpm | more

Conclusión

Siempre es importante tener herramientas que nos permitan identificar si nuestros programas paquetizados están solventados los fallos de seguridad. Se recomienda que los sistemas siempre estén actualizados y teniendo una versión con soporte se recibirán actualizaciones periódicamente.

Para aquellos que instalan desde las source es más complicado ya que tienen que estar pendiente con las nuevas versiones que van saliendo de cada software que se tiene.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *