15th Aug, 2008

Ajude a melhorar a segurança do Arch Linux

Editado: A lista está concluída. Veja aqui. Entretanto, você ainda pode contribuir com quaisquer correções. Basta enviá-las por e-mail.

O problema

Talvez alguns tenham percebido que o Arch Linux, por enquanto, ainda não tem uma equipe dedicada especialmente à segurança. Portanto, muitas vezes alguns pacotes ficam vulneráveis e as vulnerabilidades demoram a ser descobertas por seus mantenedores.

Apesar de o Arch Linux utilizar sempre a última versão dos pacotes, isso não basta. Muitas vezes o desenvolvedor demora para lançar uma nova versão com a correção. As distros, então, precisam aplicar patches em seus pacotes para corrigir as vulnerabilidades enquanto novas versões não são lançadas. Um exemplo é o atual pacote do Python, que se encontra vulnerável, e uma nova versão do mesmo não foi lançada.

A idéia

Para automatizar os esforços de segurança do Arch Linux, para que tenhamos segurança sem a necessidade de criar uma equipe para isso, tive a seguinte idéia:

O projeto NetBSD já possui uma lista muito bem organizada de pacotes vulneráveis, disponível em http://ftp.netbsd.org/pub/NetBSD/packages/vulns/pkg-vulnerabilities. Tudo o que temos a fazer é criar um banco de dados que relacione o nome dos pacotes do pacman com o nome dos pacotes do pkgsrc (sistema de pacotes do NetBSD). Dessa forma poderemos nos beneficiar do mesmo banco de vulnerabilidades.

Tendo as correspondências de nome entre os pacotes, podemos enviar emails automatizados para os mantenedores de pacotes possivelmente vulneráveis, e até mesmo para as mailing lists do Arch. Dessa forma, vulnerabilidades serão corrigidas mais rapidamente.

Como contribuir

Precisamos de ajuda para montar o banco de dados relacionando os nomes dos pacotes do pkgsrc com os nomes dos pacotes do pacman e do AUR.

1) Baixe a ferramenta pkgsrc2pacman em http://basalto.ifsc.usp.br/~paulo_matias/misc/pkgsrc2pacman.tar.gz

2) Descompacte em algum lugar

tar -zxvf pkgsrc2pacman.tar.gz

3) Entre no diretório:

cd pkgsrc2pacma

4) Comece a usá-la:

./pkgsrc2pacman.py

Como usar a ferramenta

A ferramenta vai lhe mostrar nomes de pacotes aleatórios do pkgsrc. Junto com eles, aparece um link com detalhes sobre o pacote. A ferramenta também obtém, da Internet, o link da homepage oficial do pacote, conforme esteja especificado no pkgsrc.

Um exemplo de saída exibida pela ferramenta é a seguinte:

Nome do pacote no pkgsrc: x11/gtksourceview
Detalhes do pacote: http://pkgsrc.se/x11/gtksourceview
Homepage do pacote: http://gtksourceview.sourceforge.net/
 
Qual o nome desse pacote no pacman?

Recomendo que você comece por procurar o pacote usando o yaourt, que vai procurar tanto nos repositórios oficiais como no AUR. No exemplo acima, eu procuraria:

$ yaourt -Ss --aur gtksourceview
extra/gtksourceview 1.8.5-2 [installed]
    A text widget adding syntax highlighting and more to GNOME
extra/gtksourceview-sharp-2.0 0.10-5
    a C# binding to gtksourceview
extra/gtksourceview2 2.2.2-1
    A text widget adding syntax highlighting and more to GNOME
extra/pygtksourceview2 2.2.0-1
    Python bindings for gtksourceview2
community/libgtksourceviewmm 0.3.1-1
    A C++ API for gtksourceview
community/libgtksourceviewmm2 1.9.5-1
    A C++ API for gtksourceview2
community/ruby-gtksourceview 0.16.0-1
    Ruby gtksourceview bindings
aur/gtksourcecompletion 0.4.1-1
    Source code completion for the GtkSourceView library.
aur/gtksourceview2-docs 2.2.1-1
    Documentation for gtksourceview2 to be used in devhelp
aur/pygtksourceview 1.1.0-1
    Python bindings for the GtkSourceView widget

