Capítulo 5. Problemas a estar atento na stretch

Índice

5.1. Tópicos de atualização específicos de Stretch
5.1.1. Já não é suportado a montagem tardia de /usr
5.1.2. Pacotes relevantes obsoletos
5.1.3. Componentes depreciados para Stretch
5.1.4. Coisas a fazer após a actualização e antes de reiniciar
5.1.5. Os executáveis são agora compilados, por omissão, como executáveis de posição independente (PIE).
5.1.6. MIPS de 32-bit agora necessita de um processador R2
5.2. Limitações no suporte de segurança
5.2.1. Estado da segurança dos navegadores web
5.2.2. Falta de suporte de segurança para o ecossistema à roda de libv8 e Node.js
5.3. Problemas com pacotes específicos
5.3.1. Cifras antigas e o protocolo SSH1 estão desabilitados mo OpenSSH por defeito
5.3.2. Possíveis alterações não retro-compatíveis a APT
5.3.3. O servidor Xorg já não tem, por defeito, setuid root
5.3.4. Upstart foi removido
5.3.5. A ferramenta debhelper agora gera, por defeito, pacotes dbgsym
5.3.6. Alterações relacionadas com OpenSSL
5.3.7. Perl changes that may break third-party software

Por vezes, as alterações introduzidas num novo lançamento têm efeitos secundários que não podemos evitar razoavelmente, ou aparecerão bugs noutro lado. Esta secção documenta os problemas que conhecemos. Por favor leia também a errata, a documentação dos pacotes relevantes, relatórios de bugs e outra informação mencionada em Secção 6.1, “Leitura adicional”.

5.1. Tópicos de atualização específicos de Stretch

Esta seção cobre tópicos relacionados com a atualização de Jessie para Stretch

5.1.1. Já não é suportado a montagem tardia de /usr

[Nota]Nota

Esta secção apenas é aplicável a sistemas que utilizem um kernel personalizado, onde /usr/ esteja num ponto de montagem diferente de /. Se utilizar os pacotes de kernel disponibilizados por Debian, não será afectado por isto.

Montar /usr utilizando apenas ferramentas que se encontram em / já não é suportado. Isto funcionou apenas para algumas configurações especificas no passado, e agora é explicitamente não suportadas.

Isto significa que para stretch todos os sistemas onde /usr esteja numa partição separada necessitam de utilizar um gerador de initramfs que monte /usr. Todos os geradores de initramfs em stretch o fazem.

5.1.2. Pacotes relevantes obsoletos

Os seguintes são uma lista de pacotes conhecidos e relevantes que são obsoletos (para uma descrição, veja Secção 4.8, “Pacotes obsoletos” ).

A lista de pacotes obsoletos inclui:

  • A maioria dos pacotes "-dbg" foi removida do arquivo principal. Estes foram substituidos por pacotes "-dbgsym" que estão disponíveis a partir do arquivo "debian-debug". Por favor veja Secção 2.2.4, “Um novo arquivo para símbolos de debug”.

  • O gestor de palavras-passe fpm2 já não é mantido pelos autores. Por favor utilize outro gestor de palavras-passe como o pass, keepassx ou keepass2. Assegure-se que extrai as palavras-passe do fpm2 antes de remover o pacote.

5.1.3. Componentes depreciados para Stretch

Com o lançamento de Debian 10 (nome de código Buster) serão depreciadas algumas funcionalidades. Os utilizadores terão de migrar para outras alternativas para prevenir problemas ao atualizar para 10.

Isto inclui as seguintes funcionalidades:

  • TODO: Add items if any

5.1.4. Coisas a fazer após a actualização e antes de reiniciar

Quando apt-get dist-upgrade tiver terminado, a atualização formal terá terminado, mas existem algumas outras coisas que devem ser tratadas antes da próxima inicialização.


      add list of items here
      
    

5.1.5. Os executáveis são agora compilados, por omissão, como executáveis de posição independente (PIE).

[Nota]Nota

Esta secção destina-se principalmente a desenvolvedores ou administradores de sistema. É improvável que os utilizadores de Ambientes de Trabalho sejam afectados por esta secção.

Por omissão, o compilador GNU GCC 6 disponibilizado por Debian stretch irá compilar todos os executáveis como independentes de posição. Isto fornece mitigação para uma classe inteira de vulnerabilidades, mas também leva a algumas alterações que vale a pena estar ciente.

  • A ferramenta file (entre outras) irá classificar tais binários como "shared object" em vez de "executable". Se tiver filtros baseados em ficheiros binários então estes necessitam de ser actualizados (e.g. filtros de spam).

  • As bibliotecas estáticas que sejam compiladas em executáveis agora também necessitam de ser compiladas como código independente de posição. A seguinte mensagem de erro do linker é um simtoma disto:

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

  • Historicamente, os executáveis independentes de posição são associados com uma perda de performance em algum hardware. Notavelmente na arquitectura Debian i386 (máquinas Intel de 32-bit). Apesar de GCC5 e GCC6 terem melhorado muito a performance para executáveis independentes de posição para 32-bit da Intel, esta optimização poderá não estar presente em todas as arquitecturas. Por favor considere analisar a performance do seu código se tiver como destino máquinas de arquitecturas com um número muito limitado de registos.

