Logo Hardware.com.br
Gustavo_np
Gustavo_np Super Participante Registrado
733 Mensagens 1 Curtida

Quebra de segurança na JVM - Memórias ECC não são o bastante

#1 Por Gustavo_np 14/10/2003 - 17:32
Um estudante quebrou a segurança de sistemas que utilize a Java Virtual Machine ou Microsoft .NET, nenhum deles está imune, nenhuma máquina esta imune e o estrago é dos grandes...

Como ele fez? Usando 1 pequeno código em java e 1 lâmpada.. acredite ou não. Vou dar um quote, tirem suas conclusões.


O estudante indiano Sudhakar Govindavajhala,
atualmente estudando na Universidade Princeton
(Estados Unidos), iniciou um verdadeiro alvoroço na
comunidade mundial de informática, ao anunciar que
consegue quebrar o código de uma máquina virtual Java
rodando em qualquer processador, desde um PC comum,
até um "smart card" (cartão inteligente), utilizando
apenas uma lâmpada e um pequeno programa escrito em
Java.

Após fazer uma palestra descompromissada em um
simpósio sobre segurança no Institute of Electrical
and Electronic Engineers (IEEE), demonstrando o
funcionamento da sua teoria em máquinas virtuais Java
e .Net, o estudante teve sua agenda lotada, concedendo
palestras privativas para profissionais da NASA,
Intel, fabricantes de "smart cards" e da gigante IBM.
Para preocupação de todas essas empresas, o método do
estudante funciona muito bem na maioria dos sistemas.
Mas o pior é que nenhum sistema até agora testado
mostrou-se imune ao ataque.

A descoberta da falha é, sem dúvida, a mais importante
dos últimos tempos e deverá agitar a comunidade
envolvida com segurança da informação e com os
fabricantes de hardware pelos próximos anos. Não será
mais possível fabricar memórias de computador como se
fez até hoje, sob pena de perda de credibilidade junto
aos clientes, uma vez que não é possível garantir-se a
segurança de praticamente nenhum sistema de segurança
baseado em software. O risco é maior para equipamentos
portáteis.

O ataque requer o acesso físico à memória do
computador, o que significa que as chances de que
dados sejam usurpados remotamente de uma máquina são
quase nulas. Mas preste atenção no "quase". Como as
memórias de computador estão sujeitas a erros
induzidos por excesso de calor, seja pela elevação da
temperatura ambiente, seja por um mal funcionamento
dos ventiladores do gabinete, um vírus rodando
silenciosamente pode ficar à espreita, aguardando que
um erro aleatório libere o acesso a áreas protegidas
do sistema. No caso dos cartões inteligentes, o acesso
não é problema, uma vez que o cartão é de uso
disseminado, principalmente na Europa e Estados
Unidos, podendo ser adquirido livremente por alguém
mal intencionado, que poderá alterar seus dados ou os
valores nele armazenados.

As primeiras experiências com o método de ataque, que
exige apenas o conhecimento básico do funcionamento
das memórias de computador e uma lâmpada, foram
centradas justamente nos "smart cards", os cartões
inteligentes que começam a substituir os cartões de
crédito em nível mundial. Um cartão inteligente possui
um pequeno processador e dados muito importantes como,
por exemplo, um crédito que equivale a dinheiro vivo,
que o usuário deposita no Banco e depois gasta como se
fosse dinheiro vivo. As administradoras de cartão de
crédito procuraram o estudante para saber mais
detalhes sobre a falha de segurança, uma vez que o
crédito registrado no cartão equivale a um cheque ao
portador dado pelos bancos, com certificação digital e
tudo. Caso seja possível quebrar-se a senha do cartão,
um usuário mal intencionado poderia dar-se um crédito
ilimitado ou renová-lo constantemente.

Um cartão inteligente possui um microprocessador e um
sistema operacional baseado em uma máquina virtual
Java. Uma máquina virtual é um programa de computador
que simula um computador virtual dentro da memória de
um computador real. Desta forma, é possível
escrever-se programas que rodem em qualquer
computador, seja ele Windows, Linux ou Mac. Uma
máquina virtual rodando em um cartão inteligente
permite que programas escritos em Java possam rodar
nele sem problemas. Além disso, a máquina virtual
isola o programa do restante do microprocessador,
cujas rotinas internas ficam seguras. Pelo menos
ficavam... até que o estudante resolvesse focalizar o
calor de uma lâmpada sobre o chip.

