Shellshock: Como proteger seus servidores Unix, Linux e Mac

System

Este artigo, escrito por Steven J. Vaughan-Nichols para a ZDNet, nos trás informações relevantes a respeito da recente falha de segurança encontrada no interpretador de comandos Bash, incluso na grande maioria das distribuições GNU/Linux mas também podendo afetar os sistemas operacionais Unix e MacOS. Por isso resolvi escrever uma tradução livre dos pontos principais deste artigo, para que administradores de sistemas aqui no Brasil, e em outros países que falem a língua portuguesa, possam tentar contornar este problema, e manter seu parque de servidores o mais seguro possível com relação a esta vulnerabilidade.

O escritor já inicia seu artigo informando que, embora a falha de segurança seja uma séria ameaça aos sistemas operacionais supracitados, nem sempre um servidor que esteja executando o Bash estará vulnerável, a não ser sob determinadas condições. Primeiramente, o atacante precisa encontrar não apenas um sistema que esteja executando a versão deste interpretador de comandos sem as primeiras correções disponíveis, mas que também este sistema permita o acesso remoto a este shell. Portanto, caso você esteja executando um sistema que não contemple o ssh, rlogin, ou outro programa de desktop remoto, você provavelmente está seguro o suficiente.

Steven também nos alerta a respeito de um problema sério, com relação a dispositivos que trazem Linux embutido, como roteadores, switches ou appliances, e recomenda que, caso esteja utilizando equipamentos antigos e sem suporte, o que torna a correção do problema virtualmente impossível, então o melhor será substituí-los o mais brevemente possível.

Ele afirma também que, atualmente, o perigo maior quanto ao Shellshock é relacionado aos servidores pois, de acordo com o National Institute of Standards and Technology, a vulnerabilidade recebe a mais alta pontuação nos quesitos de impacto potencial e nível de explorabilidade. A Red Hat apresentou um relatório com os vetores de ataque mais comuns, que foram os seguintes:

Httpd ( servidor web ): Scripts CGI ( Common Gateway Interface ) são geralmente afetados pela vulnerabilidade. Quando um script CGI é executado pelo servidor web, ele utiliza variáveis de ambiente para passar dados ao script. Essas variáveis de ambiente podem ser controladas pelo atacante. Se o script CGI chamar o Bash, o script poderia executar código arbitrário como se fosse o usuário httpd. Mod_php, mod_perl e mod_python não utilizam varáveis de ambiente, portanto acredita-se que não sejam afetados.

Secure Shell ( ssh ): Não é incomum a restrição de comandos remotos que um usuário pode executar via ssh, como rsync ou git. Nessas instâncias, essa vulnerabilidade pode ser utilizada para executar qualquer comando, não apenas um comando restrito.

Dhclient: O Dynamic Host Configuration Protocol Client é utilizado para obter automaticamente informações de configuração de rede via DHCP. Este cliente utiliza diversas variáveis de ambiente e utiliza o Bash para configurar a interface de rede. Conectar a um servidor DHCP malicioso poderia permitir ao atacante executar código arbitrário na máquina cliente.

CUPS ( servidor de impressão para Linux, Unix e Mac OS ): Acredita-se que o CUPS seja afetado por esta vulnerabilidade. Diversos valores fornecidos pelos usuários são armazenados em variáveis de ambiente quando os filtros do CUPS são executados.

Sudo: Comandos executados com o sudo não são afetados por essa vulnerabilidade. Ele procura especificamente por variáveis de ambiente que também são funções. Ainda seria possível para o comando em execução definir uma variável de ambiente que levaria a um processo filho do Bash a executar código arbitrário.

Firefox: Acredita-se que não seja possível que o Firefox seja forçado a definir variáveis de ambiente de uma forma que poderia permitir que o Bash executasse comandos de código arbitrário. Mesmo assim é recomendável realizar a atualização do Bash já que é comum a instalação de diversos plug-ins e extensões que poderiam permitir esse comportamento.

Postfix ( servidor de e-mail ): Este servidor vai substituir vários caracteres por um ponto de interrogação (?). Mesmo o Postfix executando chamadas ao Bash de diversas formas, acredita-se que não seja possível que ele configure variáveis de ambiente arbitrárias. Entretanto, é possível que um filtro possa configurar variáveis de ambiente.

Destes, o ataque aos servidores web parecem ser os mais comuns até o momento, sendo executados contra sistemas executando tanto Linux quanto Mac OS X. James Blasco, diretor de laboratórios na AlienVault, executou um honeypot a procura de atacantes e verificou diversas máquinas tentando explorar a vulnerabilidade do Bash. A maioria delas somente verificando se os sistemas estavam vulneráveis, mas também encontraram dois worms que estavam ativamente explorando a falha de segurança e instalando partes de malware no sistema. Outros pesquisadores descobriram que os atacantes tentam plantar IRC bots de ataques de negação de serviço, ao mesmo tempo que buscam por logins de usuários e senhas fracas, como ‘root’, ‘admin’, ‘user’ e ‘123456’.

