当前位置: 首页 > news >正文

编译器安全

在供应链安全中,大家一直关注采用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工具去检测开源组件,而开源软件本身的风险可能更加严重,其攻击目的和带来的损失不是使用钱来衡量的。

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

相关文章:

编译器安全

在供应链安全中,大家一直关注采用SCA工具分析开源组件中的安全漏洞以及许可证的合规性。但是对于底层软件开发使用的编译器、链接器等安全却容易被忽视,其中有没有安全漏洞、有没有运行时缺陷、有没有被植入漏洞、木马等,似乎并没有引起多少人…...

docker部署gitlab 12.10.6过程

docker部署gitlab 12.10.6过程 1.docker安装 docker指定版本安装【官方文档步骤】 官方文档地址:https://docs.docker.com/engine/install/centos/ # 1.安装yum工具及设置docker-ce镜像库 sudo yum install -y yum-utils# 国外的镜像下载太慢了改成阿里云镜像库 s…...

单例设计模式是什么?什么是 Singleton 单例设计模式?Python 单例(单件)设计模式示例代码

什么是 Singleton 单例设计模式? 单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问该实例。 主要思想: 单例模式确保某个类只有一个实例,并提供了一个访问该实例的全局访问点。它…...

Redis跳跃表

前言 跳跃表(skiplist)是一种有序数据结构,它通过在每一个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。 跳跃表支持平均O(logN),最坏O(N),复杂度的节点查找,还可以通过顺序性来批量处理节点…...

C++基础从0到1入门编程(二)

系统学习C 方便自己日后复习,错误的地方希望积极指正 往期文章:C基础从0到1入门编程(一) 参考视频: 1.黑马程序员匠心之作|C教程从0到1入门编程,学习编程不再难 2.系统化学习C 1 函数指针和回调函数 如果把函数的地址…...

Uniapp扫码预览连接地址与手机不在同一网段

在开发Uniapp应用时,这里有一个扫码预览的功能,电脑与手机都是在一网络下,之前点开后预览地址一直是169.254.3.x的地址,通过WINR键输入cmd运行,然后ipconfig查看所有网络连接。发现有一个虚拟网络连接的地址是169.251.…...

万界星空科技SMT行业生产管理MES系统解决方案

一、SMT行业特点: SMT(Surface Mounted Technology)作为电子组装行业里首先的技术和工艺,选择合适的MES解决方案来保障SMT生产的成功至关重要。 电子行业涉及的范围非常广,包含了汽车、电脑、电视、手机等产品上&…...

vue3 uniapp h5 安卓和iOS开发适配踩坑记录