Agora temos o gtksourceview e o gtksourceview2. Qual deles é o procurado? Para saber, entramos na URL de detalhes do pacote, mostrada pela ferramenta (no exemplo, http://pkgsrc.se/x11/gtksourceview).

Entrando lá, vemos a versão do pacote - no caso, 1.8.5. Isso significa que devemos informar gtksourceview, cuja versão é mais próxima da versão procurada.

IMPORTANTE: A versão NÃO precisa bater (a menos que seja inclusa no próprio nome do pacote). Nesse caso só olhamos a versão para saber qual dos dois pacotes era o mais próximo.

IMPORTANTE: Informe apenas o nome do pacote. NÃO informe a versão.

Outras dicas

Uma forma interessante de ter certeza se o pacote é realmente o mesmo é verificar a sua homepage. A ferramenta exibe a Homepage do pacote sempre que essa informação estiver disponível. Por exemplo:

Pacote número 4
Nome do pacote no pkgsrc: archivers/bsdtar
Detalhes do pacote: http://pkgsrc.se/archivers/bsdtar
Homepage do pacote: http://people.freebsd.org/~kientzle/libarchive/
 
Qual o nome desse pacote no pacman?

Se verificarmos pelo comando, "pacman -Si pacote", vemos que a homepage bate com a especificada no Arch:

$ pacman -Si libarchive
Repository     : core
Name           : libarchive
Version        : 2.5.5-1
URL            : http://people.freebsd.org/~kientzle/libarchive/

Note que esse comando pode ser usado mesmo que você não tenha o pacote instalado.

Outra dica é que você pode parar de rodar a ferramenta a qualquer instante apertando Ctrl-C ou Ctrl-D, ou mesmo fechando a janela do terminal. Da próxima vez que você executá-la, ela vai oferecer para continuar de onde parou (ela vai guardar o número do último pacote preenchido por você).

IMPORTANTE

Note que nem todos os pacotes vão ter correspondente no Arch. Alguns pacotes são específicos do sistema operacional NetBSD, e nem ao menos poderiam rodar em um sistema Linux. Nesses casos, simplesmente aperte ENTER sem digitar nome nenhum.

Deixe em branco, também, se houver algum pacote a respeito do qual você não tenha certeza.

Se você tiver qualquer dúvida sobre o uso da ferramenta, você pode responder ao tópico do fórum que eu tiro a dúvida.

Enviando os seus resultados

Compacte o arquivo do banco de dados antes de enviá-lo, de preferência usando o 7z, disponível no pacote p7zip do Arch. Utilize o seguinte comando para compactar:

7z a packages.db.7z packages.db

Envie esse arquivo para mim através do e-mail "matias arroba archlinux-br ponto org".

Você pode mandar esse arquivo para mim mesmo que não tenha terminado de rodar completamente o programa. Pode mandar mesmo que não tenha preenchido todos os pacotes. Afinal, são mais de 7 mil pacotes. É por isso que os pacotes são mostrados de forma aleatória - assim podemos juntar os resultados de várias pessoas.

Agradecemos a sua colaboração!

Maiores detalhes

http://forum.archlinux-br.org/viewtopic.php?pid=5271

Responses

Grande idéia! Apesar de achar que tamanho foco em segurança é mais benéfico pra quem usa Arch em servidores (existe alguém?). Se os pacotes com problemas críticos de segurança forem atualizados em tempo hábil, já é suficiente pra quem usa em desktop.

Interessante que isso evidencia como muitas vezes os desenvolvedores demoram pra lançar uma versão corrigida – ficar fazendo backport de patch vira tarefa das distros, e fazer isso é um pé no saco! coisa que a equipe enxuta do Arch não tem como fazer.

[...] catalogando pacotes para o projeto descrito em post anterior, esbarrei com um programa muito [...]

[...] de pronto, poderemos checar automaticamente os pacotes do Arch contra a lista de vulnerabilidades do projeto NetBSD, verificando se a [...]

[...] public links >> devhelp Ajude a melhorar a segurança do Arch Linux Saved by babyshandy on Thu 09-10-2008 GtkSourceCompletion (ver. 0.4.0) Saved by LoonyPandora on [...]

Segurança com #chmod -R 1777 ./tmp ?
muito facil catar root assim.

Ricardo,

$ ls -l /tmp
total 4
srw------- 1 paulo users   0 Dez  7 16:45 Arora_1000_100
drwxr-xr-x 2 paulo users   6 Dez  7 17:29 hsperfdata_paulo
srwx------ 1 paulo users   0 Dez  7 15:34 jpsock.160_11.4410
srwx------ 1 paulo users   0 Dez  7 15:39 jpsock.160_11.4966
drwx------ 2 paulo users  70 Dez  7 15:40 orbit-paulo
-rw------- 1 root  root  198 Dez  7 15:03 wpa.5ZBFyKKN

P.S.: Vale lembrar que em uma máquina desktop, pouco importa se o invasor consegue root ou não.

Como usuário normal, ele já consegue acesso aos arquivos mais importantes do usuário (que costumam estar na home), consegue visualizar a tela do usuário, consegue capturar movimentos do mouse e teclas do teclado, etc.

A idéia aqui era evitar que programas como o mplayer fiquem vulneráveis por um longo período de tempo, coisa que ainda acontece no Arch. Aí um usuário desktop seria facilmente atingido ao tocar um vídeo que explore a falha.

Leave a response

Your response:

Categories