Instituto de Tecnologia de Massachusetts. Curso de Aula nº 6.858. "Segurança de sistemas de computador". Nikolai Zeldovich, James Mickens. 2014 ano
Computer Systems Security é um curso sobre o desenvolvimento e implementação de sistemas de computador seguros. As palestras abrangem modelos de ameaças, ataques que comprometem a segurança e técnicas de segurança baseadas em trabalhos científicos recentes. Os tópicos incluem segurança do sistema operacional (SO), recursos, gerenciamento de fluxo de informações, segurança de idiomas, protocolos de rede, segurança de hardware e segurança de aplicativos da web.
Palestra 1: “Introdução: modelos de ameaças”
Parte 1 /
Parte 2 /
Parte 3Palestra 2: “Controle de ataques de hackers”
Parte 1 /
Parte 2 /
Parte 3Aula 3: “Estouros de Buffer: Explorações e Proteção”
Parte 1 /
Parte 2 /
Parte 3Palestra 4: “Separação de Privilégios”
Parte 1 /
Parte 2 /
Parte 3Palestra 5: “De onde vêm os sistemas de segurança?”
Parte 1 /
Parte 2Palestra 6: “Oportunidades”
Parte 1 /
Parte 2 /
Parte 3Palestra 7: “Sandbox do Cliente Nativo”
Parte 1 /
Parte 2 /
Parte 3Aula 8: “Modelo de Segurança de Rede”
Parte 1 /
Parte 2 /
Parte 3Aula 9: “Segurança de aplicativos da Web”
Parte 1 /
Parte 2 /
Parte 3Palestra 10: “Execução Simbólica”
Parte 1 /
Parte 2 /
Parte 3Aula 11: “Linguagem de Programação Ur / Web”
Parte 1 /
Parte 2 /
Parte 3Aula 12: Segurança de rede
Parte 1 /
Parte 2 /
Parte 3Aula 13: “Protocolos de Rede”
Parte 1 /
Parte 2 /
Parte 3Palestra 14: “SSL e HTTPS”
Parte 1 /
Parte 2 /
Parte 3Palestra 15: “Software Médico”
Parte 1 /
Parte 2 /
Parte 3Palestra 16: “Ataques de Canal Lateral”
Parte 1 /
Parte 2 /
Parte 3Palestra 17: “Autenticação de Usuário”
Parte 1 /
Parte 2 /
Parte 3Palestra 18: “Navegação Privada na Internet”
Parte 1 /
Parte 2 /
Parte 3 Portanto, a primeira abordagem será usar máquinas virtuais como uma maneira de aprimorar a garantia da navegação privada, ou seja, consideraremos a privacidade no nível da máquina virtual.
A idéia básica é que cada sessão privada seja executada em uma máquina virtual separada. Em seguida, quando o usuário encerra a sessão de navegação privada, a máquina virtual é excluída. Então, qual é a vantagem dessa idéia?

É provável que você obtenha garantias mais fortes de confidencialidade, que você pode fornecer ao usuário, porque, presumivelmente, a máquina virtual possui uma interface de entrada / saída de dados bastante limpa. Pode-se supor que você combine essas máquinas virtuais em, digamos, algum tipo de solução de troca segura, por exemplo, usando o Open BSD junto com a criptografia de dados do disco.
Portanto, temos uma separação muito clara da VM aqui, acima, e todas as operações de E / S que ocorrem abaixo. Isso fornece garantias mais fortes do que aquelas obtidas em um navegador que não foi projetado desde o início para cuidar muito de todas as formas de entrada / saída de informações e que segredos podem vazar quando essas informações estão no armazém de dados .
Então, sim, fornece garantias mais fortes. Além disso, ele não requer nenhuma alteração em seus aplicativos, ou seja, no navegador. Você pega o navegador, coloca-o em uma dessas máquinas virtuais - e tudo fica magicamente melhor sem alterações no aplicativo.
O que há de errado nisso - desenharei um sorriso triste no quadro - é complicado. Por complicado, quero dizer que, quando você deseja iniciar uma das sessões de navegação privada, precisa iniciar toda a máquina virtual. E isso pode ser bastante doloroso, pois os usuários ficam frustrados, pois leva muito tempo para iniciar suas sessões de navegação privada.

