Inspirado por un post del excelente blog rm-fr.es de Alejandro García: Comprobar el changelog de un paquete instalado (o a instalar) (RPM|YUM), se me ocurrió demostrar cómo realizar la misma tarea en Debian y derivados.



El changelog es un archivo de log que registra los cambios que se realizan sobre un paquete, ya sean parches de seguridad o correcciones de bugs. Cuando se trata de parches de seguridad generalmente se indica su CVE. Como todo log, se trata de simples archivos en formato de texto plano y suelen ser extensos (pues almacenan el historial de cambios de cada versión de un paquete).

En Debian y derivados, los changelogs quedan almacenados como parte de la documentación de cada paquete instalado, bajo el directorio /usr/share/doc/. Ya que suelen ser archivos de tamaño importante pero altamente comprimible (se trata de texto plano), se almacenan comprimidos en formato GZIP.

De esta forma, si quisiéramos ver el changelog de, por ejemplo, el paquete "exim4", simplemente se puede recurrir a la herramienta zcat para extraer y volcar el archivo:

# zcat /usr/share/doc/exim4/changelog.Debian.gz | less
exim4 (4.89-2+deb9u3) stretch-security; urgency=high

  * Non-maintainer upload by the Security Team.
  * Fix base64d() buffer size (CVE-2018-6789) (Closes: #890000)

 -- Salvatore Bonaccorso <carnil@debian.org>  Sat, 10 Feb 2018 09:26:05 +0100

exim4 (4.89-2+deb9u2) stretch-security; urgency=high

  * Non-maintainer upload by the Security Team.
  * Avoid release of store if there have been later allocations
    (CVE-2017-16943) (Closes: #882648)
  * Chunking: do not treat the first lonely dot special (CVE-2017-16944)
    (Closes: #882671)

 -- Salvatore Bonaccorso <carnil@debian.org>  Tue, 28 Nov 2017 22:58:00 +0100

exim4 (4.89-2+deb9u1) stretch-security; urgency=medium

  * CVE-2017-100369

 --  <jmm@debian.org>  Wed, 14 Jun 2017 07:03:07 +0200

exim4 (4.89-2) unstable; urgency=medium

  * Revert addition of header "# pidfile: /var/run/exim4/exim.pid" to
    initscript (#844178). It breaks when the initscript does not start a
    daemon but only runs update-exim4.conf. (inetd or QUEUERUNNER='nodaemon').
:▮

El problema es que, para acceder a un changelog de esta forma, es un requisito que el paquete esté instalado. Sin embargo, Debian cuenta con un repositorio específico para almacenar changelogs: metadata.ftp-master.debian.org

Desde allí es posible buscar un paquete por repositorio (main, contrib, etc.) e inicial (primera letra del nombre del paquete). Pero lo más interesante viene aquí, más allá de poder navegar el repositorio, la herramienta apt-get incluye el subcomando changelog, el cual permite descargar y visualizar por pantalla (con un pager adecuado como less o more) el changelog de un paquete pasado como parámetro. Por ejemplo:

# apt-get changelog apache2
apache2 (2.4.25-3+deb9u4) stretch-security; urgency=medium

  * CVE-2017-15710: mod_authnz_ldap: Out of bound write in mod_authnz_ldap
    when using too small Accept-Language values.
  * CVE-2017-15715: <FilesMatch> bypass with a trailing newline in the file
    name.
    Configure the regular expression engine to match '$' to the end of
    the input string only, excluding matching the end of any embedded
    newline characters. Behavior can be changed with new directive
    'RegexDefaultOptions'.
  * CVE-2018-1283: Tampering of mod_session data for CGI applications.
  * CVE-2018-1301: Possible out of bound access after failure in reading the
    HTTP request
  * CVE-2018-1303: Possible out of bound read in mod_cache_socache
  * CVE-2018-1312: mod_auth_digest: Weak Digest auth nonce generation

 -- Stefan Fritsch <sf@debian.org>  Sat, 31 Mar 2018 10:47:16 +0200

apache2 (2.4.25-3+deb9u3) stretch-security; urgency=high

  * Non-maintainer upload by the Security Team.
  * CVE-2017-9798: Use-after-free by limiting unregistered HTTP method
    (Closes: #876109)

 -- Salvatore Bonaccorso <carnil@debian.org>  Tue, 19 Sep 2017 20:58:57 +0200

apache2 (2.4.25-3+deb9u2) stretch-security; urgency=medium

:▮

Gracias a esto es posible revisar, desde línea de comandos, el changelog de cualquier paquete, esté instalado o no (sólo es necesario contar con acceso a Internet, por supuesto).

Por cierto, si son desarrolladores y/o SysAdmins les recomiendo visitar el blog de Alejandro García y agregarlo a sus favoritos/lector RSS.

Para mayor información,a ceder a la página de manual de apt-get:

# man apt-get


Tal vez pueda interesarte


Compartí este artículo