5.1.6. MIPS de 32-bit agora necessita de um processador R2

O suporte para MIPS em 32-bit (big e little endian) agora necessita de um processador que suporte o conjunto de instruções MIPS32 Release 2. Notavelmente os sistemas Loongson-2E/2F (incluindo o portátil Yeeloong) baseados neles já não são suportados.

O seguinte script da shell pode ser utilizado para indicar se a sua máquina suporta R2 (assumindo que está presente apenas um tipo de processador). Note que os processadores do Loongson-3 são suportados apesar de apenas referirem suporte para MIPS32 Release 1.

if grep -E -q '^isa.*\bmips(32|64)r2\b' /proc/cpuinfo; then
	echo "OK (R2 supported)"
elif grep -q '^cpu model.*\bICT Loongson-3\b' /proc/cpuinfo; then
	echo "OK (Loongson 3)"
else
	echo "NOT OK: R2 not supported"
fi

5.2. Limitações no suporte de segurança

Existem alguns pacotes onde Debian não pode prometer disponibilizar backports mínimos para problemas de segurança. Estes estão cobertos nas seguintes subsecções.

Note que o pacote debian-security-support ajuda a seguir o estado do suporte de segurança dos pacotes instalados.

5.2.1. Estado da segurança dos navegadores web

O debian 9 inclui diversos motores de navegador de internet que são afectados por um fluxo regular de vulnerabilidades de segurança. A alta taxa de vulnerabilidades e a falta parcial de suporte dos criadores sob a forma de lançamentos com largos períodos de suporte, torna muito difícil suportar estes navegadores através da adaptação de correcções de segurança (backports). Além disto, as interdependências entre bibliotecas tornam impossível a actualização para versões originais mais recentes. Como tal, os navegadores criados sob os motores webkit, qtwebkit e khtml estão incluídos no Stretch, mas não estão cobertos pelo suporte de segurança. Estes navegadores não devem ser utilizados para aceder a sites que não sejam de confiança.

Para um navegador web recomendamos o Firefox ou Chromium.

Chromium - apesar de construído sob o código do Webkit - é um pacote leaf, o qual irá ser mantido actualizado ao recompilar o actual lançamento do Chromium para stable. O Firefox e Icedove também irão ser mantidos actualizados ao recompilar os actuais lançamentos ESR para stable.

5.2.2. Falta de suporte de segurança para o ecossistema à roda de libv8 e Node.js

A plataforma Node.js é construída sob libv8-3.14, a qual experimenta um grande volume de problemas de segurança, mas actualmente não existem voluntários dentro do projecto ou da equipa de segurança suficientemente interessados e disponíveis para utilizar uma grande quantidade de tempo necessário para resolver esses problemas.

Infelizmente, isto significa que libv8-3.14, nodejs, e o ecossistema de pacotes node-* associados actualmente não devem ser utilizados com conteúdo não-confiável, tal como dados por tratar da Internet.

Além disso, estes pacotes não irão receber quaisquer actualizações de segurança durante o tempo de vida do lançamento Stretch.

5.3. Problemas com pacotes específicos

Na maioria dos casos, a atualização dos pacotes deve ser suave entre Jessie e Stretch. Existe um pequeno número de casos onde pode ser necessária alguma intervenção, quer antes ou depois da atualização; Estes estão detalhados abaixo por pacote.

5.3.1. Cifras antigas e o protocolo SSH1 estão desabilitados mo OpenSSH por defeito

O lançamento de OpenSSH 7 desabilita, por defeito, algumas cifras mais antigas e o protocolo SSH1. Por favor tenha cuidado ao actualizar as máquinas, se tiver apenas acesso por SSH.

Para mais informação por favor veja a documentação do OpenSSH.

5.3.2. Possíveis alterações não retro-compatíveis a APT

Esta secção cobre algumas alterações incompatíveis ao APT que possam afectar o seu sistema.

5.3.2.1. O APT agora obtém ficheiros com um utilizador não privilegiado ("_apt")

O APT agora irá tentar descartar todos os privilégios de root antes de obter ficheiros a partir dos mirrors. O APT pode detectar alguns casos onde isto irá falhar e como recurso irá obter os ficheiros como root mas com um aviso. No entanto, isto poderá falhar nalgumas configurações mais exóticas (e.g. regras de firewall com uid específico).

Se experimentar problemas com esta funcionalidade, por favor mude para o utilizador "_apt" e verifique que:

  • tem acesso a ficheiros em /var/lib/apt/lists e /var/cache/apt/archives.

  • tem acesso de leitura à trust store do APT (/etc/apt/trusted.gpg e /etc/apt/trusted.gpg.d/)

  • consegue resolver nomes de DNS e obter ficheiros. Métodos de exemplo para testar:

    # Do pacote dnsutils (se utilizar tor, por favor verifique antes tor-resolve).
    $ nslookup debian.org >/dev/null || echo "Cannot resolve debian.org"
    $ wget -q https://debian.org/ -O- > /dev/null || echo "Cannot download index page of debian.org"
    

    Para problemas com DNS, por favor verifique que /etc/resolv.conf é legível.

