编译器安全

news2024/9/26 3:29:24

在供应链安全中,大家一直关注采用SCA工具分析开源组件中的安全漏洞以及许可证的合规性。但是对于底层软件开发使用的编译器、链接器等安全却容易被忽视,其中有没有安全漏洞、有没有运行时缺陷、有没有被植入漏洞、木马等,似乎并没有引起多少人注意。今天我正好拿到了库博静态分析工具,利用它检测一下gcc编译器,看看这款编译器质量怎么样?

网络上百度了一下,国内C/C++常用的编译器GCC 4.8.1版本比较多,我从官网网站(GCC Releases)下载了源代码,注意我们使用编译器等软件最好从官方网站下载呦。整个代码我一次性加载检测,达到了700多万行,这需要128G内存,明显笔记本是很少有128G内存,只能从其中找最重要的gcc目录下文件进行检测,大家可以看到就有310多万行源代码,其中C语言程序文件29232个,还有少量Fortran语言、Objective-C等程序文件。人家代码注释率还是满足一般企业标准的啊,将近20%的注释率。

        有的小伙伴可能看到了检测结果,有21148个缺陷,8156个安全漏洞,还有3518个违反编码标准的问题,程序员看了直接大喊,这不活了,这些问题,要修改到我死啊。哈哈,不要着急,我们看看他们使用了那些规则检测的。

      可以看到使用了C/C++常见安全漏洞检测规则、CWE通用缺陷和OWASP C安全漏洞,看看里面都是啥规则呢?

       我噻,C /C++语言常见的运行时缺陷全包括了,规则真是很全面。

            再打开一个规则详细看看呢?里面还有5个子类。

打开一个规则看看,描述怎么样?还是很详细的信息。还能导入规则。

        说了这么多,我们看看检测结果咋样?  

        打开运行时缺陷,打开内存泄露这个规则,右侧会列出检测结果。

    

我们打开一个检测结果看看,如下图。对于缺陷的描述非常清晰,包括了缺陷的名称、级别、爆发点在多少行,整个缺陷的source、sink等缺陷跟踪路径非常清晰。在某个节点上,还可以丰富的右键功能,查看变量、函数的定义,调用图等,好逆天的功能啊,这种逆向工程功能对于我们分析缺陷,非常有帮助。

        gcc编译器中这么多问题,对于我们很多企业只是使用gcc做编译来说,可能并不台关心这些编译器的缺陷或漏洞是否对于我们被编译的代码产生影响。因为代码可能是在物理隔离的环境上去使用,例如上,车载软件,船载软件等,但是这些缺陷可能被利用的难度很大,但是是否有被利用的风险呢,肯定是有的。只要有通讯,有与其它软件进行交互,就可能存在风险。但是对于运行时缺陷,利用内存泄露、数据越界等不一定需要外界触发引起问题,程序自身存在问题就会导致异常、Crash等,如果不是下载地址被恶意攻击了,产生的是供应链安全攻击,前几年出现的苹果开发套件被植入木马的事件也曾经发生过。所以要保证供应链的安全,不仅仅使用SCA工具去检测开源组件,而开源软件本身的风险可能更加严重,其攻击目的和带来的损失不是使用钱来衡量的。

       由于时间关系,我今天分析到这里,下次继续啊。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1236345.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

想面试前端工程师,必须掌握哪些知识和技能?【云驻共创】

在当今的数字化时代,前端工程师扮演着至关重要的角色。他们负责设计和开发用户界面,使得用户能够与应用程序或网站进行互动。为了找到最出色的前端工程师,你需要了解哪些技能和知识是必备的,同时也要掌握一些面试技巧和常见的面试…

上门维修安装派单系统小程序APP开发之会员级别设计深度解析

啄木鸟鲁班大师上门安装维修平台APP开发之VIP会员解析,在APP或者小程序里设置的会员叫VIP级别会员,系统一共分为4种会员,注册会员,正式会员,VIP金卡会员,VIP钻卡会员。注册用户是指注册了平台但是没有消费记…

【Windows 常用工具系列 11 -- win11怎么设置不睡眠熄屏 |win11设置永不睡眠的方法】

文章目录 win11 怎么设置不睡眠熄屏 使用笔记本电脑的时候,如果离开电脑时间稍微长一点就会发现息屏了,下面介绍 设置 Win11 永不睡眠息屏的方法,有需要的朋友们快来看看以下详细的教程。 win11 怎么设置不睡眠熄屏 在电脑桌面上&#xff0c…

说一下类的生命周期

