Capítulo 5. Problemas que debe tener en cuenta para stretch

Tabla de contenidos

5.1. Actualizar elementos específicos para Stretch
5.1.1. Ya no está soportado el montaje tardío de /usr
5.1.2. Paquetes obsoletos notables
5.1.3. Componentes obsoletos de Stretch
5.1.4. Cosas a hacer después de la actualización y antes de reiniciar
5.1.5. Los ejecutables se compilan por omisión como ejecutables independientes de posición (PIE)
5.2. Limitaciones en el soporte de seguridad
5.2.1. Estado de seguridad en los navegadores web
5.2.2. Sin soporte de seguridad para el ecosistema construído alrededor de libv8 y Node.js
5.3. Problemas específicos de paquetes
5.3.1. Por omisión los cifrados antiguos y el protocolo SSH1 están deshabilitados en OpenSSH
5.3.2. Cambios en APT potencialmente incompatibles con versiones anteriores
5.3.3. El servidor Xorg ya no tiene setuid root por omisión
5.3.4. Upstart eliminado
5.3.5. La herramienta debhelper genera ahora paquetes dbgsym por omisión
5.3.6. Cambios relativos a OpenSSL
5.3.7. Cambios en Perl que pueden romper programas de terceros

Algunas veces los cambios tienen efectos colaterales que no podemos evitar, o aparecen fallos en otro lugar. A continuación se documentan los problemas que conocemos. Puede leer también la fe de erratas, la documentación de los paquetes relevantes, los informes de fallos, y otra información mencionada en Sección 6.1, “Para leer más”.

5.1. Actualizar elementos específicos para Stretch

Esta sección cubre los elementos relacionados con la actualización de Jessie a Stretch

5.1.1. Ya no está soportado el montaje tardío de /usr

[Nota]Nota

Esta sección sólo aplica a aquellos sistemas que utilizan un núcleo a medida, y donde /usr está en un punto de montaje distinto de /. Aquellos sistemas que utilicen los paquetes del núcleo ofrecidos en Debian no están afectados por este problema.

No se proporciona soporte al montaje de /usr utilizando sólo las herramientas en /. Esta configuración sólo funcionaba para configuraciones específicas del sistema en el pasado y ahora deja de estar soportado explícitamente.

Esto significa que para stretch todos los sistemas donde /usr es una partición separata tienen que utilizar un generador de «initramfs» que monte /usr. Todos los generadores de Stretch lo hacen.

5.1.2. Paquetes obsoletos notables

A continuación se muestra una lista de los paquetes conocidos y notables que ahora están obsoletos (consulte Sección 4.8, “Paquetes obsoletos” para obtener una descripción).

La lista de paquetes obsoletos incluye:

  • La mayoría de los paquetes «-dbg» se han eliminado del archivo principal. Se han reemplazado por paquetes «-dbgsym» que están disponibles en el archivo «debian-bug». Por favor, vea Sección 2.2.4, “Nuevo archivo para símbolos de depuración”

  • El gestor de contraseñas fpm2 ya no está siendo mantenido por el desarrollador original. Se recomienda que utilice otros gestores de contraseñas como pass, keepassx, o keepass2. Asegúrese de extraer sus contraseñas de «fpm2» antes de eliminar el paquete.

5.1.3. Componentes obsoletos de Stretch

Con la publicación de Debian 10 (nombre en clave Buster) algunas funcionalidades estarán obsoletas. Los usuarios deben migrar a otras alternativas para evitar problemas al actualizar a 10.

Esto incluye las siguientes funcionalidades:

  • POR HACER: Añadir elementos, si procede.

5.1.4. Cosas a hacer después de la actualización y antes de reiniciar

Cuando haya terminado apt-get dist-upgrade la actualización formal se habrá completado, pero hay ciertas cosas que deberá hacer antes del siguiente reinicio del sistema.


      añadir lista de elementos aquí
      
    

5.1.5. Los ejecutables se compilan por omisión como ejecutables independientes de posición (PIE)

