Securing networked embedded systems through distributed systems analysis

Carregando...
Imagem de Miniatura

Título da Revista

ISSN da Revista

Título de Volume

Editor

Universidade Federal de Minas Gerais

Descrição

Tipo

Tese de doutorado

Título alternativo

Primeiro orientador

Membros da banca

Eduardo Luzeiro Feitosa
Fernando Magno Quintao Pereira
Flavia Coimbra Delicato
Mario Sergio Ferreira Alvim Junior

Resumo

Novas tecnologias, como a Internet das Coisas e Cloud Computing estão aumentando a importância de técnicas para analisar e entender sistemas distribuídos. A própria natureza de tais sistemas distribuídos torna um desafio sua programação e teste. Esta importância crescente exige ferramentas capazes de fornecer aos usuários sistemas corretos, confiáveis e seguros. Neste trabalho, nós defendemos que as abordagens tradicionais para analisar sistemas distribuídos não são expressivas o suficiente para enfrentar este desafio. Como solução para este problema, apresentamos um arcabouço para analisar sistemas em rede. Nossa ideia chave é olhar para um sistema distribuído como um todo, e não como programas separados que trocam mensagens. Ao fazer isso, nós podemos cruzar informações inferidas a partir de nós diferentes. Este cruzamento de dados aumenta a precisão das análises estáticas tradicionais. Para construir uma inter-programa de um sistema distribuído nós introduzimos um novo algoritmo que descobre ligações entre dois programas de forma eficiente. Essas ligações nos permitem construir uma visão das comunicações entre programas, um conhecimento que pode ser transmitido para uma ferramenta tradicional. Provamos que nosso algoritmo sempre termina e que modela corretamente a semântica do sistema distribuído. Para validar a nossa solução, nós implementamos nosso arcabouço como um extensão do compilador LLVM e criamos duas instâncias. A primeira instância foi usada para proteger seis aplicações do CointiOS contra ataques de estouro de buffer. Esta instância foi capaz de produzir código tão seguro quanto código garantido por análises tradicionais, no entanto, nossos binários são em média 18% mais eficientes em termos de energia. Desenvolvemos também um outra instância que usa os gráficos gerados pelo arcabouço para gerar uma visão do código (programming slices) que destaca a parte que possui dependência com a rede.

Abstract

New technologies such as the Internet of Things and Cloud Computing are increasing the importance of tools able to provide users with correct, reliable and secure systems. In this work, we claim that traditional static analysis tools are not expressive enough to address this challenge. As a solution, we present a framework to analyze networked systems. Our key insight is to look at a distributed system as a single body, and not as separate programs that exchange messages. By doing so, we can crosschecking information and then increase the precision of traditional static analysis tools. We introduce a novel algorithm that discovers inter-program links efficiently and prove that it always terminates and correctly models the semantics of a distributed system. We have implemented our framework on top of the LLVM compiler, and have used it to secure ContikiOS applications against buffer overflow attacks and to generate network programming slices.

Assunto

Redes de computadores Medidas de segurança, Computação, Sistemas distribuidos, Sistemas distribuídos, Computadores Medidas de segurança, Sistemas embutidos de computador

Palavras-chave

Segurança de código, Sistemas distribuídos, Análise estática

Citação

Departamento

Curso

Endereço externo

Avaliação

Revisão

Suplementado Por

Referenciado Por