Como atualizo o bash nas versões do EOL Ubuntu?

6

Ou seja. posso encontrar um pacote suficientemente próximo na próxima distro mais próxima? Ou é complicado, e compilar a partir da fonte é melhor? Ou posso pegar do debian?

(Esta questão é sobre pelo menos o Ubuntu 11.10 e 12.10; estou apostando que outros estão acertando isso, então se o conselho é diferente dependendo exatamente de qual Ubuntu finalizado, pode ajudar dizer como!)

P.S. "Upgrade" não será aceito como uma resposta ;-) Eu sei disso, mas às vezes se aposentar / atualizar / substituir um servidor leva tempo, e eu gostaria de receber o remendado antes.

    
por Darren Cook 26.09.2014 / 10:39

5 respostas

3

Resposta curta para quantal (Ubuntu 12.10): Faça o download e instale o pacote bash do repositório preciso.

Passo a passo

Para o quantal (Ubuntu 12.10), eu procurei por pacotes bash de versões próximas. Eu fiz o download de pacotes para rarear e preciso.

Antes de começar, fiz um backup do meu pacote bash existente, para que eu pudesse recuperar meu sistema se a nova instalação falhasse. (Requer o pacote dpkg-repack).

$ dpkg-repack bash

Embora provavelmente eu devesse ter copiado o executável /bin/bash para /root/bash.vulnerable , pois seria mais fácil restaurá-lo em uma emergência.

Raring

Primeiro eu tentei o pacote rarar :

$ dpkg -i bash_4.2-5ubuntu3_i386.deb

Mas isso foi testado como ainda vulnerável !

Preciso

Então tentei o pacote de preciso :

$ dpkg -i bash_4.2-2ubuntu2.6_i386.deb

Isso foi testado como seguro , usando o script do bashcheck .

Testing /bin/bash ...
GNU bash, version 4.2.25(1)-release (i686-pc-linux-gnu)

