Poder versus segurança  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
dukejeffrie
Virtual Machine Man
[Avatar]

Membro desde: 21/08/2002 03:53:28
Mensagens: 661
Offline

Eu tava lendo um post do cv que terminava com essa deixa...

Os usuários do UOL receberam um alerta essa semana contra o vírus Bugbear, que está pegando muitas máquinas por aí, inclusive empresas. Ouvi boatos sobre "115 países com empresas do setor financeiro" terem pego, etc, etc.

A JVM prevê um isolamento das aplicações em um sandbox, e bloqueios de segurança com permissões, evitando que código remoto (applet, webstart, ou uma app que vc baixe e rode) tenha acesso "demais" na sua máquina.

Mas se vc tiver aspectos, por exemplo, ou capacidade de modificar o bytecode em runtime (que o JDistro, o Echidna e vários outros progs fazem), vc pode passar por cima de muitas "garantias" previsas durante a criação das especificações.

A pergunta é: o que vcs acham mais importante, que os programas Java sejam poderosos, capazes de fazer maravilhas, ou seguros, de modo que possamos confiar sempre neles?

É possível construir um sistema incorruptível?

[]s

Brevity is the soul of wit
[Email] [WWW] [MSN] [ICQ]
louds
Moderador
[Avatar]

Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline

Vc não tem como burlar o modelo de segurança da JVM de um plugin
simplesmente pq não vai ter permissão para criar 1 classloader mais permissivo.

Segurança é um dos pilares do java e não tem como enfraquecer sem abrir 1 enorme rombo de segurança...

http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda
[ICQ]
Rafael Steil
Administrador
[Avatar]

Membro desde: 31/08/2002 02:35:53
Mensagens: 5984
Localização: São Paulo
Offline

<ironia>
louds wrote:... criar 1 classloader mais permissivo.
..... não tem como enfraquecer sem abrir 1 enorme rombo de segurança...


Mas e se fosse mais de UM ? talves dois ou tres...


</ironia>

Rafael

"working code attracts people who want to code. Design documents attract people who want to talk about coding - Charles Miller"

http://rafaelsteil.com
http://twitter.com/rafaelsteil
http://www.jforum.net
http://www.flickr.com/photos/rafaelsteil
[Email] [WWW]
Paulo Silveira
Administrador
[Avatar]

Membro desde: 07/08/2002 18:38:50
Mensagens: 4204
Localização: São Paulo
Offline

tiago, ja mostraram que com aspectagem ou qualquer manipulador de bytecode como o jmangler e o bcel, voce quebra seguranca de QUALQUER software em java, mas nao quebra nada que foi loadado pelo bootstrap classloader, que eh a restricao basica do java.

mas realmente eh uma boa questao. mas o java ta muito bem sem dar permissoes grotescas pra todo mundo neh? e se voce quer fazer besteira, eh soh mexer nos pilicies

http://blog.caelum.com.br twitter: @paulo_caelum


[Email] [WWW]
dukejeffrie
Virtual Machine Man
[Avatar]

Membro desde: 21/08/2002 03:53:28
Mensagens: 661
Offline

Acho que eu to pensando meio longe...

Quando vc roda uma app em webstart, ela pode requerer permissões a mais pra vc. o Webstart checa o certificado, faz uma recomendação do tipo "recomendamos que vc não execute este programa" e depois pergunta: "Vc quer executá-lo"??

Claro que quando vc faz um projeto server side, vc pode proteger relativamente bem o servidor. Se for web, também é mais difícil. Mas e se for um sistema distribuído, com clientes em Java, usando RMI ou algo equivalente?

Em termos de arquitetura, não dá pra confiar nos clientes. Porque se o cara roda um cliente "envenenado", ele pode burlar esquemas de segurança que estejam colocados do lado do cliente. Assim como é possível aspectar o Together pra pular a parte de licença, é possível mudar um cliente pra ignorar esquemas de segurança e avacalhar um sistema distribuído que era antes seguro.

Quando eu falo em poder, penso na possibilidade que um usuário teria de customizar ao máximo o comportamento do software que roda na máquina dele. O mundo do software livre também é o mundo dos clones.

O "pilar do Java" em termos de segurança é um código assim:



dentro do defineClass(String name, byte[] b, int off, len, ProtectionDomain protectionDomain).

[]s

Brevity is the soul of wit
[Email] [WWW] [MSN] [ICQ]
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team