[Nota]Nota

Esta sección será fundamentalmente de interés para desarrolladores y administradores de sistemas. Es poco probable que los usuarios del entorno de escritorio estén afectados por estos cambios.

El compilador de GNU GCC 6 que se ofrece en Debian stretch compila, por omisión, todos los ejecutables como independientes de posición. Esto mitiga un conjunto entero de vulnerabilidades, pero también introduce algunos cambios que es importante tener en cuenta.

  • La herramienta file (entre otras) clasifica ahora este tipo de binarios como «objetos compartidos» en lugar de como «ejecutables». Si tiene filtros que se basan en objetos (como por ejemplo, filtros de correo basura) puede ser necesario actualizarlos.

  • Las librerías estáticas que se compilen dentro de un ejecutable también tienen que compilarse como código independiente de posición. El siguiente mensaje de error es un síntoma de este problema:

    relocation ... against '[SYMBOL]' can not be used when making a shared object; recompile with -fPIC
    

  • Historicamente, los ejecutables independientes de posición se han asociado a problemas de rendimientos en algún hardware. Un caso notable es la architectura i386 de Debian (máquinas Intel de 32-bits). Aunque GCC 5 y GCC 6 han mejorado notablemente el rendimiento de los ejecutables independientes de posición en Intel de 32-bits, esta optimización puede no ser aplicable a todas las arquitecturas. Considere como posibilidad la evaluación del rendimiento de su código si va a ejecutarlo en máquinas con arquitecturas con un número limitado de registros.

5.2. Limitaciones en el soporte de seguridad

Hay algunos paquetes para los que Debian no puede comprometerse a proporcionar versiones actualizadas resolviendo problemas de seguridad. La información de estos paquetes se cubre en las siguientes subsecciones.

Tenga en cuenta que el paquete debian-security-support ayuda a supervisar el estado de soporte de seguridad de los paquetes instalados en el sistema.

5.2.1. Estado de seguridad en los navegadores web

Debian 9 incluye varios motores de navegadores web que están afectados por un flujo constante de vulnerabilidades de seguridad. La alta tasa de vulnerabilidades y la falta de un soporte por parte de los desarrolladores a versiones anteriores hace muy difícil dar soporte a estos navegadores con arreglos de seguridad preparados para las versiones distribuidas. Además, las interdependencias entre bibliotecas hacen imposible actualizar a las nuevas versiones distribuidas. Por tanto, los navegadores basados en los motores de webkit, qtwebkit y khtml están incluidos en Stretch, pero no están cubiertos por el soporte completo de seguridad. No deberían utilizarse estos navegadores para acceder a sitios no confiables.

Para el uso general de navegación web recomendamos el uso de Firefox o Chromium.

Chromium, aunque basado en el código fuente de Webkit, es un paquete menor. Este paquete se mantendrá actualizado compilando las versiones actuales de Chromium para la versión «estable» de Debian. Firefox y Icedove también se mantendrán actualizadas recompilando la última versión de ESR para la versión «estable».

5.2.2. Sin soporte de seguridad para el ecosistema construído alrededor de libv8 y Node.js

La plataforma Node.js está construida sobre el paquete libv8-3.14, que ha tenido múltiples problemas de seguridad en el pasado. Actualmente no hay suficientes voluntarios dentro del proyecto o del equipo de seguridad interesados y dispuestos a dedicar el elevado tiempo necesario para resolver los problemas de seguridad que puedan aparecer en el futuro.

Esto significa que, desgraciadamente, que los paquetes libv8-3.14, nodejs, y el ecosistema de paquetes node-* no deberían utilizarse junto con contenido no confiable, como pueda ser datos no sanizados obtenidos de Internet.

Adicionalmente, no se va a proporcionar actualizaciones de seguridad para estos paquetes durante el ciclo de vida de Stretch.

5.3. Problemas específicos de paquetes

