StackGuard + $\text{StackGuard}^+$ : Interoperable alternative to canary-based protection of stack smashing

IF 0.7 4区 工程技术 Q4 ENGINEERING, ELECTRICAL & ELECTRONIC
Kangmin Kim, Jeong-Nyeo Kim, Seungkwang Lee
{"title":"StackGuard\n +\n \n $\\text{StackGuard}^+$\n : Interoperable alternative to canary-based protection of stack smashing","authors":"Kangmin Kim,&nbsp;Jeong-Nyeo Kim,&nbsp;Seungkwang Lee","doi":"10.1049/ell2.13310","DOIUrl":null,"url":null,"abstract":"<p>This paper introduces a novel software-based approach to enhancing stack smashing protection in C/C++ applications, specifically targeting return-oriented programming attacks, which remain a significant threat to firmware and software security. Traditional canary-based protections are vulnerable to brute-force and format string attacks. Additionally, many stack protection mechanisms require access to the source code or recompilation, complicating the security of existing binaries. This paper proposes a new method, aptly named <span></span><math>\n <semantics>\n <msup>\n <mtext>StackGuard</mtext>\n <mo>+</mo>\n </msup>\n <annotation>$\\text{StackGuard}^+$</annotation>\n </semantics></math>, that modifies the canary-based protection mechanism by altering the code responsible for canary insertion and verification. This change ensures the integrity of the return address while maintaining the original code size, allowing for seamless interoperability without the need for recompilation or additional hardware. The approach can be automated using a Python script, which modifies existing canary-based binaries with only 26 bytes of machine code on the <span></span><math>\n <semantics>\n <mo>×</mo>\n <annotation>$\\times$</annotation>\n </semantics></math>86-64 platform. Moreover, this approach can be easily adapted to other platforms, including <span></span><math>\n <semantics>\n <mo>×</mo>\n <annotation>$\\times$</annotation>\n </semantics></math>86 and ARM64.</p>","PeriodicalId":11556,"journal":{"name":"Electronics Letters","volume":"60 19","pages":""},"PeriodicalIF":0.7000,"publicationDate":"2024-10-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"https://onlinelibrary.wiley.com/doi/epdf/10.1049/ell2.13310","citationCount":"0","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Electronics Letters","FirstCategoryId":"5","ListUrlMain":"https://onlinelibrary.wiley.com/doi/10.1049/ell2.13310","RegionNum":4,"RegionCategory":"工程技术","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"Q4","JCRName":"ENGINEERING, ELECTRICAL & ELECTRONIC","Score":null,"Total":0}
引用次数: 0

Abstract

This paper introduces a novel software-based approach to enhancing stack smashing protection in C/C++ applications, specifically targeting return-oriented programming attacks, which remain a significant threat to firmware and software security. Traditional canary-based protections are vulnerable to brute-force and format string attacks. Additionally, many stack protection mechanisms require access to the source code or recompilation, complicating the security of existing binaries. This paper proposes a new method, aptly named StackGuard + $\text{StackGuard}^+$ , that modifies the canary-based protection mechanism by altering the code responsible for canary insertion and verification. This change ensures the integrity of the return address while maintaining the original code size, allowing for seamless interoperability without the need for recompilation or additional hardware. The approach can be automated using a Python script, which modifies existing canary-based binaries with only 26 bytes of machine code on the × $\times$ 86-64 platform. Moreover, this approach can be easily adapted to other platforms, including × $\times$ 86 and ARM64.

StackGuard + $\text{StackGuard}^+$ : 基于金丝雀的堆栈粉碎保护的可互操作替代方案
本文介绍了一种基于软件的新方法,用于加强 C/C++ 应用程序中的堆栈粉碎保护,特别是针对面向返回的编程攻击,这种攻击仍然是对固件和软件安全的重大威胁。传统的基于金丝雀的保护措施容易受到暴力破解和格式字符串攻击。此外,许多堆栈保护机制需要访问源代码或重新编译,使现有二进制文件的安全性变得更加复杂。本文提出了一种名为 StackGuard + $\text{StackGuard}^+$ 的新方法,通过修改负责金丝雀插入和验证的代码来修改基于金丝雀的保护机制。这种修改既能确保返回地址的完整性,又能保持原始代码的大小,从而实现无缝互操作性,而无需重新编译或增加硬件。该方法可使用 Python 脚本实现自动化,在 × $\times$ 86-64 平台上修改现有的基于金丝雀的二进制文件,只需 26 字节的机器代码。此外,这种方法还可以很容易地适用于其他平台,包括 × $\times$ 86 和 ARM64。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
求助全文
约1分钟内获得全文 求助全文
来源期刊
Electronics Letters
Electronics Letters 工程技术-工程:电子与电气
CiteScore
2.70
自引率
0.00%
发文量
268
审稿时长
3.6 months
期刊介绍: Electronics Letters is an internationally renowned peer-reviewed rapid-communication journal that publishes short original research papers every two weeks. Its broad and interdisciplinary scope covers the latest developments in all electronic engineering related fields including communication, biomedical, optical and device technologies. Electronics Letters also provides further insight into some of the latest developments through special features and interviews. Scope As a journal at the forefront of its field, Electronics Letters publishes papers covering all themes of electronic and electrical engineering. The major themes of the journal are listed below. Antennas and Propagation Biomedical and Bioinspired Technologies, Signal Processing and Applications Control Engineering Electromagnetism: Theory, Materials and Devices Electronic Circuits and Systems Image, Video and Vision Processing and Applications Information, Computing and Communications Instrumentation and Measurement Microwave Technology Optical Communications Photonics and Opto-Electronics Power Electronics, Energy and Sustainability Radar, Sonar and Navigation Semiconductor Technology Signal Processing MIMO
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术官方微信