[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Virus em Linux



On Tue, 28 Nov 2000 11:18:30 -0200
Eduardo Marcel Macan <macan@colband.com.br> wrote:

> 	Um sistema de arquivos serve para impedir que um usuário comum
> possa remover e substituir uma DLL do sistema, você parece não ter
> lido nada sobre segurança de sistemas?

Não discuto que as permissões afeitam a segurança de um sistema. Nem
discuto que um virus afeita a segurança de um sistma. Mas a segurança
de um sistem afeita muito mais que um virus. Por outra parte sabemos
que um atacante, seja ou não um virus, pode tentar conseguir
permissões de superusuário, e às vezes consegue. Será um obstáculo e
não um impedimento. Em qualquer caso, estavamos falando de virus em
Linux. Que existe em Windows (incluindo ao NT/2k) é bastante bem
conhecido.

> 
> 	99% dos "vírus" que eu já vi vão e trocam uma DLL fundamental
> do Windows por algo próprio, como o Matrix e diversos outros que trocam
> o wsock32.dll, se existisse uma flag consistente de sistema que impedisse
> isso, você poderia sofrer com a consequência do vírus, mas não
> o espalharia, contendo o estrago no primeiro nível de infecção.

Pois parece que não há visto muitos virus! É aqueles que atacam o MBR?
E aqueles que simplesmente são ligados num executável. Podem, mas não
precisam dos DLL. Em realidade não fazem isto muitas vezes. Do que
está falando já é o efeito nocivo do virus, menos o virus
mesmo. Lembra que existem dois partes de um vírus?

> 	E você está argumentando que "eles estão cientes do problema
> e dizem que nunca vão fazer, mas e se der a louca e eles fizerem?"
> Ora, se fizerem alguém vai disponibilizar uma versão desprovida
> desta característica ou desabilitada por default, que será certamente
> adotada por ser mais segura.

Desculpa, mas perdi o contexto aqui. (??)

> 	A característica fundamental dos sistemas e programas livres é
> que não somos obrigados a aceitar o que nos fornecem, podemos modificar
> da maneira que for conveniente para nós mesmos ou nossos usuários.

Bem; pode-me dizer que porcentagem dos usuários Linux em Brasil tem
lido o código fonte do kernel e quantos teriam o conhecimento para
alterá-o? Se depende de outras pessoas fazendo isto, também é possível
que lo faza uma empresa sem open source. Eu sou usuário de Linux e
usuário de free software e open source faz muitos anos. Mas o fato de
open source não facilita ou impede a criação de um vírus. São temas
totalmente independentes.

> Claro, podemos tornar um software tão 
> absurdamente inseguro quanto quisermos, o fato é que não queremos.
> E temos toda a motivação contrária. Ninguém seria idiota o
> suficiente de mandar um programa que executa por default scripts enviados
> por e-mail. Ooops... isso acontece por aí com software comercial. ;)

Einstein disse que há duas coisas infinitas: o universo e a estupidez
humana. No caso de universo, ele não tinha a certeza absoluta. No
outro caso pode ser, porque não só existe software comercial que faz
isto, senão millões de pessoas respetuosas, que usam isto! Vi uma
reportagem da CNN sobre o I Love You, citando as grandes empresas e
instituições danificadas. Foi um certificado de probreza mental
universalizado, incluindo o ministério de defensa norte-americano.

> Você sabe o que significa preemptivo? E sim, o Linux é preemptivo. 
> Ninguém falou nada sobre multitarefa aqui, falamos sobre multiusuário.
> Preemptivo significa que o kernel tem o controle do tempo que será usado
> por cada processo, e tem o poder de tomar de volta este tempo e dá-lo
> para outro processo segundo seu esquema de prioridades. Um sistema não
> preemptivo é aquele (como o Windows 3.X) que não é capaz de 
> administrar a fatia de tempo de execução delegada a cada processo,
> no caso clássico do windows 3.1, o próprio processo era responsável
> por sinalizar ao sistema operacional que seu tempo de execução acabou,
> ou isso era sinalizado pelo usuário dando o foco a uma janela ou outra.
> Isso é não-preemptivo. E é por isso que quando um programa do
> win31 "travava" tudo o mais "travava" também, porque ficava dormente
> esperando o retorno do processamento.