👽System.out.println(“👋🏼嗨,大家好,我是代码不会敲的小符,双非大四,Java实习中…”); 📚System.out.println(“🎈如果文章中有错误的地方,恳请大家指正&a…

同为科技(TOWE)桌面PDU插排:一款可以DIY定制的“超级插座”

当今社会,各种电子产品和家用电器已成为人们日常生活中不可或缺的一部分,在带给人们便利的同时,也使得电力使用变得更加频繁和重要。然而,当前市面上很多普通插座由于功能单一、材质粗劣、插口数量受限、充电速度过慢、插头间互相…

Vue 项目实战——如何在页面中展示 PDF 文件以及 PDFObject 插件实战

文章目录 📋前言🎯使用 HTML 标签🧩 embed 标签🧩 object标签🧩 iframe标签🧩完整代码 🎯使用 PDFObject 插件🧩为什么使用 PDFObject 插件(AI翻译)&#x1f…

Gitlab安装与操作

GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。 可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的…

c++|引用

目录 一、引用概念 二、引用特性 三、常引用 (具有常属性的引用变量) 四、使用场景 一、引用概念 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,他和他引用的变量共用同…

C++ 使用c++类模板实现动态数组-可实现自定义数据类型存储

.hpp文件 #include <iostream> #include <cstdlib> #include <cstring> using namespace std; template <class T> class arraylist { private:T* data ;//数组地址int size;//长度int count;//容量public:arraylist();~arraylist();void add(T t);T&…

革新突破!智能指标平台引领时代,国产大模型与企业级部署的完美结合

11月21日&#xff0c;跬智信息&#xff08;Kyligence&#xff09;圆满召开了线上数智论坛暨产品发布会&#xff0c;升级智能一站式指标平台 Kyligence Zen 及 AI 数智助理 Kyligence Copilot 的一系列企业级能力&#xff0c;包括正式支持智谱 AI、百川智能等在内的多款国产大模…

什么是数字化工厂?企业数字化转型有什么好处?

科技在发展&#xff0c;时代在进步&#xff0c;全球信息化、数字化的步伐越来越快&#xff0c;数字化转型是否成功也成为企业在未来发展中能否做大做强的关键因素。而数字化工厂就是制造业数字化发展的一个重要发展方向&#xff0c;那么究竟什么是数字化工厂呢&#xff1f;它和…

IDEA如何将本地项目推送到GitHub上?

大家好&#xff0c;我是G探险者。 IntelliJ IDEA 是一个强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;它支持多种编程语言和工具。它也内置了对Git和GitHub的支持&#xff0c;让开发者可以轻松地将本地项目推送到GitHub上。以下是一个操作手册&#xff0c;描述了…

JSP:Tag文件的使用

需求&#xff1a;多个JSP页面可能需要使用一些相同的信息 例如:导航栏、标题等。 目标&#xff1a;提高这些相同信息的代码的复用性。 方法&#xff1a;将这些相同的元素形成一种特殊的文件&#xff0c;以便所有页面都可以使用&#xff0c;即&#xff1a;Tag文件 1、Tag对…

关于lenra你需要了解的

monorepo&#xff1a;项目代码管理方式&#xff0c;单个仓库中管理多个项目是一种设计思想 lenra&#xff1a;是一种工具&#xff0c;对于使用npm和git管理多软件包代码仓库的工作流程进行优化 使用这些工具的优点&#xff1a; 公共依赖只要安装一次&#xff0c;Monorepo 中…

阿里云ECS服务器如何搭建并连接FTP,完整步骤

怎么用终端连接服务器就不多说了&#xff0c;直接开始搭建FTP。 我是用root账号执行的命令&#xff0c;如果不使用root账号&#xff0c;注意在命令前面加sudo。 一、安装FTP 我这里安装的是vsftpd。 1、检查是否已安装vsftpd&#xff1a; vsftpd -v如果出现了版本信息&…

JAVAEE---多线程

内核 内核时操作系统的核心 操作系统有内核态和用户态&#xff0c;像我们平时所用到的qq音乐&#xff0c;微信等都属于用户态执行的程序。那么qq音乐播放音乐需要用到扬声器&#xff0c;扬声器的操作就是在内核空间进行操作&#xff0c;用户态不能对其进行操作。 操作系统 …

QT专栏2 -Qt for Android

#2023年11月18日 # Qt version 6.6 JDK17 JDK 安装 Java Downloads | Oracle 设置环境变量 鼠标右键我的电脑&#xff0c;出现如下界面 Qt配置 改用JDK18&#xff0c;没有乱码&#xff0c;由于不影响APK产生。 做了好多尝试&#xff0c;更换JDK版本(11,18,19,21)&…

Python+OpenCV裂缝面积识别系统(部署教程&源码)

1.研究背景与意义 随着科技的不断发展&#xff0c;计算机视觉技术在各个领域中得到了广泛的应用。其中&#xff0c;图像处理是计算机视觉中的一个重要分支&#xff0c;它通过对图像进行数字化处理&#xff0c;提取出其中的有用信息&#xff0c;为后续的分析和应用提供支持。而…

Git——感谢尚硅谷官方文档

Git——尚硅谷学习笔记 第1章 Git 概述1.1 何为版本控制1.2 为什么需要版本控制1.3 版本控制工具1.4 Git 简史1.5 Git 工作机制1.6 Git 和代码托管中心 第2章 Git 安装第 3 章 Git 常用命令3.1 设置用户签名3.2 初始化本地库3.3 查看本地库状态3.4 添加暂存区3.4.1 将工作区的文…