Stack smashing attack detection methodology for secure program execution based on hardware
Autor(a) principal: | |
---|---|
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 |