Explorando as vulnerabilidades do APT (Advanced Packaging Tools)



Documentos relacionados
Introdução a Sistemas Abertos Gerência de Pacotes

Torne-se um Sysadmin Linux. Prof. Juliano Ramos

Administração de sistemas Linux. Gerenciamento de serviços

TUTORIAL PROCESSOS DE INSTALAÇÃO DO MYMIX MOBILE

Rede VPN UFBA Procedimento para configuração

Laboratório de Redes de Computadores INSTALANDO SERVIDOR APACHE NOS CENTOS 6.5

Como Instalar Nagios 4 E Monitorar Seus Servidores no Ubuntu 14 Introdução

Waldemar Dibiazi Junior Engenheiro de Computação Especialista em Banco de Dados

Dtec - Ubuntu Desktop 9.04 para Thin Clients Versão 1 APRESENTAÇÃO

O Linux Possui varias características que diferenciam dos outros sistemas operacionais e que aproximam do UNIX, sendo um dos motivos da sua escolha

Sistemas Operacionais Abertos

T.I. para o DealerSuite: Servidores Versão: 1.1

Servidor de Armazenamento em Nuvem

Como Instalar Programas no GNU/Linux. Elexsandro Rangel dos Santos

Laboratório de Redes de Computadores e Sistemas Operacionais

Sistemas Operacionais

GUIA RAPIDO DE INSTALAÇÃO D-SAT VINCULAÇÃO D-SAT AO CNPJ DO CONTRIBUINTE

Instalação de pacotes

Informática Básica CONCEITOS DE SOFTWARE. Msc. Eliezio Soares

4.0 SP2 ( ) maio P Xerox FreeFlow Core Guia de Instalação: Windows 7 SP1

Acesso Re sso R moto

Histórico e conceitos básicos. GSO I Gestão de Sistemas Operacionais

Fiery Command WorkStation 5.8 com Fiery Extended Applications 4.4

Técnico Subsequente em Redes de Computadores Introdução a Sistemas Abertos (ISA)

Certificado Digital A1/S1 e A3/S3. Instalação das Cadeias de Certificação

MANUAL DE INSTALAÇÃO DO SOFTWARE

Copyright Smar

Leitora SCR 331. Guia de Instalação. LeitoraSCR 331 Guia de Instalação. Janeiro/2010. Instalação da leitora SCR 331.

EMPACOTAMENTO DE SOFTWARE: O CASO DA FERRAMENTA HARPIA

Curso de Introdução ao Debian GNU/Linux

Curso de Linux Básico

Manual. Instalação de arquivos e pacotes no. Linux Educacional. Gerenciando pacotes e arquivos. Produzido por: Rafael Nink de Carvalho

Administração de Redes Linux

Instalação e Configuração de Servidores Linux Server Pós-Instalação. Prof. Alex Furtunato

POO Documentation. Release 1.0. Felipe Dau e Francisco Pereira Junior

Boot gráfico no Debian com BootSplash

Se a tela de instalação não for exibida após um minuto, inicie o CD manualmente:

Gerenciamento de Redes: Protocolo SNMP

MANUAL DE INSTALAÇÃO SAT DIMEP PDV CAKE

UNIVERSIDADE FEDERAL DO VALE DO SÃO FRANCISCO UNIVASF SECRETARIA DE TECNOLOGIA DA INFORMAÇÃO STI DEPARTAMENTO DE SISTEMAS DE INFORMAÇÕES

PROCESSO DE SELEÇÃO DE ESTAGIÁRIO EDITAL 100/2017

NITGEN iaccess GUIA RÁPIDO DE USUÁRIO. - Fingertech Imp. e Com. de Produtos Tecnológicos LTDA.

Manual SOFIA (Software Inteligente ARPEN-SP) versão 0.1

Instalar e desinstalar o CFC

Instalação e Configuração de Servidores Linux Server. Prof. Alex Furtunato

Petter Anderson Lopes Arbitragem, Desenvolvimento Seguro, Segurança Ofensiva e Forense Computacional

Redes de Computadores

PORTARIA N Nº 178 Rio de Janeiro, 25 de outubro de 2012.

Sistema Operacional. Disciplina: Softwares, Aplicativos e Sistema Operacional. Professor: Thiago Silva Prates

Plano de Ensino IDENTIFICAÇÃO. TURMA: 3º Sem. EMENTA

SUMÁRIO. Sistemas Operacional. Windows...2 Linux...6 Mac OS X Lista de Produtos

Manual de Instalação do TelEduc 4.4

Laboratório FTP. Francisco Edigleison da Silva Barbosa Professor: Kelvin Lopes Dias

