0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

利用GCC插件实现代码分析和安全审计

zz爱尚科技 来源:zz爱尚科技 作者:zz爱尚科技 2022-10-13 14:00 次阅读

利用GCC插件实现代码分析和安全审计

GCC 4.5.0开始引入的一项插件功能,允许用户通过插件来干预GCC的编译过程,获取到GCC编译过程中的各种数据,甚至可以修改编译过程中生成的中间数据,从而达到修改最终生成的二进制文件行为的目的(注:特别需要注意的是GCC-Plugin的API是会随版本变化的)。此特性从程序员的角度来看,就相当于把原来GCC的黑盒编译过程一下子打开了,GCC编译的过程数据可以“大白于天下”,可以清清楚楚的看个够。

下图为GCC编译架构****

image.png

GCC编译过程与插件的交互流程

image.png

注:图引自DragonEgg 在"Reimplementing llvm-gcc as a gcc plugin"

开源GCC插件列表**** (来自https://gcc.gnu.org/wiki/plugins):

image.png

基于GCC此插件特性,从安全测试的角度来看,可以用它来干什么呢?

A.可以把GCC编译过程的内部数据结构图形化,方便分析应用程序。****

图形化对象可以是控制流图、函数调用图、支配图、Tree结构、Gimple结构、RTX结构、Pass列表等等。

下图是Gimple层次图**** :

image.png

B、 利用可以修改中间数据的能力,可以不用修改源代码就能添加新功能的功能,从而实现动态安全分析、安全加固的能力。

在安全测试中为了监控程序执行路径情况,需要通过动态插装来实现,常见的插装工具有Pin、Dynamo,但这些动态插装会对程序的运行性能产生影响,降低程序运行效率,严重的会导致程序不能正常运行。但如果能预先在目标程序中把插装代码编译进去,这样既兼顾到性能,有兼顾到实现插装的目的,一般要实现这个目的都是在源代码层面由开发人员增加插装代码,但增加的代码只是为了测试的目的,在实际发布版本中是不需要的,因此直接在源代码层面增加插装代码就给代码维护带来的不便,但如果我们应用GCC编译器的插件能力,在编译构建过程中自动添加插装代码到最终生成的二进制文件中,这样只需根据需要重新编译就能得到不同目的的应用程序而不需要修改任何一行源代码,既增加插装代码的动作对上层是透明的。

基于上述在编译过程中自动增加插装代码,可以实现对测试活动的度量和提升测试效率,比如测试时代码覆盖率的统计与度量,基于执行路径来优化测试用例提升fuzz效率等等功能。

总结:

利用GCC的插件功能,可以利用编译过程中的内部数据来帮助安全分析人员对程序进行安全分析和安全加固等事情,提升程序分析效率和分析精准度。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • GCC
    GCC
    +关注

    关注

    0

    文章

    105

    浏览量

    24802
  • 代码
    +关注

    关注

    30

    文章

    4717

    浏览量

    68196
  • 插件
    +关注

    关注

    0

    文章

    320

    浏览量

    22389
收藏 人收藏

    评论

    相关推荐

    什么是协议分析仪和训练器

    网络性能和稳定性。 安全审计与监控:检测恶意攻击、入侵行为,监控潜在的安全威胁,加强网络安全防护和审计。 分类: 硬件型协议
    发表于 10-29 14:33

    数据库安全审计系统:筑牢数据安全防线 提高数据资产安全

    随着万物互联的技术演进,以及数字化转型的快速发展,数据库成为最具有战略性的数字资产载体,保障数据库安全也就保障了存储其中的数据安全,数据库安全审计是对数据库“增、删、改、查”具体操作的
    的头像 发表于 07-17 13:38 651次阅读

    数据库安全审计系统:满足数据安全治理合规要求

    伴随着数据库信息价值以及可访问性提升,使得数据库面对来自内部和外部的安全风险大大增加,如违规越权操作、恶意入侵导致机密信息窃取泄漏,但事后却无法有效追溯和审计。 国内专注于保密与非密领域的分级保护
    的头像 发表于 07-04 13:04 235次阅读

    安全服务加密存储代码怎么查

    安全服务加密存储代码的查询与实现是一个复杂的过程,涉及到多个方面,包括数据加密、密钥管理、访问控制等。 1. 引言 随着云计算的快速发展,越来越多的企业和个人将数据存储在云端。然而,数据安全
    的头像 发表于 07-02 09:28 289次阅读

    利用Swap模式实现代码回滚操作

    前面介绍了MCUboot的基础知识,您可通过上方链接回顾历史文章,上次介绍了Swap模式,本次着重介绍利用Swap模式实现代码回滚操作。在某些应用场景中,可能新版本的Firmware存在bug而需要返回至上一次的固件。
    的头像 发表于 06-19 15:45 1113次阅读
    <b class='flag-5'>利用</b>Swap模式<b class='flag-5'>实现代码</b>回滚操作

    在ILLD库中调试发送通信的代码时,发现代码在这两个地方循环,但没有读取发送的数据,为什么?

    我在 ILLD 库中调试发送通信的代码时,发现代码在这两个地方循环,但没有读取发送的数据。 请帮助分析一下原因?
    发表于 05-24 08:00

    芯海 32 位 MCU 开发调试 ,基于 VS Code 插件实现芯海 32 位 MCU 开发调试

    编译/链接等脚本语法,只需要简单配置参数、新建工程、增加代码文件后,就可以开始编译 和调试了。如果要生成静态库文件也只需要修改输出格式,再编译就可能生成.a 的文件。*附件:基于VSCode插件实现芯海32位MCU开发调试.pd
    发表于 05-16 10:46

    知语云全景监测技术:现代安全防护的全面解决方案

    可以帮助实现政务数据的安全保护,防止敏感信息泄露;对于个人用户而言,知语云全景监测技术可以提供更加全面的网络安全保护,防范网络钓鱼、恶意软件等安全威胁。 总之,知语云全景监测技术作为
    发表于 02-23 16:40

    Embedded office发布安全插件V1.1版本!

    Embedded office很高兴地宣布安全插件V1.1版本的发布了!现在通过外部设备或不同核心架构的专门通道支持端到端受保护的安全通信。
    的头像 发表于 02-20 11:12 546次阅读

    代码审计怎么做?有哪些常用工具

    代码审计是一种通过检查源代码来发现潜在的安全漏洞的方法。 下面是常用的源代码审计工具: 1、F
    发表于 01-17 09:35

    工业互联网安全管控与审计系统“保障”工控系统网络安全

    %攀升至2025年的55%。   由国联易安的研究团队自主研发的工业互联网安全审计系统从管理层面提供工业互联网安全性的有效监管,实现对工业控制系统的
    的头像 发表于 01-15 17:34 466次阅读
    工业互联网<b class='flag-5'>安全</b>管控与<b class='flag-5'>审计</b>系统“保障”工控系统网络<b class='flag-5'>安全</b>

    首批!中软国际四款审计产品入选“高质量智能审计工具目录”

    ‍ ‍ 在中国信通院组织的智能审计工具能力验证权威评估中, 中软国际智审工具、审计智搜、协同文书编辑工具、非结构化数据分析工具等四款审计产品顺利通过检验 , 以突出的技术能力成功入选
    的头像 发表于 12-16 16:10 1006次阅读

    中软国际企业审计解决方案获得华为云联合基线解决方案认证,共同推进“科技强审”建设

    ,长期秉持高质量服务客户、共建共赢的合作理念,得到了行业专家、客户的高度认可。此次联合基线解决方案的发布,将加速深化审计数字化和治理现代化,进一步夯实了科技强审、数据先行的国家战略。 打造基线解决方案商业价值 华为
    的头像 发表于 12-13 16:05 473次阅读

    工字插件电感引脚破损的常见原因分析

    工字插件电感是一种应用非常广泛的电感产品,大家在使用工字插件电感的时候会遇到很多问题,比如选型的问题,或者是使用中出现的一些其他异常问题等。本篇我们来分析一个比较常见的问题——引脚破损!
    发表于 11-13 16:42 3次下载

    AbsInt—确保代码安全的静态性能分析工具

    德国AbsInt公司是专注于安全苛求软件研发、确认、验证和认证的工具链供应商,能够为客户提供完整的确保代码安全的性能分析工具套件以及软件分析
    的头像 发表于 11-08 11:15 421次阅读
    AbsInt—确保<b class='flag-5'>代码</b><b class='flag-5'>安全</b>的静态性能<b class='flag-5'>分析</b>工具