5.3.2.2. Novos requisitos para repositórios APT

[Nota]Nota

Esta secção apenas se aplica se tiver activos (ou quiser utilizar) repositórios de terceiros ou se mantiver um repositório APT.

Para melhorar a estabilidade do download e assegurar a segurança do conteúdo a que foi feito download, o APT agora necessita do seguinte a partir de um repositório APT:

  • O ficheiro InRelease tem de estar disponível

  • Todos os metadados têm de incluir controlos SHA256 de todos os itens. Isto inclui a assinatura gpg do ficheiro InRelease.

  • As assinaturas do ficheiro InRelease devem ser feitas com uma chave de tamanho 2048 bits ou superior.

Se depender de algum repositório de terceiros que não possa cumprir com o acima, por favor incite-os a actualizar o repositório. Está disponível mais informação acerca do ficheiro InRelease, que pode ser encontrada no Debian Wiki.

5.3.3. O servidor Xorg já não tem, por defeito, setuid root

[Nota]Nota

Esta alteração é aplicável apenas se o X Display Manager suportar X sem root (ou se iniciar o X manualmente com startx). O único display manager actualmente conhecido que o suporta é o gdm. Os outros display managers simplesmente iniciam o X como root independentemente desta alteração.

Isto reduz o risco de escalamento de privilégios através de bugs no servidor X. No entanto, tem alguns requisitos para funcionar:

  • Necessita de logind e de libpam-systemd.

  • Necessita de um driver de video do kernel (pois o Xorg já não consegue comunicar com o hardware).

  • Necessita correr na consola virtual em que foi iniciado.

Quando corre como um utilizador normal, o log do Xorg estará disponível em ~/.local/share/xorg/.

Se estes requisitos não forem possíveis, por favor instale o pacote xserver-xorg-legacy para reinstalar o Xorg xom setuid.

5.3.4. Upstart foi removido

Devido à falta de mantenedores do software original, o sistema de init Upstart foi removido de Stretch. Se o seu sistema depender deste pacote, deve notar que este não irá ser actualizado durante o tempo de vida de Debian 9, e que a partir de Debian 10 (Buster), os jobs do upstart podem ser removidos dos pacotes.

Por favor considere mudar para um sistema init suportado, como o systemd ou openrc.

5.3.5. A ferramenta debhelper agora gera, por defeito, pacotes dbgsym

[Nota]Nota

Esta secção destina-se principalmente a desenvolvedores ou organizações que compilem os seus próprios pacotes debian.

O conjunto de ferramentas debhelper agora irá gerar pacotes "dbgsym" por defeito para binários ELF. Se desenvolver e empacotar binários, por favor verifique que as suas ferramentas suportam estes pacotes extra que são automaticamente gerados.

Se utilizar reprepro, irar querer actualizar pelo menos para a versão 4.17.0. Na altura em que isto é escrito, o aptly não suporta pacotes dbgsym.

Se as suas ferramentas não forem capazes de lidar com isto graciosamente, pode pedir ao debhelper para desabilitar esta funcionalidade ao acrescentar "noautodbgsym" na variável DEB_BUILD_OPTIONS do seu serviço de compilação. Por favor veja a manpage dh_Strip para mais informação.

5.3.6. Alterações relacionadas com OpenSSL

A aplicação openssl espera argumentos de opções antes dos argumentos que não opções. Por exemplo, isto já não funciona:

openssl dsaparam 2048 -out file

enquanto que isto ainda funciona:

openssl dsaparam -out file 2048

O comando openssl enc mudou o digest predefinido (utilizado para criar a chave da frase-passe) de MD5 para SHA256. O digest pode agora ser especificado com a opção -md no caso de ficheiros antigos que necessitem ser desencriptados com o openssl mais recente (ou ao contrário).

As cifras 3DES e RC4 já não estão disponíveis para comunicação TLS/SSL. Os servidores linkados a openssl não os podem oferecer e os clientes não se conseguem ligar aos servidores que ainda os oferecem. Isto significa que o openssl e o Windows XP já não partilham uma cifra em comum.

O pacote libssl-dev disponibiliza ficheiros header para compilar contra o openssl 1.1.0. A API mudou muito e é possível que o software já não consiga ser compilado. Existe um resumo das alterações. Se não conseguir actualizar o seu software, existe também o libssl1.0-dev que disponibiliza headers contra o openssl 1.0.2.

5.3.7. Perl changes that may break third-party software

[Nota]Nota

This section applies to code maintained outside Debian 9 - local, third-party or legacy Perl scripts and modules.

  • Some modules have been removed from Perl core and are now shipped in separate packages. Notable examples are CGI, available in the libcgi-pm-perl package, and Module::Build, available in the libmodule-build-perl package.

  • The current working directory (.) has been removed from the default list of include directories, @INC. This may affect usage of require(), do() etc., where the arguments are files in the current directory.

  • The full list of changes in Perl since the version in Debian 8 is available in perl522delta and perl524delta.