Outros problemas são que essa solução é impraticável. E a razão da impraticabilidade não é que seja realmente difícil para os usuários fazer coisas como transferir arquivos que eles salvaram no modo de navegação privada para um computador, transferir todos os indicadores que eles geraram nesse modo - tudo isso, no final, pode ser feito. Mas aqui há muitos inconvenientes associados à preguiça.
A segunda abordagem para o problema é semelhante à primeira, mas na verdade a implementamos dentro do próprio sistema operacional e não em uma máquina virtual. A idéia principal aqui é que cada processo possa ser executado em um domínio privado. Um domínio privado é um tipo de coleção de recursos compartilhados do sistema operacional que um processo usa, e o sistema operacional monitora todas essas coisas. E assim que o processo morre, o sistema operacional verifica tudo no domínio privado e libera completamente todos esses recursos para um novo uso.
A vantagem dessa abordagem, comparada ao uso da VM, é mais leve, porque, se você pensar bem, a máquina virtual é essencialmente independente do estado do sistema operacional e do estado de todos os aplicativos em execução. Assim, o uso da VM cria mais trabalho do que o sistema operacional, porque o sistema operacional provavelmente conhece todos os pontos em que um navegador privado entra em contato com a entrada / saída de dados, "conversa" com a rede e coisas do gênero. Talvez o sistema operacional saiba até limpar seletivamente o cache do DNS.
Assim, você pode imaginar que é muito mais fácil "desvendar" esses domínios de privacidade, para que você possa simplesmente "derrubá-los" mais tarde. No entanto, a desvantagem dessa solução, pelo menos no que diz respeito ao início da VM, é que é muito mais difícil fazê-lo da maneira certa. Portanto, acabei de descrever a abordagem usando a VM como progressiva, porque a máquina virtual é essencialmente independente de tudo o que funciona dentro do contêiner do SO.

O bom é que a abordagem de VM se concentra apenas em algumas interfaces de baixo nível. Por exemplo, a interface usada por uma máquina virtual para gravar no disco causa um maior grau de confiança, pois contém tudo o que você precisa. Ao usar o sistema operacional, isso é muito mais complicado, porque você espera que ele use arquivos individuais com uma interface do sistema, por exemplo, com uma interface de rede individual. Portanto, se você fizer tudo isso no nível do sistema operacional, a possibilidade de vazamento de dados é muito maior.
Portanto, essas foram duas abordagens principais para aprimorar as garantias de confidencialidade ao usar o modo de navegação privada, que pode ser implementado atualmente.
Você pode perguntar: ainda podemos revelar a identidade do usuário se ele aplicar uma dessas soluções de segurança mais poderosas - navegar na Internet usando uma máquina virtual ou domínios de privacidade no sistema operacional? Podemos roubar o usuário do anonimato? A resposta a esta pergunta será - sim, nós podemos!
É possível descriptografar um usuário porque a máquina virtual é única por algum motivo. Isso é semelhante à forma como conseguimos tirar as impressões digitais do navegador usando o site da Panopticlick. Provavelmente, há algo único sobre como a máquina virtual será configurada, o que permite tirar suas impressões digitais. Também é possível que o monitor da VM ou o próprio sistema operacional seja exclusivo em alguns aspectos. E isso permite que um invasor de rede revele a identidade do usuário.
Um exemplo típico é a impressão digital do TCP. A idéia é que a especificação do protocolo TCP realmente permita a instalação de certos parâmetros durante a implementação desse protocolo. Por exemplo, o TCP permite que os artistas escolham o tamanho inicial dos pacotes enviados na primeira parte do estabelecimento de uma conexão TCP, o que permite que os artistas escolham coisas como a vida útil inicial desses pacotes.

Assim, você pode obter ferramentas prontas, como o InMap, que podem dizer com alta probabilidade o sistema operacional em que você está trabalhando, apenas enviando pacotes cuidadosamente processados. Eles verão coisas como o fato de o TTL ser apresentado aqui, e aqui é o tamanho do pacote de distribuição, e aqui estava o número de série do TTP. Assim, eles criam um banco de dados de impressões digitais. Eles dizem: “se o pacote retornado possui essa, essa e essa característica, de acordo com a tabela, você está trabalhando no Solaris, usando um Mac e usando o Windows” ou qualquer outra coisa. Portanto, mesmo usando uma dessas abordagens para aprimorar a privacidade durante a navegação privada usando uma máquina virtual ou sistema operacional, um invasor ainda pode iniciar um desses ataques de detecção de impressão digital via TCP e aprender muito sobre um usuário específico.
Será interessante saber que, mesmo que o usuário esteja protegido de uma dessas maneiras mais poderosas, ele ainda estará dividido entre os dois modos de visualização - público e privado, ainda usando o computador fisicamente. Isso é interessante porque você mesmo no processo de usar o computador pode contribuir para o vazamento de suas informações pessoais.
Por exemplo, como se vê, cada usuário tem um pressionamento de tecla exclusivo. Portanto, se eu lhe der a tarefa ao mesmo tempo de começar a digitar a frase "raposa marrom rápida" ou qualquer coisa sem sentido no teclado, a observação mostrará que o tempo de pressionar as teclas por cada um de vocês é tão único que pode ser usado para tirar impressões digitais.
Também é interessante que os usuários tenham estilos de escrita exclusivos. Existe uma indústria de segurança chamada estilografia.