Manual Técnico para Parceiros

A CASA DO SIMULADO DESAFIO QUESTÕES MINISSIMULADO 104/360

Introdução à Sistemas Operacionais

Manual do KLinkStatus. Paulo Moura Guedes Tradução: Marcus Gama

Linha de Sistemas Folhamatic

Índice. Manual De instalação ProjectNet Manager

Guia de Instalação Oracle Service Bus 12c com Eclipse OEPE

Gerenciamento da impressora

GUIA RÁPIDO DE INSTALAÇÃO D-MFE VINCULAÇÃO D-MFE AO CNPJ DO CONTRIBUINTE

SISTEMA OPERACIONAL - ANDROID

Manual de Instalação da Leitora para cartão e-cpf e Instrução para assinatura digital (SGP-e)

Manual do usuário Certificado Digital

GUIA RÁPIDO DE UTILIZAÇÃO KIT MERCURIOIV OSCILOSCÓPIO E GERADOR DE SINAIS

TECNOLOGIA EM REDES DE COMPUTADORES - 3º PERÍODO ADS - ADMINISTRAÇÃO DE SERVIDORES Grupo: Alexandre - Leonel - Mateus - Ricardo

Servidores. Um Servidor, em redes de computadores, nada mais é que um host da rede capaz de oferecer um determinado serviço a outros hosts da redes.

MANUAL DE INSTALAÇÃO SISTEMA DE GERÊNCIA CONSCIUS

Assina Web S_Line Manual de Uso

Informática I. Aula Aula 19-20/06/06 1

Técnico em Radiologia. Prof.: Edson Wanderley

Guia do usuário Dell Display Manager

Meu Blog: Mais sobre o Ubuntu LTS no link:

SUMÁRIO. Sistemas Operacional. Lista de Produtos. Guia de Prático de Utilização. Descrição das funções do Gerenciador (Botões)

Configuração de Rede

Virtualização do System302 em ambiente VMWARE

Suporte do Nero 7 para o Windows Vista TM

26/04/2017 Triggers no SQL Server: teoria e prática aplicada em uma situação real

Transcrição:

1 Explorando as vulnerabilidades do APT (Advanced Packaging Tools) Ligia de Cássia Leone; ligialeone@gmail.com Marcos Augusto de Castro Araújo; marcosnhl@gmail.com Resumo A maioria das distribuições Linux oferece repositórios para seus usuários realizarem o download dos pacotes de forma confiável e prática. Estes repositórios contêm inúmeros pacotes confiáveis oferecidos em diversas categorias, tais como interface gráfica, jogos, aplicativos de escritórios, atualizações do sistema, entre outros. O software usado para realizar as tarefas de instalar, desinstalar e atualizar os pacotes no Linux é chamado de Gerenciador de Pacotes. Porém o mesmo não realiza download dos pacotes no repositório. Esta função é responsabilidade de Gerenciadores Avançados de Pacotes como o APT. Não podemos dizer que um aplicativo é totalmente seguro, logo o APT possui vulnerabilidades. Neste artigo exploraremos algumas possíveis vulnerabilidades e seus mecanismos de segurança. Palavras-chave: APT; SEGURANÇA; VULNERABILIDADES; LINUX; DNS.

2 Introdução Desde o inicio da década de 1990, quando surgiu o Linux, o número de usuários que utilizam este sistema operacional vem crescendo e a cada ano novas versões são lançadas com correções e melhorias. Os Gerenciadores Avançados de Pacote consultam os repositórios oficiais para verificar a existência de atualizações, existindo atualizações o mesmo sugere ao usuário que faça o download e instalação do pacote. Todo este processo exige uma segurança para que seja garantida a integridade do sistema do usuário. Temos que ter em mente que esses mecanismos de segurança sejam realmente seguros e atendam as exigências do mercado atual, devido a muitas empresas utilizarem servidores Linux. Falaremos sobre esses mecanismos no decorrer desde artigo. Hoje nenhum sistema é seguro, principalmente sistemas que atendam o público através da internet. No inicio do ano, como foi relatado no site do G1[4] O projeto Fedora informou que uma das contas de acesso a um servidor de infraestrutura foi comprometida. A conta não fazia parte do grupo administrativo, mas tinha privilégios suficientes para alterar pacotes do software. Deste modo quaisquer invasões realizadas nestes repositórios podem trazer sérios problemas aos usuários do sistema, principalmente por estes ataques serem imperceptíveis ao usuário. Por este motivo decidimos utilizar o APT como foco da nossa pesquisa e testes dos mecanismos de segurança. No decorrer deste artigo abordaremos sobre esses testes e os resultados obtidos. Gerenciador de pacotes Antes de começarmos a falar sobre os gerenciadores de pacotes, temos que primeiramente saber o que seria um pacote de software no Linux. Pacotes de software são arquivos compactados contendo toda a estrutura necessária para a instalação, remoção, atualização e configuração de aplicativos. Normalmente são arquivos compactados, contendo todos os arquivos binários do aplicativo, arquivos de configuração, Shell Scripts, documentação e outros arquivos necessários para que a aplicação funcione corretamente (FERREIRA, 2006). Os pacotes têm como finalidade facilitar a manipulação do gerenciador de pacotes, tornando a instalação do aplicativo mais rápida, não havendo a necessidade de compilar e instala o aplicativo manualmente. Cada distribuição Linux utiliza um formato de empacotamento de software específico. Vejamos na tabela abaixo alguns formatos de empacotamento das principais distribuições usadas atualmente: Formato.rpm.deb.tgz Tabela de formatos de pacotes de software Linux Distribuições que usam o formato Red Hat Enterprise e distribuições derivadas. Debian GNU/Linux e distribuições derivadas. Slackware e distribuições derivadas.