Acho que sim conheço a palabre pre-emptivo. É um termo da
economía. Não sou economista, mas se bem lembro é o fato que
determinadas pessoas tem o direito de decidir se querem uma adquisição
antes que outros. Nos sistemas operacionais no final afeita quem tem
direito de usar ou acessar os recursos físicos de uma máquina. E não
estamos falando de multiusuário. Que usuário é o kernel? Nenhum! O
kernel não executa em nome do root! Ele tem privilégios que nem o
`root' tem. É o modo `supervisor' que permite a um virus fazer o que
quer fazer. Nem o root pode executar um programa que tome controle
sobre o sistema, porque é o kernel tem este controle
`pre-emptivamente', antes que qualquer outra entidade. Os velhos TSR
no DOS, são exemplos obvios como pode ser feito. Hoje é um pouco mais
complicado, especialmente no NT, mas não é imposível. O Linux ainda
não atingiu o 100% de este controle, mas está muito perto.

> Multitarefa significa que vários processos podem estar ativos ao mesmo
> tempo. Multiusuário significa que vários usuários possam compartilhar
> a máquina, e ter segurança e distinção de propriedade dos recursos
> da mesma. O Windows 9X não é multiusuário, deixando o controle
> de perfis para as aplicações. Embora seja multitarefa, podendo executar
> diversas aplicações ao mesmo tempo (embora conteste-se a eficiência
> com que faz isso).

Certo. O fato que os win9x não são multiusuário mas multi-tarefa, e o
fato que exitem vírus para eles, prova que estamos falando de
multi-tarefa e não multi-usuário. Pelo menos eu acho que o tema era o
vírus, não a segurança em geral. Certo?

> > > O GNU/Linux tem nativamente inúmeros níveis de privilégios, e as
> > > distribuições preocupadas com segurança como a Debian GNU/Linux
> > > chegam a impedir que o privilégio de acesso máximo inicialize o
> > > ambiente gráfico, e forçam o usuário durante a instalação
> > > a criarem uma conta de privilégio baixo para uso diário, instruindo
> > > o usuário quanto a sua importância , e forçando o uso de senhas
> > > já durante a instalação.
> > 
> > Irrelevante no tema de vírus.
> 
> Vide minha explicação anterior.

Idem.

> > Não lembro ter visto nenhum update para linux com respeito a vírus.
> 
> Simplesmente porque não houve necessidade, graças ao design 
> dos sistemas Unix! :)

Certo, e particularmente o design da pre-emptividade que não há
proceso que não pode ser controlado pelo kernel. O problema do vírus
no Windows é que
	kill -9 `pidof virus`
não funciona. Mas isto não é uma exclusividade do Unix mas si uma
carência dos WinX.

> Você viu algum vírus de GNU/Linux? O máximo que se pode fazer hoje
> é mandar
> um programa que diz que faz uma coisa e faz outra... mas se o usuário
> seguir a norma básica de segurança de não usar o sistema como "root"
> nada vai conseguir fazer com que uma biblioteca do sistema seja substituída,
> ou o sistema torne-se inutilizável graças aos níveis de privilégios.

Dois vezes errado. Primeiramente um programa assim não é
(necessariamente) um vírus. Para isto precisa de muito mais controle
sobre a máquina. E segundo, basta com usar uma variável de entorno
para incluir outro diretório na lista, e o sistema usará outras
bibliotecas, provavelmente no espaço e diretório do usuário. É uma das
coisas que adoro no Unix, porque permite manter diferentes versões de
prova. Posso instalar uma coisa no meu diretório casa ou em *local*
sem deletar o software já existente. Se funcionar, fica, caso
contrário basta deletar o novo, e o velho vai ser usado sem ação
adicional; não preciso de uma re-instalação porque nunca foi
desinstalado. Não preciso das permissões de root para usar uma
biblioteca não padrão. Por outra parte são os trojan horses que sim
conseguem fazer isto mesmo no nível de root, isto é, com efeito para
todos os usuários. O problema é que um trojan horse é um trojan horse
e não um vírus. São duas coisas diferentes. Nota: Um programa que usa
uma biblioteca alterada, mesmo executado por root pode ser matado.
Você não pode matar um vírus porque não existe na tabela de processos
do kernel; se for assim, o kernel tería controle sobre ele. Isto é uma
contradição direta com a definição do vírus.

Mas concordo em um ponto. Cada día é mais difícil fazer um vírus. Os
sistemas são muito mais complexos (i.e., os desenhadores de OS não
deixam o campo tão fácil como antes, mesmo aqueles da Microsoft) que
nos días do DOS, e cada vez há menos pessoas com capacidade de
pentetrar tão profundamente. Uma teoría pessoal minha é que com a
Internet e os programas de Multimídia, mesmo os script kiddies estão
bem entretenidos, e não pensam tanto em estudar. Sim. Eu acho que as
novas gerações são menos preparadas que as velhas, mas precisaríam de
bem mais. Assim hoje encontramos bastante poucos vírus, só alguns
scripts idiotas para fazer um worm que aproveitam a estupidez de
algumas casas comerciais e millões de usuários confiados.

> E se NT deixa isso acontecer (o que eu acho que não, a não ser que
> o usuário Administrador execute o vírus) é por problemas de design
> do sistema operacional, porque até onde eu sei as barreiras estão
> lá.

Não. Um vírus em NT aproveita o fato que o aplicativo pode tomar
controle parcial de supervisor na máquina. Você nunca teve que
discutir com um usuário porque são preciso permissões especiais para
montar um floppy ou CD (especialmente numa máquina com múltiplos
usuários realis, não só com esta capacidade)? O meu jeito de explicar
é dizer, que se ele mesmo está lendo um CD, e o outro desmonta o CD no
momento que o programa está lendo os dados, não vai ficar
feliz. Precisamos de alguem que arbitre isto. A solução em Windows é
dar ao usuário o que quer, abrindo estos buracos. O aplicativo mesmo
em NT sim tem acesso a Hardware, é estos acessos são onde um vírus
pode (tentar) atacar. Isto é parte da definição de um vírus. Existem
muitos documentos na rede; não vou reproducir aqui.

> De qualquer forma um usuário não deveria sair executando o que mandam
> por e-mail pra ele, e isso vale para qualquer sistema operacional.

Veja a citação de Einstein. :-)

> Abração,  e a propósito, sugiro que você leia o livro de
> Andrew Tanembaum "Modern Operating Systems Design", disponível em 
> português sob o título de "Design de sistemas operacionais modernos",
> não me lembro por que editora. Isso pode ajudá-lo a ver porque o
> design é importantíssimo, e porque um sistema de arquivos contribui
> para a segurança da informação, e também a melhor instruí-lo
> sobre alguns conceitos básicos de sistemas operacionais como 
> preemptivo X não-preemptivo, multitarefa, multiusuário, multithreading,
> etc etc etc...

O Minix foi o primeiro sistema operacional que eu usei faz muitos
anos. Conheço o livro e conheço a discussão com Linus sobre os
sistemas operacionais monolíticos (que certamente vem ao caso).

Eu nunca escribei que os níveis de permissões num sistema de arquivos
não sejam importante para a segurança. Mas o tema aqui são os vírus, e
como estes operam num nível de kernel, o sistema de arquivos com a sua
segurança fica debaixo dele, totalmente indefenso. Não é relevante AQUI.

PD. Acho um inconveniente fazer um crosspost tão cumprido. Além disso
acho que não tenho permissões de responder na maioría das listas que
você inclue no CC. Assim me permiti reduzir esta lista de endereços.

--
Christoph Simon
ciccio@prestonet.com.br
---
^X^C
q
quit
:q
^C
end
x
exit
ZZ
^D
?
help
shit
.



Reply to: