sexta-feira, 24 de abril de 2009

Vírus em Linux, Yes eles existem !!

Eu queria entender uma coisa. Porque as pessoas têm a tendência a mistificar coisas e tomar estas mistificações como verdades quase absolutas? Uma delas é a que diz que não existem vírus pra Linux.

Primeiro vamos comentar o texto que achei em um site da UnB:
Por que é que vírus de Linux não é mais do que um assunto para rodas de ciberpapo? Por que é que os vírus para Linux não nos afetam do jeito que os vírus para produtos Microsoft afetam, a usuários do Windows em particular, e aos cibernautas em geral?

Existem várias razões porque o assunto vírus-de-Linux é abobrinha. Quase todas elas já familiares para quem usa o kernel, quase todas elas ainda desprezadas por quem gosta de ser enganado (tagarelando abobrinhas tipo "é menos atacado porque é menos usado"). Mas há uma razão, muito importante, que estudiosos da evolução biológica podem apreciar. Antes, porém, devemos saber porque o Linux não dá mole para vírus.




A razão pela qual nunca vimos uma epidemia de verdade com vírus de Linux é simplesmente porque nenhum vírus conseguiu, até hoje, prosperar no ambiente que o Linux propicia. Os que já surgiram com esse alvo não são mais do que curiosidades técnicas (Staog foi o primeiro deles, e o único observado à solta, até 2005, foi o Bliss). A realidade é que não existe vírus viável para Linux.


Ao navegar um pouco e entrar em alguns fóruns e sites sobre o tema, vejo que o povo anda meio que subestimando o poder dos vírus que existem e que existirão para Linux, muitos usuários de Linux ou Unix acham que basta se aplicar uma política com chmod aki, tirar um usuário root ali, usar um chroot acolá e criar boas senhas que resolverá todos os problemas.

Ora meus amigos! Isso já é costume cultural em comunidades Unix e Linux, isso só não é feito no mundo Windows, onde todos usuários alienados (adoro essa palavra) acham que o dono do computador por hierarquia deva ser o administrador e como ele tem de fazer tudo, tendo assim a sensação de poder e o uso de outros usuários restritos um estorvo.

Então, existem vírus para Linux? Sim. 863. E o mais recente é de 2009.

A Trend Micro afirma que há 5,5 milhões de vírus e ameaças para MS-Windows.

E que a indústria de antivírus mentiu por 20 anos dizendo que conseguia proteger os usuários...




No Linux os cuidados básicos quanto a isso já estão, eu diria, 75% acertados, então como o vírus nos atacaria? Muito simples: lembram da praga do buffer overflow? Bom, acho que já deu pra você imaginar tudo não é? O que mais se tem de erro em um sistema Unix ou Linux é o buffer overflow, e o que é o buffer overflow a grosso modo?

Eu diria que são programas mal projetados em suas validações de IO, que ao estourar manda para um certo lugar da memória ou processador uma certa ordem, como é o caso daquelas fotos pornográficas que de maneira bem planejada têm em seu final comandos como c:\windows\cmd para "ferrar" o mal feito Internet Explorer.

Bom, sabemos que o Linux e Unix dão um show nisso (vide sendmail e bind), então um vírus capaz de explorar um desses possíveis estouros de memória no Linux, pode muito bem ser feito para explorar um programa qualquer que rode como root e que seja usado em rede para entrar no sistema e depois baixar o que bem quiser para completar sua tomada de poder na máquina local, colocando qualquer política de chmod, chroot, chown e senhas no "chinelo". Depois de tomado o sistema (ownado) , o vírus altera o ps para não ser visto no sistema e por aí vai. Esse é o caso dos vírus Lion e Adore, que atacam vulnerabilidades no BIND.

Voltando ao tópico, os tais vírus para Linux só conseguiram contaminar máquinas que não tinham sido atualizadas para correção de segurança. Os administradores esquecidinhos ou atrasadinhos....

Neste artigo aqui você pode ver estas informações.
E olha que nesses 863 englobam toda ameaça automatizada contra o Linux, como root kits, worms e scripts para invasão.
Um conceito muito mais abrangente do que usado na definição para Window$.

Pra quem está cético quanto ao assunto, o artigo do começo desse parágrafo e mais dois artigos (aqui e aqui), ambos de 2008, corroboram o tema, vindo à validar as afirmações de que vírus em Linux são uma realidade e que é só questão de tempo para uma maior disseminação dos ataques.

Mas se Window$ já tem mais de 360 MIL vírus e ameaças de todo tipo, e todo dia surgem mais, por que tão poucos no Linux?

Alguns fatores combinados:

Engenharia social

A maioria dos spam e sites virulentos usa velhos truques para ATRAIR os usuários a fazer alguma coisa, como ler email (só ler já pode contaminar no windous*), abrir um anexo, visitar um site (sim, você pode contaminar a máquina enquanto fica babando por aquela foto gostosona num site).
Apelam para instintos básicos, como medo (será que levanta agora?), insegurança (será que é pequeno?), luxúria (gostooosa!), ganância (fique rico sem fazer nada), etc.

Arquitetura do sistema

No Linux, Unix e outros, o projeto é diferente. Se levou segurança em consideração desde a idealização, conceito inicial. Assim, é muito mais difícil inventar vírus para eles. E quando se consegue, espalham-se muito menos, pelos outros fatores.
Não existe sistema inexpugnável.

Configurações do sistema

No Debian GNU / Linux, no FreeBSD, no Unix, e em um grau um pouco menor nas outras grandes distribuições linux, as configurações default seguem um conceito básico:

Tudo está fechado, nada é permitido até que o administrador autorize.