La actualización de los paquetes entre Jessie y Stretch debería ser senciall en la mayoría de los casos. Existe un pequeño número de casos en los que es necesaria una intervención manual, bien antes o bien después de la actualización. Estos casos se detallan a continuación para cada paquete.

5.3.1. Por omisión los cifrados antiguos y el protocolo SSH1 están deshabilitados en OpenSSH

La versión 7 de OpenSSH ha deshabilitado algunos algoritmos de cifrado antiguos así como el protocolo SSH1 por omisión. Tenga ésto en cuenta al actualizar sistemas en los que sólo tiene acceso SSH.

Consulte la documentación de OpenSSH para más información.

5.3.2. Cambios en APT potencialmente incompatibles con versiones anteriores

Esta sección cubre algunos cambios a APT incompatibles con versiones anteriores que pueden afectar a su sistema.

5.3.2.1. APT obitiene ahora los archivos con un usuario no privilegiado («_apt»)

APT intentará ahora descartar todos los privilegios de administrador antes de descargar ficheros de cualquier réplica. APT puede detectar algunos casos habituales en los que ésto no funcionará y seguirá actualizando ficheros como administrador con un aviso. Sin embargo, puede no ser capaz de detectar algunas configuraciones poco habituales (p.ej. el uso de reglas de cortafuegos específicas por identificador de usuario).

Si detecta problemas con esta nueva funcionalidad, modifique el usuario «_apt» y compruebe que:

  • puede leer los ficheros en /var/lib/apt/lists y /var/cache/apt/archives.

  • tiene acceso para leer el almacén de confianza de APT (/etc/apt/trusted.gpg y /etc/apt/trusted.gpg.d/)

  • puede hacer resolución DNS de nombres y descargar ficheros. Unos ejemplos para probar ésto son los siguientes:

    # Del paquete dnsutils (si utiliza tor, utilice en su lugar tor-resolve).
    $ nslookup debian.org >/dev/null || echo "No se puede resolver debian.org"
    $ wget -q https://debian.org/ -O- > /dev/null || echo "No se puede descargar la página de índice de  debian.org"
    

    Si se encuentra con problemas en la resolución de nombres DNS, compruebe que puede leer /etc/resolv.conf.

5.3.2.2. Nuevos requisitos para los repositorios APT

[Nota]Nota

Esta sección sólo le aplica si tiene (o va a tener) activo la descarga desde repositorios de terceros o si mantiene un repositorio de APT.

APT requiere ahora lo siguiente de cualquier repositorio de paquetes APT, con el fin de mejorar la estabilidad de las descargas y poder garantizar la seguridad del contenido descargado:

  • El fichero InRelease debe estar disponible

  • Todos los metadatos deben incluir al menos una suma de comprobación SHA256 para todos los elementos. Esto incluye también la firma GPG en el archivo «InRelease».

  • Las firmas del archivo InRelease deben hacerse con una clave de al menos 2048 bits

Si vd. depende de repositorios de terceros que no cumplen con las condiciones descritas anteriormente, debe ponerse en contacto con ellos para que actualicen su repositorio. Encontrará más información sobre el archivo «InRelease» en el Wiki de Debian.

5.3.3. El servidor Xorg ya no tiene setuid root por omisión

[Nota]Nota

Estos cambios sólo aplican si su gestor de ventanas X permite la ejecución de X sin privilegios de administración (o si inicia manualmente X con el programa startx). En la actualidad el único gestor de ventanas que proporciona esta funcionalidad es gdm. Otros gestores de ventanas simplemente arrancan X como administrador independientemente del cambio.

Esto reduce el riesgo de una escalada de privilegios a través de fallos en el servidor X. Sin embargo, es necesario que se cumplan algunos requisitos para que pueda funcionar:

  • Necesita los paquetes logind y libpam-systemd.

  • Necesita un controlador de vídeo del núcleo (puesto que Xorg no puede hablar entonces directamente con el hardware).

  • Es necesario que se ejecute en la consola virtual donde se inicio.

