Mecanismos de proteção contra ataques de sequestro de controle de fluxo

dc.creatorMoreira, João Batista Corrêa Gomes, 1985-
dc.date2016
dc.date2016-12-16T00:00:00Z
dc.date2018-03-05T16:24:05Z
dc.date2018-03-05T16:24:05Z
dc.date.accessioned2018-03-29T06:17:25Z
dc.date.available2018-03-29T06:17:25Z
dc.identifierMOREIRA, João Batista Corrêa Gomes. Protection mechanisms against control-flow hijacking attacks = Mecanismos de proteção contra ataques de sequestro de controle de fluxo. 2016. 1 recurso online (111 p.). Tese (doutorado) - Universidade Estadual de Campinas, Instituto de Computação, Campinas, SP.
dc.identifierhttp://repositorio.unicamp.br/jspui/handle/REPOSIP/330966
dc.identifier.urihttp://repositorioslatinoamericanos.uchile.cl/handle/2250/1368624
dc.descriptionOrientadores: Sandro Rigo, Vasileios Kemerlis
dc.descriptionTese (doutorado) - Universidade Estadual de Campinas, Instituto de Computação
dc.descriptionResumo: Ataques de sequestro de controle de fluxo são uma ameaça aos sistemas computacionais conhecida desde os anos 80. Estes ataques tipicamente acontecem através de operações de memória erroneamente implementadas e que permitem a corrupção arbitrária de valores utilizados para apontar destinos em saltos indiretos. Ao modificar estes valores, atacantes podem redirecionar o fluxo de controle de um software, forçando a execução de rotinas maliciosas. Apesar de muitas propostas terem surgido propostas para solucionar este problema, os atacantes se mostraram capazes de desenvolver novas técnicas para disparar os ataques e comprometer os sistemas com sucesso, contornando as proteções. Dentre estas técnicas, ataques baseados em Return-Oriented Programming (ROP), aparecem como os mais relevantes, visto que estes possibilitam a execução de computação Turing-completa sem a necessidade de injetar código no espaço de memória do software atacado. O kernel de sistemas operacionais também pode ser alvo de ataques ROP. Desde a introdução de políticas que impedem a execução da memória de dados e a posterior mitigação de ataques return-to-user, ROP se tornou a forma mais eficiente para realizar a corrupção do controle de fluxo do kernel. Como o kernel executa com privilégios de sistema que permitem o comprometimento completo do sistema quando explorado, proteger este componente de software contra estas formas de ataque se tornou imprescindível. Nesta tese, nós propomos, analisamos e otimizamos soluções para validação do controle de fluxo no contexto do kernel. Primeiro nós propomos kCFI, uma solução de Integridade de Controle de Fluxo baseada em compiladores, de fina granularidade. Nesta solução, computa-se um grafo de controle de fluxo que é utilizado para instrumentar o binário do kernel com verificações de controle de fluxo, garantindo que todos os saltos indiretos tenham um destino previamente marcado como válido. De acordo com nosso conhecimento, kCFI é a primeira implementação de fina granularidade capaz de suportar o kernel do Linux, apresentando custos de desempenho de 8% em micro-benchmarks e 2% em macro-benchmarks. Estes valores são os menores já observados para uma solução de Integridade de Controle de Fluxo para o kernel. Sabe-se que soluções de Integridade de Controle de Fluxo podem se beneficiar de informações dinâmicas do contexto de execução de um software para criar políticas ainda mais restritivas. Por isso, terminamos nosso trabalho apresentando uma análise a respeito da implementação de uma pilha auxiliar, a ser utilizada na validação de retornos de funções, dentro do kernel. Neste estudo, propõe-se um projeto de arquitetura de uma pilha auxiliar que é compatível com os requerimentos do kernel e que pode ser acoplada junto com o kCFI. Exploram-se também duas diferentes extensões da arquitetura x86-64 para avaliar suas eficiências na proteção seletiva das regiões de memória utilizadas pela pilha auxiliar
dc.descriptionAbstract: Control-flow hijacking attacks have been a known threat to computer systems since the 80s. These attacks typically take place through wrongly implemented memory operations that allow arbitrary corruption of values used to point targets in indirect branches. By modifying these values, attackers redirect control-flow as desired, forcing the execution of malicious routines. Although many solutions have been proposed to disable these threats, attackers have been able to bypass these mechanisms, developing new techniques to launch exploits and compromise systems successfully. From these techniques, Return-Oriented Programming (ROP) attacks stand as the most relevant, as they manage to perform arbitrary Turing-complete computation without the need of code injection in the memory space of the attacked software. Kernel software is also targetable by ROP attacks. Since the introduction of W^X policies and the later mitigation of return-to-user attacks, ROP became the most prominent form of kernel control-flow corruption. As kernel runs with higher privileges that allow full system compromise upon exploitation, hardening this software component against these forms of attack became a valuable asset. In this thesis, we propose, analyze and optimize solutions for control-flow assertion in kernel software. First, we propose kCFI, a fine-grained compiler-based Control-Flow Integrity solution for operating system kernels. This protection computes a kernel control-flow graph and instruments its binary with control-flow assertions to ensure that all indirect branches happen through paths foreseen in the graph. To the best of our knowledge, kCFI is the first fine-grained implementation capable of supporting the Linux kernel, presenting an average performance cost of 8% on micro-benchmarks and 2% on macro-benchmarks, which are the smaller observed overheads for a kernel Control-Flow Integrity solution. Given that Control-Flow Integrity solutions can benefit from dynamic context information to create even more restrictive policies, we finish our work presenting a feasibility analysis for a shadow stack implementation to be used on function return validation, in the kernel. In this study, we first propose a shadow stack architecture design that is compliant with kernel requirements and that can be built on top of kCFI. We also explore two different x86-64 architecture extensions to assess their efficiency on selectively protecting the memory regions used by the shadow stack
dc.descriptionDoutorado
dc.descriptionCiência da Computação
dc.descriptionDoutor em Ciência da Computação
dc.description140914/2012-9, 163446/2013-0
dc.descriptionCAPES
dc.descriptionCNPQ
dc.format1 recurso online (111 p.) : il., digital, arquivo PDF.
dc.formatapplication/pdf
dc.languageInglês
dc.publisher[s.n.]
dc.relationRequisitos do sistema: Software para leitura de arquivo em PDF
dc.subjectSistemas de segurança
dc.subjectCompiladores (Programas de computador)
dc.subjectSistemas operacionais (Computadores)
dc.subjectSecurity systems
dc.subjectOperating systems (Computers)
dc.subjectCompilers (Computer programs)
dc.titleProtection mechanisms against control-flow hijacking attacks = Mecanismos de proteção contra ataques de sequestro de controle de fluxo
dc.titleMecanismos de proteção contra ataques de sequestro de controle de fluxo
dc.typeTesis


Este ítem pertenece a la siguiente institución