Quanto mais aberto e mais permitido ficam as configurações, mais "fácil" é a distribuição.

Chega ao extremo do Kurumin, derivado do Knoppix, e Linspire que são configurados com quase tudo liberado totalmente, o que os torna quase tão "fáceis" e inseguros quanto Window$.

Adianta comprar um cofre e colar na porta um Post-It* com a combinação?

Aliado a configurações default mais seguras, dificilmente os sistemas são configurados exatamente iguais.

Comunidade de desenvolvedores e usuários

Um dos sustentáculos do Linux é uma comunidade forte. E o Debian tem uma das mais fortes e participativas comunidades de desenvolvedores e usuários. Sim, usuário informado é valioso.

A rápida troca de informações viabiliza reações e soluções rápidas, minimizando danos.

Existe uma equipe formal de segurança.
Bug reports são levados muito a sério, rapidamente e às claras.

Modo de usar o sistema

O Linux implementa totalmente o conceito de usuário e permissões e deve ser usado assim. Um usuário pode fazer determinadas coisas, usar determinados programas, ter acesso a determinados arquivos. Até mesmo os programas funcionam dentro de um ambiente de usuário.

Isso torna mais "difícil" a configuração (precisa autorizar explicitamente) e o "uso" (se não foi autorizado, não pode).
Algumas distribuições, com já citado, deturpam esse conceito, para "facilitar", mas aumentando o risco de segurança demais.

No modo correto de uso, fica intrinsecamente limitado o tipo e a extensão de danos que um vírus ou invasor pode causar.

Esse conjunto de fatores também leva ao fato de que a quase totalidade dos ataques a máquinas linux seja MANUAL.

O atacante normalmente usa algumas ferramentas para examinar a máquina, tentando descobrir que portas estão abertas, e quais programas e versões estão operando. Procura principalmente versões desatualizadas e ou inseguras.

Aí geralmente ele cruza dados numa matriz de ataque, e decide que ferramentas usar e envia comandos e ou scripts e verifica que tipo de benefícios ele poderá ter.
Embora seja mais complexo que isso, você já notou que é uma situação diferente, com soluções diferentes também.

Usuários comuns estão em perigo?

Ao ler este artigo aqui você ficará horrorizado de como os usuários são parte importante do problemão que se tornaram os vírus no Window$ e horrorizado de como o fabricante aborda o problema. Inevitavelmente, sempre você, o usuário ficará com o prejuízo e os custos dos remendos.

Um ditado corrente entre os administradores de informática é de que não há nada mais perigoso que um usuário inocente e ingênuo. Por isso que distribuições linux mais preocupadas com segurança, como o Debian se preocupam em configurar e funcionar protegendo o usuário dele mesmo. Pode até ficar um pouco mais "difícil" ou trabalhoso no início, para autorizar explicitamente o que você quer fazer. Mas os ganhos ao longo prazo são plenamente compensadores.

Para usuários muito assustados com segurança tem solução?

Se bancos e até os computadores do Pentágono já foram invadidos, o que se pode fazer? Para os realmente apavorados com segurança, ou que têm dados extremamente sensíveis, podem analisar o Debian com as modificações não triviais (2) SELinux (Security Enhanced Linux) criadas pela NSA (National Security Agency). Esses são paranóicos com segurança. Veja nesta página PORQUE escolheram o Linux.

Por que, então, existem programas antivírus para Linux?

O Linux é muito usado como servidor de arquivos, de impressão, de email, firewall, proxy, web, intranet, internet, extranet, e até de aplicação para redes de clientes Window$. Assim, muitos arquivos e tráfego windous* passam por dentro dele.

Portanto, é um bom local para instalar um programa antivírus para limpar arquivos e tráfego, para proteger a si e aos clientes windous*.

Qual a minha previsão então? Se o Linux continuar crescendo e nenhum outro Unix-like superior tomar a cena no mercado desktop, os vírus crescerão drasticamente. Considerando que cada programa que existe para console, ao ser pesquisado em lugares como o CERT revela uma falha grave, o assunto fica ainda mais sério. Qual seria a solução? Ficar atualizando o sistema dia e noite? Bom, isso seria tão divertido que a pessoa não faria mais nada a não ser ficar atualizando todos os executáveis do sistema.

E em se tratando de kernel ...

Trocar o kernel? Não sei, até hoje o kernel cresceu, teve novidades, mas nada que fosse revolucionário em segurança ao meu ver, me desculpe a franqueza.

Pra mim os criadores do kernel deveriam encarar esse assunto com seriedade e não ficarem querendo apenas expandir o sistema pra servidores da IBM da vida.

O kernel 2.6 até prometia algo pra acabar com os buffers overflows, mas foi mais uma promessa do que realidade, deveria-se criar uma maneira de evitar que somente usuários poderosos pudessem fazer algo no sistema, os controles de permissões estão aí pra ajudar nisso, não entendo por que somente o root pode usar algumas portas TCP do sistema e os outros usuários não. O que adianta o usuário comum não poder fazê-lo e um atacante poder?

O kernel por fim deveria ter uma espécie de filtro que impedisse usuários comuns ou eventos incomuns tomassem poderes de root de uma hora pra outra, como é o caso do su, que deveria ser banido do console, deixando assim um usuário comum completamente isolado do root.

Bom, é isso. Espero ter esclarecido um pouco as mentes irriquietas de vocês.

Fontes:

VivaoLinux - http://www.vivaolinux.com.br/artigo/Os-Virus-e-o-Linux/
TrendMicro - http://resources.zdnet.co.uk/articles/features/0,1000002000,39440184,00.htm
Página na UnB - http://www.cic.unb.br/docentes/pedro/trabs/virus_no_linux.html