Cuando se ejecuta como un usuario normal, el registro de Xorg estará disponible en ~/.local/share/xorg/.

Instale el paquete xserver-xorg-legacy si no se cumplen estos requisitos para que se configure Xorg con el bit setuid.

5.3.4. Upstart eliminado

Se ha eliminado el sistema de arranque «Upstart» de Stretch debido a la falta de mantenimiento por los desarrolladores originales. Si su sistema depende de este paquete tiene que tener en cuenta que no se actualizará durante el ciclo de vida de Debian %release;. A partir de la versión Debian 10 (Buster), las tareas de arranque de «Upstart» podrían eliminarse de los paquetes.

Valore la posibilidad de cambiar a un sistema de init soportado, como «systemd» u «openrc».

5.3.5. La herramienta debhelper genera ahora paquetes dbgsym por omisión

[Nota]Nota

Esta sección está destinada para desarrolladores u organizaciones que construyen sus propios paquetes debian.

El conjunto de herramientas debhelper ahora generan paquetes «dbgsym» por omisión para binarios ELF. Compruebe que sus herramientas tiene soporte para estos paquetes extra generados automáticamente si desarrolla o empaqueta binarios.

Tendrá que actualizar a la versión 4.17.0 el paquete reprepro si lo utiliza. A la fecha de escribir esta información, el paquete aptly no tiene soporte para paquetes dbgsym.

Si sus herramientas no pueden gestionar este cambio, puede deshabilitar esta funcionalidad de «debhelper» añadiendo «noautodbgsym» a la variable DEB_BUILD_OPTIONS en su servicio de construcción de paquetes. Puede consultar la página de manual de dh_strip para más información.

5.3.6. Cambios relativos a OpenSSL

La aplicación openssl ahora espera los argumentos con opciones antes de los argumentos sin opciones. Por ejemplo, la siguiente ejecución no funcionará a partir de la actualización:

openssl dsaparam 2048 -out file

mientras que sí funcionará lo siguiente:

openssl dsaparam -out file 2048

La orden openssl enc ha modificado la suma de comprobación (utilizada para crear la clave de la frase de contraseña) y ahora utiliza SHA256 en lugar de MD5. Puede especificar el algoritmo que desea con la opción -md si tiene que descifrar archivos antiguos con la nueva versión de openssl (o al contrario).

Los algorimos de cifrado 3DES y RC4 ya no están disponibles para comunicaciones TLS/SSL. Los servidores que utilicen openssl no ofrecerán estos algoritmos y los clientes no podrán conectarse a aquellos servidores que ofrezcan sólo éstos. Esto significa que openssl y Windows XP no disponen de un algoritmo de cifrado común.

El paquete libssl-dev proporciona los ficheros de cabecera para compilar contra la versión 1.1.0 de openssl. La interfaz de programación (API) ha cambiado sustancialmente y es posible que algunos programas no compilen. Puede consultar un resumen de los cambios. También puede utilizar libssl1.0-dev si necesita las cabeceras de la versión 1.0.2 de openssl.

5.3.7. Cambios en Perl que pueden romper programas de terceros

[Nota]Nota

Esta sección aplica a los programas que se mantienen fuera de Debian 9. Lo que incluye programas y módulos de Perl locales, de terceros o antiguos.

  • Algunos módulos se han eliminado de Perl y se distribuyen ahora en paquetes separados. Algunos ejemplos importantes son CGI, que está disponible en el paquete libcgi-pm-perl, y Module::Build, que está disponible en el paquete libmodule-build-perl.

  • Se ha eliminado el directorio de trabajo actual (.) de la lista de directorios donde se buscan ficheros a incluir por omisión (variable @INC). Este cambio puede afectar al uso de require(), do() etc., cuando los argumentos son ficheros que están en el directorio de trabajo actual.

  • Puede consultar la lista completa de los cambios en Perl desde la versión de Debian 8 en perl522delta y perl524delta.