A idéia da estilografia é que um invasor pode descobrir quem você é apenas olhando as amostras da sua carta. Imagine que, por algum motivo, você espera no 4chan e eu quero descobrir se você realmente ficou por lá. Eu posso olhar para várias postagens diferentes no 4chan e agrupá-las em conjuntos de comentários que parecem estilisticamente iguais. Então tentarei encontrar amostras públicas de seu estilo de escrita, por exemplo, em trabalhos de casa, dos quais você é um autor. Depois disso, comparo as amostras de estilo nos conjuntos de comentários do 4chan com a lição de casa e, se encontrar uma correspondência, posso escrever para seus pais para esclarecer os perigos do congelamento nos fóruns do 4chan. Por esse motivo, decidi chamar sua atenção para a estilografia. Isso é realmente muito interessante.
Então, discutimos como você pode usar VMs ou sistemas operacionais modificados para fornecer suporte à navegação privada. Portanto, você pode se perguntar por que, então, os navegadores não exigem que os usuários façam uma dessas coisas - iniciar uma máquina virtual ou modificar o sistema operacional? Por que os navegadores assumem a implementação de tudo isso?
O principal motivo é a implantação. Os fabricantes de navegadores geralmente não querem forçar seus usuários a fazer algo especial para usar o navegador, a não ser instalar o próprio navegador. Isso é semelhante à motivação do Native Client quando o Google está prestes a adicionar esses recursos interessantes aos computadores dos usuários finais, mas não deseja forçar os usuários a instalar versões especiais do Windows ou Linux ou fazer outra coisa. Assim, o Google diz que "nós mesmos cuidaremos disso".
Outro motivo é a usabilidade. Muitas dessas soluções de navegação privada na máquina virtual e no nível do sistema operacional, como já discutimos, dificultam os usuários a salvar coisas recebidas durante uma sessão de navegação privada - arquivos baixados, marcadores e similares.

Basicamente, os fabricantes de navegadores dizem que, se eles próprios implementarem modos de navegação privada, poderão permitir aos usuários aceitar arquivos baixados no modo de navegação privada e salvá-los em um computador. Parece bom no começo. Mas observe que essa abordagem permite que os usuários exportem algum tipo de estado privado, o que abre muitas vulnerabilidades no sistema de segurança e complica muito a análise das propriedades de segurança usadas na implementação do modo de navegação privada.
Portanto, os autores do artigo tentam caracterizar vários tipos de estados do navegador que podem ser modificados e consideram como os modos atuais de navegação privada podem modificá-los.
Este artigo classifica as alterações de estado do navegador. Existem quatro tipos de alterações nesta classificação. O primeiro tipo é quando o próprio site iniciou o estado muda sem a intervenção do usuário. Exemplos desse tipo de alteração de estado são obter cookies, adicionar algo ao histórico de endereços do navegador e possivelmente atualizar o cache do navegador. Portanto, basicamente esse estado persiste em todo o modo de visualização privada, mas é destruído após a conclusão.
Pode-se supor que, como o usuário não interage com o navegador durante a formação desse estado, entende-se que o próprio usuário não gostaria de participar disso.
O segundo tipo de alteração de estado do navegador também é iniciado pelo site, mas há alguma interação com o usuário que o visitou. Por exemplo, um usuário instala um certificado de cliente ou usa uma senha para autorizar no site, ou seja, tenta ir a algum lugar. Ao mesmo tempo, o navegador muito útil diz: "você deseja salvar esta senha?". Se o usuário responder "sim", coisas como senhas salvas poderão ser usadas fora do modo de navegação privada. Portanto, em princípio, não está claro qual deve ser a política de privacidade nesse caso. Na prática, verifica-se que os navegadores permitem a existência de coisas que surgiram no modo de navegação privada, fora dele, assumindo que o próprio usuário escolherá a melhor opção para ele, dizendo "sim" ou "não". Se o usuário for inteligente o suficiente, ele não salvará a senha de algum site duvidoso, porque outra pessoa poderá usá-la. Portanto, pode haver um erro do usuário, não um navegador, que pode levar à perda de privacidade.
Portanto, não está claro qual política é a melhor, mas, na prática, esse tipo de alteração de estado pode ser armazenado fora do modo de navegação privada.
O terceiro tipo de mudança de estado é totalmente iniciado pelo usuário. São coisas como salvar favoritos ou baixar arquivos. Esse estado é semelhante ao anterior, porque o usuário está diretamente envolvido em sua criação. Nesse caso, o modo de visualização privada concorda que alterações de estado desse tipo são salvas para uso futuro fora da visualização privada.

