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

    文章

    107

    浏览量

    24835
  • 代码
    +关注

    关注

    30

    文章

    4780

    浏览量

    68539
  • 插件
    +关注

    关注

    0

    文章

    326

    浏览量

    22440
收藏 人收藏

    评论

    相关推荐

    分享关于编译器的科普

    代码分析工具和IDE集成。GCC被构建成一个单一的静态编译器,这使得它非常难以被作为API并集成到其他工具中。 GCC比Clang支
    的头像 发表于 12-09 09:49 87次阅读

    VSCode批量迁移插件

    代码的路 打开之前电脑,找到原电脑VS Code的插件安装目录: 如: C:\\\\Users\\\\用户名\\\\.vscode\\\\extensions 将extensions文件夹拷贝到
    的头像 发表于 11-06 16:04 193次阅读
    VSCode批量迁移<b class='flag-5'>插件</b>

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

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

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

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

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

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

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

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

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

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

    鸿蒙实战开发学习:【HiView插件开发】

    Hiview是一个跨平台的终端设备维测服务集,其中是由插件管理平台和插件实现的各自功能构成整套系统。 本文描述了hiview插件开发的全部流程。
    的头像 发表于 03-12 11:52 1318次阅读
    鸿蒙实战开发学习:【HiView<b class='flag-5'>插件</b>开发】

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

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

    labview调用大漠插件案例

    *附件:大漠插件Labview版本.zip labview调用大漠插件案例(只演示了查询版本) 其他功能可点击方法速实现。 【插件特色】 文字识别 领域,目前
    发表于 02-21 16:29

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

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

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

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

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

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