3 Os gerenciadores de pacotes auxiliam o usuário a instalar o pacote em questão, além de realizar a compilação do código fonte do programa, empacotamento de binários e até a criação de novos pacotes. Vejamos na tabela abaixo alguns gerenciadores mais usados atualmente e suas respectivas distribuições: Gerenciador RPM (Red Hat Package Manager) DPKG (Debian PacKaGe) Slackpkg Tabela de gerenciadores de pacotes Distribuições que utilizam o gerenciador Red Hat Enterprise e distribuições derivadas. Debian GNU/Linux e distribuições derivadas. Slackware e distribuições derivadas. Esta pesquisa se baseia na distribuição Ubuntu, logo iremos falar com mais detalhes sobre seu gerenciador de pacotes, o DPKG. O DPKG é um poderoso gerenciador de pacotes que conta com vários desenvolvedores por todo o mundo. O arquivo gerado pelo seu empacotamento tem como extensão.deb e permite realizar a instalação, atualização, configuração, remoção, purgar, consultar e construir os pacotes de software (FERREIRA, 2006). Apesar do DPKG ser um poderoso gerenciador de pacotes, o mesmo pressupõem que o pacote já esteja no disco local não havendo necessidade de realizar o download. Porém quando o sistema precisa ser atualizado há necessidade de realizar o download dos pacotes necessários, para isso utiliza-se um gerenciador avançado de pacotes. No caso do DPKG, seu respectivo gerenciador avançado de pacotes é APT (Advanced Packaging Tools). O APT tem por objetivo conectar um computador a vários repositórios de pacotes diferentes e auxiliar na instalação, atualização e configuração dos pacotes nativos do sistema e de terceiros. A funcionalidade do APT mais utilizada é o apt-get, esta utiliza o arquivo /etc/apt/source.list para consultar a lista de pacotes existentes no repositório, podendo receber parâmetros que realize o download de um pacote e o instale-o na máquina do usuário. A partir da solicitação de uma instalação ou atualização de um pacote, o APT irá ler o arquivo packages, verificar as dependências exigidas pelo pacote, verificar o status do servidor, verificar o tamanho do(s) pacote(s) e o tamanho disponível no disco, fazer o download do pacote no endereço especificado e por último chamar o DPKG para realizar a instalação ou atualização do pacote. O ponto mais sensível neste processo é a transferência do pacote do repositório oficial para a máquina do usuário que é realizada através dos protocolos HTTP ou FTP. Pela grande disponibilidade de servidores Web, a forma mais utilizada para comunicação entre o APT e o Repositório é o protocolo HTTP (NEMETH, 2007). A alta interação do APT com ambientes externos impõe que o mesmo possa garantir que o repositório ao qual está enviando e recebendo dados é verdadeiro e que não causará nenhum dano ao sistema operacional e nem deixará a máquina exposta na rede ethernet. Para isso ele utiliza chaves públicas para a autenticação dos pacotes e também do repositório. A forma utilizada para validar o repositório é o download do arquivo Release.gpg e a autenticação das assinaturas do repositório, caso as assinaturas não forem autenticadas ou o arquivo não seja baixado uma mensagem será apresentada o usuário perguntando se autoriza o download e instalação do pacote de um repositório não autenticado [2].