Além disso, existem alguns tipos de estados que não estão associados a nenhuma sessão específica. Por exemplo, este é o estado de atualização do próprio navegador, ou seja, uma alteração no arquivo que representa o navegador. Os desenvolvedores de navegadores acreditam que essa mudança de estado faz parte de um estado global disponível para visualização pública e privada.
No final, se você observar isso com atenção, perceberá que existem algumas condições em que o vazamento de dados fora do modo de navegação privada é possível, especialmente se houver interação com o usuário. Gostaria de saber se este é o melhor compromisso entre segurança e privacidade.

O artigo diz que é difícil impedir a possibilidade de um invasor local determinar se você está usando o modo de navegação privada ou não. Isto é afirmado no artigo um tanto vagamente. O fato é que a natureza do vazamento de informações pode indicar em que modo de visualização - privado ou público - eles ocorrem. Por exemplo, no Firefox e Chrome, quando você cria um marcador no modo de navegação privada, esse marcador possui vários metadados associados, como tempo gasto visitando o site e similares. Em muitos casos, esses metadados serão zero ou próximos a algum valor zero se este marcador foi criado no modo de navegação privada. Alguém que depois gerenciará seu computador poderá visualizar as informações dos seus favoritos. Se ele vir que esses metadados são zero, ele concluirá que esse marcador provavelmente foi criado no modo de navegação privada.
Quando falamos sobre segurança do navegador, pensamos no que exatamente as pessoas estão fazendo com JavaScript, HTML ou CSS, o que elas podem fazer com plug-ins ou extensões? No contexto da navegação privada, plug-ins e extensões são bastante interessantes, porque na maioria dos casos não se limitam à mesma política de origem, por exemplo, podem restringir o uso de coisas como JavaScript. Curiosamente, essas extensões e plug-ins geralmente funcionam com privilégios muito altos. Grosso modo, você pode pensar neles como módulos do kernel. Eles têm alta autoridade, permitindo implementar novos recursos diretamente dentro dos próprios navegadores. Portanto, isso é um pouco problemático, pois esses plugins e extensões geralmente são desenvolvidos por alguém que não é o desenvolvedor do navegador. Isso significa que alguém está tentando fazer algo de bom e fornecer propriedades úteis ao seu navegador adicionando um plug-in ou extensão a ele. Mas esse desenvolvedor de terceiros pode não entender completamente o contexto de segurança em que sua extensão é executada; portanto, essa extensão pode não fornecer a semântica do modo de navegação privada ou de maneira incorreta.
, , , . , , . , , , HTML5 , , . , Java Flash. , 2D 3D-, - Java Flash. , Web GL , , , .
, IE , , - , HTML5. , YouTube, , , - HTML5-, . . , . , , , , .
, , , , 2010 , , ?
, . , , , HTML5.
, , . , . - , .
, 2014 Firefox, pdf.js, PDF-, HTML5-. , , .
, - PDF-, . PDF- , pdf.js , . . , , . , — , .
. , , , , , , , .
, : , , .

Firefox , 2011 . . , , , about:memory, , , , URL- , . , , , about:memory. , Firefox. , Firefox . , , about:memory , .
, URL-, , , . , . .
Bugzilla, , . , , , , , . , , . , . : « , , , .» : « , ».
, — HTML5 — , , . , , , .
, . , , . , .
, Magnet, -, . , , , URL- . - .
, Tor.
.
Obrigado por ficar conosco. Você gosta dos nossos artigos? Deseja ver materiais mais interessantes? Ajude-nos fazendo um pedido ou recomendando a seus amigos, um
desconto de 30% para os usuários da Habr em um análogo exclusivo de servidores básicos que inventamos para você: Toda a verdade sobre o VPS (KVM) E5-2650 v4 (6 núcleos) 10GB DDR4 240GB SSD 1Gbps de US $ 20 ou como dividir o servidor? (as opções estão disponíveis com RAID1 e RAID10, até 24 núcleos e até 40GB DDR4).
VPS (KVM) E5-2650 v4 (6 núcleos) 10 GB DDR4 240 GB SSD de 1 Gbps até dezembro de graça quando pagar por um período de seis meses, você pode fazer o pedido
aqui .
Dell R730xd 2 vezes mais barato? Somente nós temos
2 TVs Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 a partir de US $ 249 na Holanda e nos EUA! Leia sobre
Como criar um prédio de infraestrutura. classe usando servidores Dell R730xd E5-2650 v4 custando 9.000 euros por um centavo?