Stack smashing attack detection methodology for secure program execution based on hardware

Detalhes bibliográficos
Autor(a) principal: Ferreira, Raphael Segabinazzi
Data de Publicação: 2016
Tipo de documento: Dissertação
Idioma: eng
Título da fonte: Biblioteca Digital de Teses e Dissertações da PUC_RS
Texto Completo: http://tede2.pucrs.br/tede2/handle/tede/7073
Resumo: A necessidade de inclusão de mecanismos de segurança em dispositivos eletrônicos cresceu consideravelmente com o aumento do uso destes dispositivos no dia a dia das pessoas. À medida que estes dispositivos foram ficando cada vez mais conectados a rede e uns aos outros, estes mesmos se tornaram vulneráveis a tentativa de ataques e intrusões remotas. Ataques deste tipo chegam normalmente como dados recebidos por meio de um canal comum de comunicação, uma vez presente na memória do dispositivo estes dados podem ser capazes de disparar uma falha de software pré-existente, e, a partir desta falha, desviar o fluxo do programa para o código malicioso inserido. Vulnerabilidades de software foram, nos últimos anos, a principal causa de incidentes relacionados à quebra de segurança em sistemas e computadores. Adicionalmente, estouros de buffer (buffer overflow) são as vulnerabilidades mais exploradas em software, chegando a atingir, metade das recomendações de segurança do grupo norte americano Computer Emergency Readiness Team (CERT). A partir deste cenário citado acima, o presente trabalho apresenta um novo método baseado em hardware para detecção de ataques ocorridos a partir de estouros de buffer chamados de Stack Smashing, propõe ainda de maneira preliminar, um mecanismo de recuperação do sistema a partir da detecção de um ataque ou falha. Comparando com métodos já existentes na bibliografia, a técnica apresentada por este trabalho não necessita de recompilação de código e, adicionalmente, dispensa o uso de software (como, por exemplo, um Sistema Operacional) para fazer o gerenciamento do uso de memória. Monitorando sinais internos do pipeline de um processador o presente trabalho é capaz de detectar quando um endereço de retorno de uma função está corrompido, e a partir desta detecção, voltar o sistema para um estado seguro salvo previamente em uma região segura de memória. Para validar este trabalho um programa simples, em linguagem C, foi implementado, este programa força uma condição de buffer overflow. Esta condição deve ser reconhecida pelo sistema implementado neste trabalho e, ainda, recuperada adequadamente. Já para avaliação do sistema, a fim de verificar como o mesmo se comporta em situações reais, programas testes foram implementados em linguagem C com pequenos trechos de códigos maliciosos. Estes trechos foram obtidos de vulnerabilidades reportadas na base de dados Common Vulnerabilities and Exposures (CVE). Estes pequenos códigos maliciosos foram adaptados e inseridos nos fontes do programa de teste. Com isso, enquanto estes programas estão em execução o sistema implementado por este trabalho é avaliado. Durante esta avaliação são observados: (1) a capacidade de detecção de modificação no endereço de retorno de funções e (2) a recuperação do sistema. Finalmente, é calculado o overhead de área e de tempo de execução.De acordo com resultados e implementações preliminares este trabalho conseguiu atingir 100% da detecção de ataques sobre uma baixa latência por detecção de modificações de endereço de retorno de funções salva no stack. Foi capaz, também, de se recuperar nos casos de testes implementados. E, finalmente, resultando em baixo overhead de área sem nenhuma degradação de performance na detecção de modificação do endereço de retorno.
id P_RS_5fc0e19cd88d138de72f6577ad7eb23f
oai_identifier_str oai:tede2.pucrs.br:tede/7073
network_acronym_str P_RS
network_name_str Biblioteca Digital de Teses e Dissertações da PUC_RS
repository_id_str
spelling Vargas, Fabian Luis454.118.910-00http://buscatextual.cnpq.br/buscatextual/visualizacv.do?id=K4788515U8020.321.270-32http://buscatextual.cnpq.br/buscatextual/visualizacv.do?id=K4475245U0Ferreira, Raphael Segabinazzi2016-12-01T15:53:47Z2016-08-25http://tede2.pucrs.br/tede2/handle/tede/7073A necessidade de inclusão de mecanismos de segurança em dispositivos eletrônicos cresceu consideravelmente com o aumento do uso destes dispositivos no dia a dia das pessoas. À medida que estes dispositivos foram ficando cada vez mais conectados a rede e uns aos outros, estes mesmos se tornaram vulneráveis a tentativa de ataques e intrusões remotas. Ataques deste tipo chegam normalmente como dados recebidos por meio de um canal comum de comunicação, uma vez presente na memória do dispositivo estes dados podem ser capazes de disparar uma falha de software pré-existente, e, a partir desta falha, desviar o fluxo do programa para o código malicioso inserido. Vulnerabilidades de software foram, nos últimos anos, a principal causa de incidentes relacionados à quebra de segurança em sistemas e computadores. Adicionalmente, estouros de buffer (buffer overflow) são as vulnerabilidades mais exploradas em software, chegando a atingir, metade das recomendações de segurança do grupo norte americano Computer Emergency Readiness Team (CERT). A partir deste cenário citado acima, o presente trabalho apresenta um novo método baseado em hardware para detecção de ataques ocorridos a partir de estouros de buffer chamados de Stack Smashing, propõe ainda de maneira preliminar, um mecanismo de recuperação do sistema a partir da detecção de um ataque ou falha. Comparando com métodos já existentes na bibliografia, a técnica apresentada por este trabalho não necessita de recompilação de código e, adicionalmente, dispensa o uso de software (como, por exemplo, um Sistema Operacional) para fazer o gerenciamento do uso de memória. Monitorando sinais internos do pipeline de um processador o presente trabalho é capaz de detectar quando um endereço de retorno de uma função está corrompido, e a partir desta detecção, voltar o sistema para um estado seguro salvo previamente em uma região segura de memória. Para validar este trabalho um programa simples, em linguagem C, foi implementado, este programa força uma condição de buffer overflow. Esta condição deve ser reconhecida pelo sistema implementado neste trabalho e, ainda, recuperada adequadamente. Já para avaliação do sistema, a fim de verificar como o mesmo se comporta em situações reais, programas testes foram implementados em linguagem C com pequenos trechos de códigos maliciosos. Estes trechos foram obtidos de vulnerabilidades reportadas na base de dados Common Vulnerabilities and Exposures (CVE). Estes pequenos códigos maliciosos foram adaptados e inseridos nos fontes do programa de teste. Com isso, enquanto estes programas estão em execução o sistema implementado por este trabalho é avaliado. Durante esta avaliação são observados: (1) a capacidade de detecção de modificação no endereço de retorno de funções e (2) a recuperação do sistema. Finalmente, é calculado o overhead de área e de tempo de execução.De acordo com resultados e implementações preliminares este trabalho conseguiu atingir 100% da detecção de ataques sobre uma baixa latência por detecção de modificações de endereço de retorno de funções salva no stack. Foi capaz, também, de se recuperar nos casos de testes implementados. E, finalmente, resultando em baixo overhead de área sem nenhuma degradação de performance na detecção de modificação do endereço de retorno.The need to include security mechanisms in electronic devices has dramatically grown with the widespread use of such devices in our daily life. With the increasing interconnectivity among devices, attackers can now launch attacks remotely. Such attacks arrive as data over a regular communication channel and, once resident in the program memory, they trigger a pre-existing software flaw and transfer control to the attacker’s malicious code. Software vulnerabilities have been the main cause of computer security incidents. Among these, buffer overflows are perhaps the most widely exploited type of vulnerability, accounting for approximately half the Computer Emergency Readiness Team (CERT) advisories in recent years. In this scenario, the methodology proposed in this work presents a new hardware-based approach to detect stack smashing buffer overflow attack and recover the system after the attack detection. Compared to existing approaches, the proposed technique does not need application code recompilation or use of any kind of software (e.g., an Operating System - OS) to manage memory usage. By monitoring processor pipeline internal signals, this approach is able to detect when the return address of a function call has been corrupted. At this moment, a rollback-based recovery procedure is triggered, which drives the system into a safe state previously stored in a protected memory area. This approach was validated by implementing a C program that forces a buffer overflow condition, which is promptly recognized by the proposed approach. From this point on, the system is then properly recovered. Having in mind to evaluate the system under more realistic conditions, test programs were implemented with pieces of known vulnerable C codes. These vulnerable pieces of codes were obtained from vulnerabilities reported in the Common Vulnerabilities and Exposures (CVE). These code snippets were adapted and included in the test programs. Then, while running these programs the proposed system was evaluated. This evaluation was done by observing the capability of the proposed approach to: (1) detect an invalid return address and (2) to safely recovery the system from the faulty condition. Finally, the execution time and area overheads were determined. According to preliminary implementations and results this approach guarantees 100% attack detection with negligible detection latency by recognizing return address overwritten within a few processor clock cycles.Submitted by Setor de Tratamento da Informação - BC/PUCRS (tede2@pucrs.br) on 2016-12-01T15:53:47Z No. of bitstreams: 1 DIS_RAPHAEL_SEGABINAZZI_FERREIRA_COMPLETO.pdf: 2073138 bytes, checksum: d5db8a28bdcf83806ed8388083415120 (MD5)Made available in DSpace on 2016-12-01T15:53:47Z (GMT). No. of bitstreams: 1 DIS_RAPHAEL_SEGABINAZZI_FERREIRA_COMPLETO.pdf: 2073138 bytes, checksum: d5db8a28bdcf83806ed8388083415120 (MD5) Previous issue date: 2016-08-25Coordenação de Aperfeiçoamento de Pessoal de Nível Superior - CAPESapplication/pdfhttp://tede2.pucrs.br:80/tede2/retrieve/166888/DIS_RAPHAEL_SEGABINAZZI_FERREIRA_COMPLETO.pdf.jpgengPontifícia Universidade Católica do Rio Grande do SulPrograma de Pós-Graduação em Engenharia ElétricaPUCRSBrasilFaculdade de EngenhariaENGENHARIA DE SISTEMASHARDWARESEGURANÇA DE DADOSENGENHARIA DE SOFTWAREINFORMÁTICAENGENHARIASStack smashing attack detection methodology for secure program execution based on hardwareinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesis207662918905964549600600600600-65577057276143978545189710564848268252075167498588264571info:eu-repo/semantics/openAccessreponame:Biblioteca Digital de Teses e Dissertações da PUC_RSinstname:Pontifícia Universidade Católica do Rio Grande do Sul (PUCRS)instacron:PUC_RSTHUMBNAILDIS_RAPHAEL_SEGABINAZZI_FERREIRA_COMPLETO.pdf.jpgDIS_RAPHAEL_SEGABINAZZI_FERREIRA_COMPLETO.pdf.jpgimage/jpeg3370http://tede2.pucrs.br/tede2/bitstream/tede/7073/5/DIS_RAPHAEL_SEGABINAZZI_FERREIRA_COMPLETO.pdf.jpg32f26754fccc6c653584005d1ff8d337MD55TEXTDIS_RAPHAEL_SEGABINAZZI_FERREIRA_COMPLETO.pdf.txtDIS_RAPHAEL_SEGABINAZZI_FERREIRA_COMPLETO.pdf.txttext/plain118828http://tede2.pucrs.br/tede2/bitstream/tede/7073/4/DIS_RAPHAEL_SEGABINAZZI_FERREIRA_COMPLETO.pdf.txtc9db8699da7e00eed52993e78cecc86dMD54LICENSElicense.txtlicense.txttext/plain; charset=utf-8610http://tede2.pucrs.br/tede2/bitstream/tede/7073/3/license.txt5a9d6006225b368ef605ba16b4f6d1beMD53ORIGINALDIS_RAPHAEL_SEGABINAZZI_FERREIRA_COMPLETO.pdfDIS_RAPHAEL_SEGABINAZZI_FERREIRA_COMPLETO.pdfapplication/pdf2073138http://tede2.pucrs.br/tede2/bitstream/tede/7073/2/DIS_RAPHAEL_SEGABINAZZI_FERREIRA_COMPLETO.pdfd5db8a28bdcf83806ed8388083415120MD52tede/70732016-12-01 20:00:17.194oai:tede2.pucrs.br:tede/7073QXV0b3JpemHDp8OjbyBwYXJhIFB1YmxpY2HDp8OjbyBFbGV0csO0bmljYTogQ29tIGJhc2Ugbm8gZGlzcG9zdG8gbmEgTGVpIEZlZGVyYWwgbsK6OS42MTAsIGRlIDE5IGRlIGZldmVyZWlybyBkZSAxOTk4LCBvIGF1dG9yIEFVVE9SSVpBIGEgcHVibGljYcOnw6NvIGVsZXRyw7RuaWNhIGRhIHByZXNlbnRlIG9icmEgbm8gYWNlcnZvIGRhIEJpYmxpb3RlY2EgRGlnaXRhbCBkYSBQb250aWbDrWNpYSBVbml2ZXJzaWRhZGUgQ2F0w7NsaWNhIGRvIFJpbyBHcmFuZGUgZG8gU3VsLCBzZWRpYWRhIGEgQXYuIElwaXJhbmdhIDY2ODEsIFBvcnRvIEFsZWdyZSwgUmlvIEdyYW5kZSBkbyBTdWwsIGNvbSByZWdpc3RybyBkZSBDTlBKIDg4NjMwNDEzMDAwMi04MSBiZW0gY29tbyBlbSBvdXRyYXMgYmlibGlvdGVjYXMgZGlnaXRhaXMsIG5hY2lvbmFpcyBlIGludGVybmFjaW9uYWlzLCBjb25zw7NyY2lvcyBlIHJlZGVzIMOgcyBxdWFpcyBhIGJpYmxpb3RlY2EgZGEgUFVDUlMgcG9zc2EgYSB2aXIgcGFydGljaXBhciwgc2VtIMO0bnVzIGFsdXNpdm8gYW9zIGRpcmVpdG9zIGF1dG9yYWlzLCBhIHTDrXR1bG8gZGUgZGl2dWxnYcOnw6NvIGRhIHByb2R1w6fDo28gY2llbnTDrWZpY2EuCg==Biblioteca Digital de Teses e Dissertaçõeshttp://tede2.pucrs.br/tede2/PRIhttps://tede2.pucrs.br/oai/requestbiblioteca.central@pucrs.br||opendoar:2016-12-01T22:00:17Biblioteca Digital de Teses e Dissertações da PUC_RS - Pontifícia Universidade Católica do Rio Grande do Sul (PUCRS)false
dc.title.por.fl_str_mv Stack smashing attack detection methodology for secure program execution based on hardware
title Stack smashing attack detection methodology for secure program execution based on hardware
spellingShingle Stack smashing attack detection methodology for secure program execution based on hardware
Ferreira, Raphael Segabinazzi
ENGENHARIA DE SISTEMAS
HARDWARE
SEGURANÇA DE DADOS
ENGENHARIA DE SOFTWARE
INFORMÁTICA
ENGENHARIAS
title_short Stack smashing attack detection methodology for secure program execution based on hardware
title_full Stack smashing attack detection methodology for secure program execution based on hardware
title_fullStr Stack smashing attack detection methodology for secure program execution based on hardware
title_full_unstemmed Stack smashing attack detection methodology for secure program execution based on hardware
title_sort Stack smashing attack detection methodology for secure program execution based on hardware
author Ferreira, Raphael Segabinazzi
author_facet Ferreira, Raphael Segabinazzi
author_role author
dc.contributor.advisor1.fl_str_mv Vargas, Fabian Luis
dc.contributor.advisor1ID.fl_str_mv 454.118.910-00
dc.contributor.advisor1Lattes.fl_str_mv http://buscatextual.cnpq.br/buscatextual/visualizacv.do?id=K4788515U8
dc.contributor.authorID.fl_str_mv 020.321.270-32
dc.contributor.authorLattes.fl_str_mv http://buscatextual.cnpq.br/buscatextual/visualizacv.do?id=K4475245U0
dc.contributor.author.fl_str_mv Ferreira, Raphael Segabinazzi
contributor_str_mv Vargas, Fabian Luis
dc.subject.por.fl_str_mv ENGENHARIA DE SISTEMAS
HARDWARE
SEGURANÇA DE DADOS
ENGENHARIA DE SOFTWARE
INFORMÁTICA
topic ENGENHARIA DE SISTEMAS
HARDWARE
SEGURANÇA DE DADOS
ENGENHARIA DE SOFTWARE
INFORMÁTICA
ENGENHARIAS
dc.subject.cnpq.fl_str_mv ENGENHARIAS
description A necessidade de inclusão de mecanismos de segurança em dispositivos eletrônicos cresceu consideravelmente com o aumento do uso destes dispositivos no dia a dia das pessoas. À medida que estes dispositivos foram ficando cada vez mais conectados a rede e uns aos outros, estes mesmos se tornaram vulneráveis a tentativa de ataques e intrusões remotas. Ataques deste tipo chegam normalmente como dados recebidos por meio de um canal comum de comunicação, uma vez presente na memória do dispositivo estes dados podem ser capazes de disparar uma falha de software pré-existente, e, a partir desta falha, desviar o fluxo do programa para o código malicioso inserido. Vulnerabilidades de software foram, nos últimos anos, a principal causa de incidentes relacionados à quebra de segurança em sistemas e computadores. Adicionalmente, estouros de buffer (buffer overflow) são as vulnerabilidades mais exploradas em software, chegando a atingir, metade das recomendações de segurança do grupo norte americano Computer Emergency Readiness Team (CERT). A partir deste cenário citado acima, o presente trabalho apresenta um novo método baseado em hardware para detecção de ataques ocorridos a partir de estouros de buffer chamados de Stack Smashing, propõe ainda de maneira preliminar, um mecanismo de recuperação do sistema a partir da detecção de um ataque ou falha. Comparando com métodos já existentes na bibliografia, a técnica apresentada por este trabalho não necessita de recompilação de código e, adicionalmente, dispensa o uso de software (como, por exemplo, um Sistema Operacional) para fazer o gerenciamento do uso de memória. Monitorando sinais internos do pipeline de um processador o presente trabalho é capaz de detectar quando um endereço de retorno de uma função está corrompido, e a partir desta detecção, voltar o sistema para um estado seguro salvo previamente em uma região segura de memória. Para validar este trabalho um programa simples, em linguagem C, foi implementado, este programa força uma condição de buffer overflow. Esta condição deve ser reconhecida pelo sistema implementado neste trabalho e, ainda, recuperada adequadamente. Já para avaliação do sistema, a fim de verificar como o mesmo se comporta em situações reais, programas testes foram implementados em linguagem C com pequenos trechos de códigos maliciosos. Estes trechos foram obtidos de vulnerabilidades reportadas na base de dados Common Vulnerabilities and Exposures (CVE). Estes pequenos códigos maliciosos foram adaptados e inseridos nos fontes do programa de teste. Com isso, enquanto estes programas estão em execução o sistema implementado por este trabalho é avaliado. Durante esta avaliação são observados: (1) a capacidade de detecção de modificação no endereço de retorno de funções e (2) a recuperação do sistema. Finalmente, é calculado o overhead de área e de tempo de execução.De acordo com resultados e implementações preliminares este trabalho conseguiu atingir 100% da detecção de ataques sobre uma baixa latência por detecção de modificações de endereço de retorno de funções salva no stack. Foi capaz, também, de se recuperar nos casos de testes implementados. E, finalmente, resultando em baixo overhead de área sem nenhuma degradação de performance na detecção de modificação do endereço de retorno.
publishDate 2016
dc.date.accessioned.fl_str_mv 2016-12-01T15:53:47Z
dc.date.issued.fl_str_mv 2016-08-25
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv http://tede2.pucrs.br/tede2/handle/tede/7073
url http://tede2.pucrs.br/tede2/handle/tede/7073
dc.language.iso.fl_str_mv eng
language eng
dc.relation.program.fl_str_mv 207662918905964549
dc.relation.confidence.fl_str_mv 600
600
600
600
dc.relation.department.fl_str_mv -655770572761439785
dc.relation.cnpq.fl_str_mv 4518971056484826825
dc.relation.sponsorship.fl_str_mv 2075167498588264571
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv application/pdf
dc.publisher.none.fl_str_mv Pontifícia Universidade Católica do Rio Grande do Sul
dc.publisher.program.fl_str_mv Programa de Pós-Graduação em Engenharia Elétrica
dc.publisher.initials.fl_str_mv PUCRS
dc.publisher.country.fl_str_mv Brasil
dc.publisher.department.fl_str_mv Faculdade de Engenharia
publisher.none.fl_str_mv Pontifícia Universidade Católica do Rio Grande do Sul
dc.source.none.fl_str_mv reponame:Biblioteca Digital de Teses e Dissertações da PUC_RS
instname:Pontifícia Universidade Católica do Rio Grande do Sul (PUCRS)
instacron:PUC_RS
instname_str Pontifícia Universidade Católica do Rio Grande do Sul (PUCRS)
instacron_str PUC_RS
institution PUC_RS
reponame_str Biblioteca Digital de Teses e Dissertações da PUC_RS
collection Biblioteca Digital de Teses e Dissertações da PUC_RS
bitstream.url.fl_str_mv http://tede2.pucrs.br/tede2/bitstream/tede/7073/5/DIS_RAPHAEL_SEGABINAZZI_FERREIRA_COMPLETO.pdf.jpg
http://tede2.pucrs.br/tede2/bitstream/tede/7073/4/DIS_RAPHAEL_SEGABINAZZI_FERREIRA_COMPLETO.pdf.txt
http://tede2.pucrs.br/tede2/bitstream/tede/7073/3/license.txt
http://tede2.pucrs.br/tede2/bitstream/tede/7073/2/DIS_RAPHAEL_SEGABINAZZI_FERREIRA_COMPLETO.pdf
bitstream.checksum.fl_str_mv 32f26754fccc6c653584005d1ff8d337
c9db8699da7e00eed52993e78cecc86d
5a9d6006225b368ef605ba16b4f6d1be
d5db8a28bdcf83806ed8388083415120
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
repository.name.fl_str_mv Biblioteca Digital de Teses e Dissertações da PUC_RS - Pontifícia Universidade Católica do Rio Grande do Sul (PUCRS)
repository.mail.fl_str_mv biblioteca.central@pucrs.br||
_version_ 1799765323248828416