4 No próximo capítulo, veremos alguns cenários que testaram os mecanismos de segurança utilizados pelo APT para garantir a integridade do sistema da máquina do usuário. Cenários para teste de vulnerabilidades O ambiente para execução dos cenários foi montado com duas máquinas virtuais, sendo a primeira utilizada para a criação de um Mirror do Repositório Oficial e a segunda para simular a máquina de um usuário. Para a construção do repositório foi utilizada a ferramenta debmirror para criar um mirror do Repositório Oficial em uma máquina virtual com o Sistema Operacional Ubuntu Server 10.04 LTS. Já na máquina do usuário foi instalado o Sistema Operacional Ubuntu 10.04 LTS. Com este ambiente montado, podemos inserir pacotes infectados no repositório e induzir o usuário a baixá-los e instalá-los em seu sistema. Com o repositório falso funcionando realizamos um redirecionamento de DNS, que consiste em redirecionar o usuário para o repositório falso no momento em que realiza a solicitação ao repositório oficial do Ubuntu (br.archive.ubuntu.com) para iniciar uma comunicação. Para realizar este primeiro ataque, foi realizado um mapeamento IP/nome de domínio no arquivo /etc/hosts da máquina do usuário. Foi obtido um resultado positivo, pois todo o tráfego do APT foi direcionado para o repositório falso. Os cenários descritos a seguir possuem este redirecionamento como base. Cenário 1 Instalação de pacote infectado a partir do repositório falso O objetivo deste cenário é instalar um pacote infectado proveniente de um repositório falso. O pacote escolhido para ser infectado foi o hello_2.4-3_i386.deb, este foi descompactado e teve a descrição do arquivo control alterada, sendo compactado novamente e inserido no repositório falso. Na máquina do usuário foi executado o comando: apt-get install hello Esta linha solicita que o APT realize o download e a instalação do pacote, o resultado esperado e obtido foi o bloqueio do processo, você pode estar se perguntando como o APT conseguiu identificar que o pacote é falso? Antes de realizar o download, o APT obtém do repositório a chave MD5 do pacote e a compara com as chaves existentes no arquivo Packages como esta chave não existe no arquivo o processo é bloqueado. Cenário 2 Alteração dos arquivos Packages, Release e inserção de um pacote não nativo Mediante aos resultados do Cenário 1, resolvemos alterar os arquivos Packages e Release, assinando os arquivos digitalmente com a assinatura GPG do repositório falso.

5 A alteração do arquivo Packages foi realizada automaticamente através da linha de comandos: dpkg-scanpackages main /dev/null >main/packages 2>/dev/null Em seguida compactamos o arquivo Packages nos formatos.gz e.bz2. Agora alteramos o arquivo Release [do repositório] inserindo a chave MD5 dos arquivos Packages.gz, Packages.bz2 e Release [do arquivo Packages] e assinamos o Release [do repositório] com a assinatura digital GPG utilizando a linha de comando abaixo: gpg - -output Release.gpg sing Release O resultado obtido neste cenário foi que o APT ao baixar o arquivo release do repositório, através do comando apt-get update, o mesmo informou que a chave do repositório falso não era valida em comparação com a chave do repositório oficial do Ubuntu. Mas deixou a opção do usuário escolher se gostaria continuar o processo ou não. Neste ponto o usuário pode não ler a mensagem atentamente e permitir a instalação do pacote e por consequência permitir que a invasão ocorra ou pode desistir da instalação e manter parcialmente a integridade de seu sistema. Integridade parcial, pois mesmo o usuário não aceitando continuar a instalação do pacote infectado o seu computador já não está mais comunicando com o repositório oficial por causa do redirecionamento de DNS. Conclusão O APT possui alguns mecanismos de segurança que vem por padrão habilitado como é o caso do apt-key, secureapt entre outros, uma das garantias que estes mecanismos oferecem é a validação da chave do repositório, como comprovado no cenário 2. Como todo software não é totalmente seguro, o APT também deixa brechas que podem ser utilizadas por um atacante, como foi comprovado com o cenário 1 onde redirecionamos o APT para comunicar com um repositório falso e o mesmo não verificou se o repositório ao qual estava comunicando era o mesmo oficial. Referências bibliográficas [1] FERREIRA, Rubem E. Gerenciamento de Pacotes de Software no Linux. São Paulo. Novatec Editora. 2006. [2] MOZICODO. SecureApt. Disponível em <https://help.ubuntu.com/community/secureapt>. Acesso em 07 set. 2011. [3] NEMETH, Evi; SNYDER, Garth; HEIN, Trent R. Manual Completo do Linux Guia do administrador. 2. ed. Pearson Prentice Hall. 2007. [4] Responsável por desenvolvimento de Linux popular tem conta invadida. Disponível em <http://g1.globo.com/tecnologia/noticia/2011/01/responsavel-por-desenvolvimento-delinux-popular-tem-conta-invadida.html>. Acessado em 13 set. 2011.