Variable function parser pre/suffixed [%%, upstream], bugs not exploitable
Not vulnerable to CVE-2014-6271 (original shellshock)
Not vulnerable to CVE-2014-7169 (taviso bug)
Not vulnerable to CVE-2014-7186 (redir_stack bug)
Test for CVE-2014-7187 not reliable without address sanitizer
Not vulnerable to CVE-2014-6277 (lcamtuf bug #1)
Not vulnerable to CVE-2014-6278 (lcamtuf bug #2)

Mas eu realmente gostaria de ter instalado uma versão do LTS. Eu ainda planejo fazer um upgrade quando tiver tempo ...

    
por 12.10.2014 / 10:24
4

Como você deseja continuar usando uma versão oficialmente sem suporte , sua única opção é dar suporte por conta própria.

Eu aconselho obter os fontes para a versão específica no Ubuntu (seja 11.0, 12.0 ou 13.10) e, em seguida, aplicar os mesmos patches que foram aplicados nos pacotes oficiais; para referência, veja:

Por favor, note que, embora a vulnerabilidade do Bash seja a que obteve melhor cobertura da mídia, há muitas outras vulnerabilidades - quase diariamente - e você deve considerar seriamente a inscrição de pelo menos ubuntu-security-announce para que você esteja sempre ciente deles. Isso é especificamente mais importante no seu caso, já que você está usando uma versão sem suporte.

    
por 26.09.2014 / 12:09
3

Construir o bash a partir do código-fonte é bastante simples, você precisa de um ambiente de desenvolvimento C viável (gcc, binutils etc.) e da biblioteca e cabeçalhos termcap (padrão, mas você pode usar curses ).

Você deve pelo menos ter um backup do seu atual binário bash antes de concluir isso e, idealmente, um backup completo ou um disco de recuperação. Dependendo do seu sistema operacional, bash pode ser uma parte crítica dos seus scripts de inicialização! As novas versões contêm, por vezes, alterações de comportamento não compatíveis com versões anteriores.

A mesma seqüência de etapas deve funcionar para todas as versões do bash-2.05b para bash-4.3, basta substituir "4.3" conforme apropriado, para que você possa ficar com a mesma versão, se necessário. A menos que você esteja executando o bash-2.05b antigo, que é vulnerável, mas nenhum patch oficial está disponível, AFAICT A correção também foi transferida para o 2.05b.

Você deve verificar novamente no site oficial o nível de correção atual, apenas no caso de você bateu em um espelho obsoleto.

mkdir -p /usr/local/src/dist && cd /usr/local/src/dist
wget http://ftpmirror.gnu.org/bash/bash-4.3.tar.gz.sig
wget http://ftpmirror.gnu.org/bash/bash-4.3.tar.gz
wget http://tiswww.case.edu/php/chet/gpgkey.asc
gpg --import gpgkey.asc
gpg --verify bash-4.3.tar.gz.sig
cd ..
tar xzvf dist/bash-4.3.tar.gz
cd bash-4.3
mkdir patches && cd patches 
wget -r --no-parent --accept "bash43-*" -nH -nd  \
  ftp.heanet.ie/mirrors/gnu/bash/bash-4.3-patches/     # Use a local mirror
echo *sig | xargs -n 1 gpg --verify --quiet            # see note 2

cd ..
echo patches/bash43-0?? | xargs -n 1 patch -p0 -i      # see note 3 below

./configure --prefix=/usr  --bindir=/bin \             
        --docdir=/usr/share/doc/bash-4.3 \
        --without-bash-malloc            \
        --with-installed-readline

 make
 make test && make install   # see note 6

Notas:

  1. Use um espelho local para patches, ftpmirror.gnu.org retorna um redirecionamento para um, mas isso não funciona com a opção -r para baixar o diretório inteiro
  2. (para os chapéus de papel alumínio) gpg não define um código de erro útil e não reclama muito alto se a verificação falhar, procure a string "BAD" na saída (copiosa)
  3. Existem atualmente 25 27 30 patches para o bash-4.3, 25-30 endereço CVE-2014-6271 e problemas relacionados subseqüentes. Ainda pode haver mais patches para resolver esse problema! Você pode receber patch avisos como "Ignorando o nome do arquivo potencialmente perigoso ../bash-4.3/patchlevel.h", estes devem seja inofensivo, verifique se patchlevel.h contém a linha #define PATCHLEVEL ... com o nível de correção esperado.
  4. as opções configure alteram o padrão de /usr/local/ , o que significa que a instalação deve substituir seus bash atuais
  5. --without-bash-malloc seleciona o malloc da libc, em vez de uma implementação interna mais rápida (um pouco mais desperdiçadora). Isso pode afetá-lo se você usar módulos bash carregáveis, pois isso pode causar uma incompatibilidade, mas muitas pessoas não usam esse recurso. O pacote para isso provavelmente é chamado de bash-builtins .
  6. make test levará algum tempo. Você deve ser root para completar make install (muitas vezes é considerado uma má prática compilar software como root)
  7. Ubuntu, sendo derivado do Debian, provavelmente usa os mesmos patches extras que o Debian faz, veja aqui por exemplo. Esses patches podem conter recursos que você usa. Se você aplicar o patch à árvore de código bash, consulte o arquivo debian/README para obter mais detalhes.
  8. Mais uma armadilha de urso, você também pode ter um binário estático-bash, que você também deve reconstruir. Para fazer isso, reinicie a partir da etapa " ./configure ... ", adicionando --enable-static-link .

Veja também o bash no Linux From Scratch . A lista OSS-SEC é um bom local para observar os patches e o status atual.

    
por 26.09.2014 / 14:36
2

Você pode querer avaliar se é crítico corrigir esse bug no seu servidor. O Ubuntu não usa o bash como /bin/sh , portanto somente os vetores de ataque nos quais o bash é chamado explicitamente são uma preocupação. Verifique por:

  • scripts CGI executados pelo bash (começando com #!/bin/bash em vez de #!/bin/sh )
  • Scripts do cliente DCHP executados pelo bash
  • Contas restritas com bash como shell ou que executam scripts bash
  • Mais geralmente, qualquer situação em que um script bash (não sh) é executado com uma variável de ambiente cujo conteúdo pode ser fornecido por um adversário (observe que os scripts executados via sudo não são vulneráveis graças à própria filtragem do sudo)

O comando a seguir localiza os scripts bash no diretório atual e em seus subdiretórios:

find . -type f -executable -exec file {} + | grep 'Bourne-Again shell script'

Se algum desses scripts for executado a partir de um vetor de ataque, você precisará atualizar o bash ou alterar esses scripts para serem executados em traço ou ksh. Verifique também as contas restritas cujo shell de login é bash e os scripts que chamam bash explicitamente ( bash -c '…' , bash /path/to/script ,…).

Se você não conseguir encontrar um binário para atualizar o bash no seu sistema, você pode baixar a fonte, aplicar o patch para a sua versão e recompilação (instale o pacote build-essential , bem como as dependências de compilação do bash - autoconf autotools-dev quilt bison libncurses5-dev texinfo debhelper texi2html locales gettext sharutils time xz-utils dpkg-dev do Ubuntu 12.04).

Mesmo que você não encontre nenhum roteiro vulnerável, a atualização é uma boa ideia. Você deve nunca executar um sistema para o qual as atualizações de segurança não estejam prontamente disponíveis . Esta vulnerabilidade está no bash, o que pode ou não afetar você, mas a próxima vulnerabilidade pode estar em um componente crítico do seu sistema.

    
por 26.09.2014 / 12:35
1

Alguém fez um script em perl que faz exatamente isso

repositório do Github para batchscript.

$ git clone https://github.com/sillymoose/bashfix.git
$ cd bashfix
$ chmod +x bashfix.pl
$ ./bashfix.pl
Bash version 4.2.13 detected
Created working directory /tmp/PIRKRioxmM
Downloading Bash
Downloading Patches
Bash patched to level 52
Bash fully patched!
Configuring Bash ...
Building and testing Bash ...
Success. New Bash binary built!
Making backup copy of /usr/bin/bash at /usr/bin/bash.bak
Making backup copy of /bin/bash at /bin/bash.bak
Bash version 4.2.52 is now installed
    
por 09.10.2014 / 15:31