gcc fortify

这篇具有很好参考价值的文章主要介绍了gcc fortify。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

gcc fortify编译选项是用于在编译时检查缓冲区溢出的等级,它需要gcc版本至少为4.0。您可以使用-D FORTIFY_SOURCE=2来开启fortify检测,并且需要配合-O选项来指定优化等级2。一个简单的测试代码如下:

#include <stdio.h>
#include <string.h>

int main()
{
    char buf[10];
    strcpy(buf, "This is a long string");
    printf("%s\n", buf);
    return 0;
}

如果使用gcc -O2 -D_FORTIFY_SOURCE=2 test.c来编译,会得到如下警告:

test.c: In function ‘main’:
test.c:7:5: warning: ‘__builtin_memcpy’ writing 19 bytes into a region of size 10 overflows the destination [-Wstringop-overflow=]
    7 |     strcpy(buf, "This is a long string");
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

如果运行编译后的程序,会得到如下错误:

*** buffer overflow detected ***: terminated
Aborted (core dumped)

这说明fortify检测成功发现了缓冲区溢出的问题。

注意:

  • 3 在2的基础上,可以对malloc出来的内存进行检测 (gcc 需要大于12)
  • 2 在1的基础上,可以对栈变量进行检测
  • 1 在编译时进行检测
  • 优化等级必须要大于O2这个选项才会生效。level 3需要gcc 12以上才生效。

`__builtin_object_size`和`__builtin_dynamic_object_size`是GCC编译器提供的内建函数,用于在编译时或运行时确定对象的大小。

`__builtin_object_size`函数接受一个指针作为参数,返回一个编译时常量,该常量是指针可能指向的对象的最大或最小对象大小估计。这个函数主要依赖于编译器的优化功能,例如在函数边界上确定对象大小或通过非平凡的控制流跟踪指针赋值。

`__builtin_dynamic_object_size`函数与`__builtin_object_size`类似,也是返回从指针到指针指向的对象的末尾的字节数,但返回的大小可能不是常量。这使得在更广泛的使用场景中成功评估对象大小估计,并且可能比`__builtin_object_size`更精确,但它可能会带来性能损失,因为它可能会增加运行时的大小计算开销。

至于Clang编译器,据我所知,Clang在15.0.0版本中支持`-fstrict-flex-arrays=<arg>`选项,该选项可以控制哪些数组边界导致灵活的数组成员。该选项在大多数情况下都可以得到更准确的`__builtin_object_size`和`__builtin_dynamic_object_size`结果。此外,Clang的UndefinedBehaviorSanitizer(UBSan)也提供了一些对未定义行为的检查,这可能与`__builtin_object_size`和`__builtin_dynamic_object_size`的功能有所重叠。总的来说,Clang应该可以使用这两个内建函数,但可能需要检查你的Clang版本以确保兼容性。文章来源地址https://www.toymoban.com/news/detail-624656.html

到了这里,关于gcc fortify的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • bye 我的博客网站

    Bye🙋🙋🙋,我的博客网站。在我的服务器上运行了9个月之久的博客网站要和大家Bye了。 背景 可能很多人不知道我的这个博客网站的存在,好吧,最后一次展示它了,博客网站地址在这里,它是基于开源的一款Java开发的CMS博客建站平台:PerfreeBlog构建的。官方的网站首页是

    2024年02月13日
    浏览(50)
  • ChatGPT时代的我的博客

    好久没有在CSDN写原创文章了。 ChatGPT出来之后,肯定对CSDN这样的平台有很大的冲击性。 我平时在CSDN写的文章,大多是翻译和一些平时编程遇到的代码问题。小部分是一些自己的经验和总结。 这些文章会被ChatGPT,或者更通用的说,(CSDN、Stackoverflow之类的网站)会被LLM取代吗

    2024年02月10日
    浏览(38)
  • 优先看我的博客:工控机 Ubuntu系统 输入密码登录界面后界面模糊卡死,键盘鼠标失效(不同于其他博主的问题解决方案,优先看我的博客。)

            (不同于其他博主的问题解决方案,工控机Ubuntu的系统   优先看我的博客。) 系统版本: ubuntu18.04 主机: 工控机 应用场景: 电力系统巡检机器人,工控机外hdmi接显示器,外接鼠标键盘。 问题: 之前在自己公司测试工控机可正常工作,但是发往客户现场后出现问

    2024年01月17日
    浏览(50)
  • 我3年前写的博客,又被别人抄去发论文了,该论文整个正文部分几乎直接照抄我的博客

       我想说每一篇原创博客都是作者的心血,有时候写一篇博客也许会花一天,甚至好几天的时间,尊重原创,营造好的环境,才有可能出现更多优质的博文,而不是到处都是抄来抄去的低质量水文。    前几天接到来自粉丝的私信,说看到一篇论文与我之前发过的博客很

    2024年02月06日
    浏览(38)
  • 关于U盘插入电脑被识别却在我的电脑里显示不出来的解决办法-秋天的风的博客

            U盘的全称是USB闪存盘,是一种非常小巧的存储设备,使用,但是有时候U盘插入电脑后却显示不出来,有可能是以下几种原因: 1.U盘问题 这种情况的解决办法是先查看U盘接口有没有灰尘及接口有没有不变形,有灰尘清理一下就好了,如果接口出现问题去修,如果没

    2024年02月06日
    浏览(104)
  • Fortify免费安装使用教程

    百度网盘资源,需要自取  链接: https://pan.baidu.com/s/1UcvNzvKOgkCLbeaWGmpcLg?pwd=jiax 提取码: jiax    Fortify 能够提供静态和动态应用程序安全测试技术,以及运行时应用程序监控和保护功能。为实现高效安全监测,Fortify具有源代码安全分析,可精准定位漏洞产生的路径,以及具有

    2024年02月11日
    浏览(29)
  • 0基础入门代码审计-2 Fortify初探

    1、Fortify 2、需要审计的源码 1、  1、在开始菜单栏中找到Audit Workbench。 2、打开之后,是Fortify的首页(不同版本,首页可能不同)。 3、选择Advanced Scan导入源码。 1)选择源码; 2)选择java版本; 3)选择输出报告的位置。 4、点击Scan,开始源码扫描。 5、审计结束后,会输出审计

    2024年02月11日
    浏览(39)
  • 代码审计工具之Fortify安装及使用

    一、Fortify 工具介绍 二、 Fortify工具下载 三、、安装步骤   Fortify SCA 是一个静态的、白盒的软件源代码安全测试工具。它通过内置的五大主要分析引擎:数据流、语义、结构、控制流、配置流等对应用软件的源代码进行静态的分析,分析的过程中与它特有的软件安全漏洞规则

    2024年02月13日
    浏览(37)
  • 【代码审计篇】 代码审计工具Fortify基本用法详解

    本篇文章讲解代码审计工具Fortify的基本用法,感兴趣的小伙伴可以研究学习一下,文中部分地方可能会有遗漏,麻烦各位大佬指正,深表感谢!!! Fortify全名叫 Fortify SCA ,是惠普公司HP的出品的一款源代码安全测试工具,这家公司也出品过另一款Web漏洞扫描器,叫做 Webin

    2024年02月05日
    浏览(39)
  • 安全测试工具Fortify最新版本及使用操作演示

    代码测试工具是安全测试、代码审计中经常会用到的一款软件测试工具,支持超过27种语言,超过911,000个组件级API,覆盖810多个SAST漏洞分类。通过Fortify的安全编码规则库,可以定位漏洞根本原因,参考漏洞修复指南。Fortify现在已发布的最新版本是Fortify 22.1.0 版本,首先我们

    2024年02月10日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包