| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/06/2003 20:09:26
|
dukejeffrie
Virtual Machine Man
![[Avatar]](/images/avatar/c74d97b01eae257e44aa9d5bade97baf.png)
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 |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/06/2003 21:01:59
|
louds
Moderador
![[Avatar]](/images/avatar/1e48c4420b7073bc11916c6c1de226bb.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/06/2003 23:16:43
|
Rafael Steil
Administrador
![[Avatar]](/images/avatar/8e296a067a37563370ded05f5a3bf3ec.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/06/2003 01:11:08
|
Paulo Silveira
Administrador
![[Avatar]](/images/avatar/a87ff679a2f3e71d9181a67b7542122c.jpg)
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/06/2003 12:19:55
|
dukejeffrie
Virtual Machine Man
![[Avatar]](/images/avatar/c74d97b01eae257e44aa9d5bade97baf.png)
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 |
|
|
 |
|
|