font-size适配屏幕大小及iOS和安卓状态栏及安全距离的处理 App.vue <script setup lang"ts"> import { onLaunch, onShow, onHide } from "dcloudio/uni-app"; import ./main.scss onLaunch(() > {console.log("App Launch");var wid…...

inf和nan

在某些编程语法中inf表示无穷大,nan表示不是一个数(not a number) nan表示这个数不确定,而无穷大表示这个数任意大 1/0inf 这里把0当做一个无限接近0,但是非0的数 5-inf-inf 一个数减去无穷大会等于负无穷大 而inf-infnan 因为两个无穷大相减有很多可能,可能等于一个常数,也可能…...

十. Linux关机重启命令与Vim编辑的使用

关机重启命令 shutdown命令 其他关机命令 其他重启命令 系统运行级别 系统默认运行级别与查询 退出登录命令logout 文本编辑器Vim Vim简介 没有菜单,只有命令Vim工作模式 Vim常用命令 插入命令 定位命令 删除命令 复制和剪切命令 替换和取消命令 搜索和搜索替换命令 保存和退出…...

Spring-IOC-@Value和@PropertySource用法

1、Book.java PropertySource(value"classpath:配置文件地址") 替代 <context:property-placeholder location"配置文件地址"/> Value("${book.bid}") Value("${book.bname}") Value("${book.price}") <bean id&…...

如何理解Python中一切皆对象?

Python 一、示例代码二、Python中的魔法方法 一、示例代码 有理数类 import mathclass rational:def __init__(self,p,q):self.p pself.q qdef __str__(self):return "{} / {}".format(self.p,self.q)def simplify(self):gcd math.gcd(self.p,self.q)return rat…...

【如何学习Python自动化测试】—— 鼠标键盘操作

5 、 鼠标键盘操作 在浏览器中&#xff0c;通常会用到鼠标来进行操作&#xff0c;比如右键菜单中选择一个操作&#xff0c;在 selenium 中提供了下列鼠标相关操作。 ActionChains 类提供了以下方法&#xff1a; 点击鼠标&#xff1a;click()右击鼠标&#xff1a;context…...

随笔-事儿就这么个事儿

好久没写了&#xff0c;小A要催更&#xff0c;还答应让我写一下他的经历&#xff0c;这还有啥说的&#xff0c;开整。 1、升级 前段时间登录公司的办公系统处理一个事务申请&#xff0c;发现有个粗体标红的通知&#xff0c;是关于今年的晋升名单公示。进去看了一眼&#xff0…...

django理解03 数据库引入

配置 settings.py DATABASES {"default": {"ENGINE": "django.db.backends.mysql",NAME:307_django_db,USER: root,PASSWORD: 123456,HOST: 127.0.0.1,PORT: 3306,} }先创建指定名称的数据库databases create database self_django_db DEFAUL…...

Jtti:windows中apache怎么实现负载均衡

Jtti&#xff1a;windows中apache怎么实现负载均衡 在Windows环境下&#xff0c;你可以使用Apache HTTP Server搭建负载均衡集群。Apache提供了一个模块叫做mod_proxy&#xff0c;它可以用来实现反向代理和负载均衡。以下是一个简单的步骤来配置Apache负载均衡&#xff1a; 步骤…...

2311rust,到43版本更新

1.38.0 流水编译 要编译仓库,编译器不需要完全构建依赖项.相反,只需要它们的"元数据"(即类型,依赖关系,导出列表). 在编译过程的早期生成此元数据.从Rust1.38.0开始,Cargo利用这一点,在准备好元数据后立即自动开始构建依赖的仓库. 检查错误使用mem::{uninitialize…...

前端埋点上报的几种方式

现代Web应用程序中&#xff0c;埋点上报是一种重要的数据收集和分析手段。本文将介绍前端埋点上报的几种常见方式&#xff0c;并详细阐述如何在项目中运用这些方式进行数据上报&#xff0c;以帮助开发者更好地进行数据收集和分析。 上报方式 在前端中&#xff0c;常见的埋点上…...

外部 prometheus监控k8s集群资源

prometheus监控k8s集群资源 一&#xff0c;通过CADvisior 监控pod的资源状态1.1 授权外边用户可以访问prometheus接口。1.2 获取token保存1.3 配置prometheus.yml 启动并查看状态1.4 Grafana 导入仪表盘 二&#xff0c;通过kube-state-metrics 监控k8s资源状态2.1 部署 kube-st…...

centos安装神通数据库

1、安装 wget工具 yum install -y wget2、安装rar解压工具 wget --no-check-certificate http://www.rarlab.com/rar/rarlinux-x64-5.3.0.tar.gz tar zxvf rarlinux-x64-5.3.0.tar.gz && cd rar/ && make install3、下载oscar神通数据库&#xff08;linux 64…...

生存数据分析:缺失值处理与因果效应估计实战

1. 生存数据分析的核心挑战 在医疗健康、工业设备维护等领域&#xff0c;我们经常需要分析"从某个起点事件到终点事件发生的时间"&#xff0c;这就是生存分析的核心任务。但实际操作中&#xff0c;数据缺失和混杂变量的问题几乎无处不在。想象一下&#xff0c;你正在…...

告别玄学调参:用STM32 CubeMX和逻辑分析仪调试SX1262 LoRa通信

告别玄学调参&#xff1a;用STM32 CubeMX和逻辑分析仪调试SX1262 LoRa通信 在物联网设备开发中&#xff0c;LoRa技术因其长距离、低功耗的特性成为热门选择。然而许多开发者在实际使用SX1262芯片时&#xff0c;常常陷入反复修改参数却收效甚微的困境。本文将分享如何通过STM32 …...

Angular 表单中基于下拉选择动态启用字段必填校验的完整实现方案

本文介绍如何在 Angular 响应式表单中&#xff0c;根据 payable_frequency_ref_id 下拉框的选择状态&#xff0c;动态控制 min_payable_commission 和 max_payable_commission 两个输入框中「任一必填」的自定义校验逻辑&#xff0c;避免硬编码 required 属性或重复调用 setVal…...

GJB/Z 299D-2024 电子设备可靠性预计软件高效实操教程

传统手工查表法进行复杂电子设备可靠性预计&#xff0c;存在效率低下、流程繁琐、工作量大、无法快速二次编辑等问题&#xff0c;已难以适配当前军工领域合规化、高效化的报告出具需求。 元器件计数法可靠性预计软件【工作状态】 元器件应力分析法可靠性预计软件【工作状态】 …...

wmux:让终端窗格变独立窗口,实现桌面级终端管理

1. 项目概述&#xff1a;一个为窗口管理而生的终端复用器如果你和我一样&#xff0c;常年泡在终端里&#xff0c;与多个服务器、多个项目、多个命令行工具打交道&#xff0c;那你一定对窗口管理这件事深有感触。传统的终端复用器&#xff0c;比如大名鼎鼎的tmux&#xff0c;功能…...

VPC NAT 网关 v2.0 上线!VPC 级一次性打通,告别重复配置

VPC&#xff08;虚拟私有云&#xff09;是公有云上逻辑隔离、可自定义的私有网络空间&#xff0c;是云上资源部署和通信的基础&#xff0c;核心资源均需部署其中&#xff0c;不同VPC默认隔离以保障安全。用户可自主划分子网、配置路由&#xff0c;而网关是VPC内外及跨VPC通信的…...

MAX9705 Class D音频放大器低EMI设计解析

1. MAX9705 Class D音频放大器设计解析在便携式音频设备设计中&#xff0c;工程师们始终面临着一个核心矛盾&#xff1a;如何在有限的空间和功耗预算下&#xff0c;实现高保真音频输出同时满足严格的电磁兼容要求。传统Class AB放大器虽然电磁干扰(EMI)特性良好&#xff0c;但效…...

YOLOv8改进 | 检测头篇 |最新HyCTAS模型提出SAttention(自研轻量化检测头 -> 适用分割、Pose、目标检测)

开始讲解之前推荐一下我的专栏,本专栏的内容支持(分类、检测、分割、追踪、关键点检测),专栏目前为限时折扣,欢迎大家订阅本专栏,本专栏每周更新3-5篇最新机制,更有包含我所有改进的文件和交流群提供给大家。 一、本文介绍 本文给大家带来的改进机制是由全新SOTA分割模型…...

基于MCP协议与自然语言交互的Eventbrite活动管理自动化实践

1. 项目概述&#xff1a;用自然语言驱动你的Eventbrite活动管理如果你和我一样&#xff0c;经常需要管理各种线上或线下活动&#xff0c;那你一定对Eventbrite这个平台不陌生。无论是技术沙龙、产品发布会还是社区聚会&#xff0c;Eventbrite都是活动组织者的得力助手。但每次都…...

基于Django与Vue.js的现代开源ERP系统Trenova架构解析与实战部署

1. 项目概述&#xff1a;一个开源ERP的现代实践最近在梳理企业内部流程时&#xff0c;我一直在寻找一个既能满足复杂业务逻辑&#xff0c;又具备现代技术架构的ERP&#xff08;企业资源计划&#xff09;系统。传统的商业ERP要么价格昂贵、定制困难&#xff0c;要么技术栈陈旧&a…...