James mostra então como verificar se o seu sistema está vulnerável, e para isso recomenda a execução do seguinte comando através do Bash:

env x='() { :;}; echo vulnerable’ bash -c “echo this is a test”

Se como resultado você obtiver:

vulnarable this is a test

Sinto muito, mas isso são más notícias pois seu sistema está vulnerável e você precisa tomar providências quanto a aplicação de correções o mais breve possível.

Se, como resultado, você obtiver:

bash: warning: x: ignoring function definition attempt bash: error importing function definition for `x’ this is a test

Então você está tão seguro quanto é possível estar no momento, pois essa versão provavelmente já tem alguma correção aplicada.

Embora a grande maioria das distribuições tenham liberado correções que impedem a maioria dos ataques, foi descoberto que as correções liberadas para essa vulnerabilidade são incompletas. Um atacante pode prover variáveis de ambiente com comandos arbitrários especialmente construídos e que serão executados em sistemas vulneráveis acessados, sob certas condições.

Enquanto ainda é incerto de que esses ataques possam ser utilizados para hackear o sistema, é bem claro que eles podem ser usados para travá-lo, graças a uma exceção de ponteiro nulo.

Neste meio tempo, recomenda-se que as correções disponíveis sejam aplicadas o mais rápido possível, e que se acompanhe o lançamento das novas correções, que já estão em desenvolvimento para cobrir a vulnerabilidade ainda existente no Bash.

Caso você tenha um servidor web Apache em execução, aqui vão algumas regras para o Mod_Security, compiladas pela Red Hat, que podem interromper tentativas de exploração do seu interpretador de comandos:

SecRule REQUEST_HEADERS “^\(\) {”

“phase:1,deny,id:1000000,t:urlDecode,status:400,log,msg:’CVE-2014-6271 – Bash Attack'”

SERVER_PROTOCOL values:
SecRule REQUEST_LINE “\(\) {” “phase:1,deny,id:1000001,status:400,log,msg:’CVE-2014-6271 – Bash Attack'”

GET/POST names:
SecRule ARGS_NAMES “^\(\) {” “phase:2,deny,id:1000002,t:urlDecode,t:urlDecodeUni,status:400,log,msg:’CVE-2014-6271 – Bash Attack'”

GET/POST values:
SecRule ARGS “^\(\) {” “phase:2,deny,id:1000003,t:urlDecode,t:urlDecodeUni,status:400,log,msg:’CVE-2014-6271 – Bash Attack'”

File names for uploads:
SecRule FILES_NAMES “^\(\) {” “phase:2,deny,id:1000004,t:urlDecode,t:urlDecodeUni,status:400,log,msg:’CVE-2014-6271 – Bash Attack'”

O escritor ainda lembra ser vital a aplicação das correções já disponíveis, mesmo que estas ainda estejam incompletas, além de se certificar de que dispõe de defesas em torno de seus servidores web, evitando surpresas desagradáveis.

Dez dicas de estudos para profissionais de Tecnologia da Informação

Studying-book

Quando me deparei com essa seleção de dicas de estudos, publicadas no blog HowToNetwork.com, percebi que tinha de compartilhá-las aqui também, já que hoje em dia existem mais e mais pessoas se dedicando aos estudos, com a intenção de obter alguma certificação profissional na área de TI, e como vi que serão úteis, inclusive no meu caso, aqui vão elas:

1 – Imprima o Syllabus: Este é o programa de estudos, ou os objetivos, tópicos, que serão cobrados durante a realização da prova. Imprima-o para que tenha uma idéia melhor sobre aquilo que você terá de enfrentar. Imprima-o e então transfira-o para uma planilha, definindo na mesma quais tópicos são apenas teoria, quais dependem de prática e quais necessitam de ambos.

2 – Escreva seu plano de estudos: Quais assuntos você vai estudar a cada dia? Quando você vai revisá-los? Quais os períodos de tempo vai separar para laboratórios práticos e simulados? Marque cada sessão realizada para que acompanhe o seu progresso.

3 – Obtenha suas ferramentas: Consiga seu leitor de PDF’s, tablet ou os livros impressos. Assine sites com informações  para membros. Baixe aplicativos de teste e compre equipamento para seu laboratório pessoal. Outra coisa, mantenha sua área de estudos a parte para que consiga estudar em paz.

4 – Construa seu quadro dos sonhos: Você deve ter uma forte razão para estudar ou vai desistir no primeiro obstáculo. Quem se beneficiará com seu sucesso? O que significa para você passar nesse exame?

5 – Ataque seu cérebro: Use múltiplos métodos para absorver as informações, redirecione todo o conteúdo, utilize recursos em áudio, vídeo, laboratórios práticos, escreva notas.

6 – Escreva um mini manual: Todos os pontos de aprendizado devem ser anotados em seu próprio livro de estudos. Carregue-o com você o tempo todo. Escreva notas sobre livros, vídeos, laboratórios práticos e simulados. Este é um importante passo do qual 99% dos estudantes não se utilizam. A não ser que você escreva, a informação não vai “colar” no seu cérebro. Só ler não é suficiente.

7 – Elimine tópicos: Utilize o programa de estudos em sua planilha para avaliar o quanto você entente cada um dos tópicos, em uma escala de 1 a 10. Trabalhe em cada uma dos pontos fracos até que não reste nenhum. Não trabalhe nos pontos fortes a não ser que seja uma revisão.

8 – Tenha disciplina: A diferença entre vencedores e perdedores é que os primeiros fazer de seus objetivos uma prioridade, e não inventam desculpas. Os perdedores estudam apenas se eles tem tempo, o que nunca acontece porque algo sempre acontece. Você tem que estudar todos os dias, durante 30 dias, para formar um novo hábito.

9 - Realize simulados: A maioria das pessoas utilizam simulados como a ferramenta final da preparação. Este é um engano. Comece a realizar simulados desde o começo e utilize-os para detectar os pontos fracos de seu conhecimento. Não realize o exame real antes de continuamente atingir 95% de aproveitamento todas as vezes que realizar os simulados.

10 – Siga em frente: Uma carreira em TI significa aprendizado continuo e atualização de habilidades. Tire um pequeno tempo para descanso após a realização com sucesso de um exame, celebre a conquista e então inicie os trabalhos para uma nova certificação.

Abraços!

Programa Hacienda, você sabe o que é isto? Não? Pois devia…

Iseeyou

Desde que o ex-agente da NSA, Edward Snowden, decidiu informar ao mundo sobre as atividades de monitoramento realizadas pela agência, a privacidade tem se tornado uma questão cada vez mais presente na vida de todos aqueles que utilizam computadores de forma ostensiva, sejam eles pessoas físicas ou jurídicas.

Em artigo recentemente publicado no site c’t magazin, jornalistas e especialistas em segurança da informação escreveram sobre o Programa Hacienda, no qual durante o ano de 2009 a agência de espionagem britânica GCHQ fez da técnica de escaneamento de portas uma “ferramenta padrão” a ser aplicada contra nações inteiras, totalizando em vinte e sete o número de países que tinham suas faixas de endereço IP escaneadas. Os serviços que eram alvo do monitoramento incluiam os tradicionais HTTP e FTP, além dos protocolos utilizados para administração como o SSH e SNMP.

Em adição ao escaneamento de portas, o GCHQ também realizava o download dos chamados banners, ou de qualquer outro tipo de informação disponível para leitura. Um banner é um texto enviado por algumas aplicações quando estão conectando a uma determinada porta associada, essa informação também pode indicar o tipo de sistema operacional utilizado pelo alvo do escaneamento, assim como algumas aplicações que este esteja executando, bem como suas versões e outros tipos de informações úteis quando se procura por serviços vulneráveis.

Um dos passos para a realização de um teste de penetração é justamente o reconhecimento dos serviços que são executados em determinado dispositivo, pois, de posse desse conhecimento, é possível a verificação da existência de vulnerabilidades que podem ainda não ter sido corrigidas pelos administradores destes sistemas e, ao realizar esse reconhecimento de forma massiva demostra que o objetivo é a coleta de informações para o mapeamento de vulnerabilidades, e não para a busca de um alvo específico. A base de dados resultante é então repassada a outras agências de espionagem localicadas nos Estados Unidos, Canadá, Reino Unido, Austrália e Nova Zelândia.

O processo de escanear e buscar vulnerabilidades na infraestrutura de redes de países inteiros para explorar é compatível com o objetivo de “Dominação da Internet”, que também é o nome de outro programa da GCHQ. Essas agências de espionagem tentam atacar todos os sistemas que puderem, presumindo que estes possam prover acesso a outros sistemas. Estes podem ser atacados simplesmente porque podem eventualmente prover um caminho até um alvo de espionagem valioso, mesmo que não existe informações atuais de que isso venha a acontecer.

Utilizando esta lógica, qualquer dispositivo se torna um alvo para colonização, pois cada alvo explorado com sucesso é teoricamente útil como uma forma de infiltração em um outro possível alvo. O escaneamento de portas e o download de banners para detecção de quais softwares estão em operação no dispositivo alvo, são apenas os procedimentos do primeiro passo do ataque. Documentos altamente secretos da NSA demonstram que as agências de espionagem envolvidas seguem a metodologia comumente utilizada pelo crime organizado digital: o reconhecimento é seguido da infecção, do controle e comando, além da extração não-autorizada de dados.

Literalmente falando, qualquer sistema computacional, conectado a Internet, se torna alvo de uma possível invasão, agora não apenas por criminosos digitais, mas também por agências governamentais de espionagem, em busca da ampliação da dominação da informação que trafega na rede mundial, portanto, a prevenção ainda é a melhor arma para combater esse tipo de invasão de privacidade e utilização indevida de informações e equipamentos.

Para saber mais, acessem o artigo original, em inglês, no site da c’t.