Utilizando uma lâmpada para aquecer o chip, o
estudante conseguiu inverter um bit da memória e ter
acesso aos dados do cartão. Na verdade, mesmo raios
cósmicos, que incidem o tempo todo sobre a Terra,
podem alterar o valor ultra-sensível do campo
magnético que guarda o valor individual de um bit em
qualquer memória de computador. Mas o estudante
resolveu acelerar o processo utilizando o calor de uma
lâmpada.

O método de ataque é tão simples que nem é preciso
focalizar um bit específico, o que certamente exigirá
um aparato mais sofisticado do que uma lâmpada. "Não é
importante inverter um bit específico da memória. Se
você puder alvejar a memória, tudo que você necessita
é inverter um bit correspondente a uma condição '(if
password==xxxxx)' para ter acesso de root
[administrador do sistema, com acesso integral]. Eu
não tenho idéia de onde fisicamente os erros realmente
ocorrem. Algumas vezes minha máquina travou devido a
esses erros."

Govindavajhala introduziu um "applet", um pequeno
programa Java com acesso muito restrito ao sistema,
que tenta continuamente acessar o código protegido da
memória. Ele cria dois objetos diferentes (A e B) e
tenta fazer com que dois ponteiros apontem para o
mesmo endereço físico. Como a linguagem Java efetua
verificação de tipos ("typecast"), isto só pode
ocorrer em caso de erro físico da memória. A aplicação
de calor sobre o chip faz com que bits críticos sejam
alterados, igualando os dois endereços. Isto equivale
a se liberar o acesso à memória, quebrando todo o
controle de segurança da máquina virtual Java.




Um ataque contra um computador pessoal, por sua vez,
mostrou que os erros induzidos permitem a quebra da
segurança em 70% dos casos. Mas ocorreu também uma
série de erros que comprometeram o próprio sistema
operacional (Linux Red Hat 7.3) da máquina sendo
atacada, exigindo sua completa reinstalação. Por isso,
Govindavajhala prosseguiu seus testes utilizando boot
através de CD-ROM. O ataque teve sucesso contra
máquinas virtuais Java da IBM e da Sun.

Por incrível que possa parecer, a proteção contra o
ataque já existe e está presente em muitos
computadores: as memórias do tipo ECC
("Error-Correcting Code") efetuam checagem de paridade
de bits e corrigem automaticamente os erros, naturais
ou induzidos. Mas, por uma questão de custos, a
maioria dos PCs mais baratos utilizam memória sem
checagem de paridade, deixando-os à mercê do ataque.

Mas, mesmo utilizando as memórias mais modernas, nem
tudo são flores: as memórias ECC são efetivas apenas
contra erros de 1 ou 2 bits, o que é mais do que
suficiente para lidar com os erros "naturais",
induzidos por superaquecimento ou raios cósmicos.
Também do lado negativo, a contínua elevação da
freqüência de operação dos computadores ("clock"), faz
com que a ocorrência de erros no barramento ("bus")
seja muito mais freqüente, comprometendo a segurança.

Uma proteção efetiva, segundo o descobridor do ataque,
seria, além de memórias com checagem de paridade, a
montagem de logs (arquivos de registro de
ocorrências), onde o administrador pudesse observar
comportamentos não aleatórios dos erros de memória, o
que poderia indicar um ataque. A maioria dos sistemas
operacionais não efetua registros desse tipo.

O artigo "Using Memory Errors to Attack a Virtual
Machine" (Utilizando Erros de Memória para Atacar uma
Máquina Virtual), está disponível para download no
site de Govindavajhala (veja link abaixo). Há também
uma série de comentários (em inglês) sobre questões
específicas do ataque, questões estas feitas por
diversas fontes, depois que o artigo foi publicado.

www.cs.princeton.edu/~sudhakar/papers/
diego_uss
diego_uss Geek Registrado
5.2K Mensagens 0 Curtidas
#4 Por diego_uss
14/10/2003 - 19:38
Gustavo_np
não sei quanto tempo ele perdeu nisso, mas deve ter valido a pena só por ter vista a cara do pessoal lá de cima dessa...


outra coisa que quebra as empresas que pra elas ele apenas era mais um estudante de um paisinho de 3º mundo que não presta pra nada!!
AXP 1.466@2.066(1.7+@2.6+)| 512 DDR400|Shuttle AK35GT2R| Radeon 9600pro| 40gb 7200rpm| Sattelite case moded|
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal