OpenHarmony开源软件供应链安全风险

news2024/11/18 18:18:54

慕冬亮,华中科技大学网络空间安全学院副教授,武汉英才,华中科技大学OpenHarmony技术俱乐部、开放原子开源社团指导教师。研究方向为软件与系统安全,在国际安全会议上发表十余篇论文,并获得ACM CCS 2018杰出论文奖。创立“华中大内核贡献团队”,并向Linux内核提交安全修复,获得了Google Open Source Peer Bounus 奖项。

正文内容

现阶段的软件开发过程往往涉及诸多开源软件的层层复用,这些开源软件彼此组合、依赖,由众多开发者共同维护,形成了一条复杂的开源软件供应链。那么,OpenHarmony开源软件供应链有哪些安全风险,又该如何应对?华中科技大学网络空间安全学院创新中心副主任、OpenHarmony技术俱乐部指导教师慕冬亮在第二届OpenHarmony技术大会上进行了精彩分享。

OpenHarmony整体遵从分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照“系统 > 子系统 > 组件”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的组件。在OpenHarmony系统构建的过程中,集成了大量的开源软件和开源三方库,不可避免地引入各类安全问题。例如,OpenHarmony的内核层采用了多内核设计(Linux内核或者LiteOS),支持针对不同资源受限设备选用适合的OS内核,而这些开源操作系统内核自身就存在各类潜在安全风险

以Linux内核为例,其常年包含很多安全漏洞,例如比较知名的Dirty Cow(CVE-2016-5195)、BadVibes(CVE-2020-24490)以及Dirty Pipe(CVE-2022-0847)等,并且有大量漏洞并未获得CVE编号。

当上游的一个漏洞被发现并提交安全补丁修复时,这个安全补丁会随着开源软件供应链不断向下游传播,例如从Linux-next到内核主线、LTS 5.10.y,再到下游各个发行版。在安全补丁的传播过程中,可能存在以下安全风险:

  • 供应链错误补丁引入与传播风险:一个从源头就是错误的补丁,可能会随着开源软件供应链的传播造成更大的不良影响。

  • 供应链安全补丁移植错误风险:即使安全补丁在引入时正确,其在操作系统供应链传播过程中存在可能,由于代码上下文等信息变更,成为错误补丁。

  • 供应链安全补丁投毒风险:攻击者可以通过提交内核错误修复的方式进行供应链源头投毒,并沿着供应链传播到下游国产操作系统。

  • 供应链安全补丁传播延迟风险:几乎一半的CVEs需要200天以上才能从补丁进入上游主线传播到最终的OEM厂商,而10-30%需要1年以上时间进行修复。

Linux内核历史中buggy patch产生的原因主要有:(1)缺乏对漏洞相关代码的理解以及漏洞根源的错误诊断导致产生错误补丁;(2)未考虑所有到达补丁修改代码的路径以及添加不足的合理性检查导致普遍的补丁错误。

通过对182个内核错误修复进行手动分析可知:(1)旧漏洞和新漏洞之间共享相似的上下文;(2)新漏洞由Altered Write-Read Pairs (AWRP)所导致。基于此,作者本人及其所在团队提出了一种新的补丁正确性评估方法——KLAUS。AWRP 机制可提供安全补丁的分析方法,而KLAUS可以用来确定和应用AWRP的框架。截至目前,KLAUS通过模糊测试已经发现并向Linux社区报告了30个不正确的补丁,其中一些补丁可能会在Android和Ubuntu系统上启用特权升级。

此外,华中科技大学OpenHarmony技术俱乐部开发了一个Linux内核“补丁监控机器人”,该机器人能够实时监控Linux内核相关的所有维护者的代码仓库,在仓库接收到某个补丁时,会验证和分析下游相关厂商是否将受到该补丁的影响,并跟踪该补丁的全生命周期。

随着软件产业的快速发展,利用开源软件构建信息系统已成为主流趋势。应对开源软件供应链日益突出的安全风险已然成为安全工作的重中之重。

声明:本文来自OpenHarmony TSC,版权归作者所有。

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

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

相关文章

JavaEE——Spring Boot + jwt

目录 什么是Spring Boot jwt? 如何实现Spring Boot jwt: 1. 添加依赖 2、创建JWT工具类 3. 定义认证逻辑 4. 添加过滤器 5、 http请求测试 什么是Spring Boot jwt? Spring Boot和JWT(JSON Web Token)是一对常…

装饰品模式介绍

装饰器模式是一种结构型设计模式,它允许用户在不改变现有对象的情况下向一个对象添加新的功能。在 Java 中,装饰器模式经常用来动态地给对象添加额外的行为,如日志记录、事务管理、安全检查等。 装饰器模式涉及四个主要角色:组件&…

【Ant-Desgin-React 步骤条】步骤条配合组件使用

步骤条配合组件使用 基础使用多分组进度 基础使用 /* eslint-disable no-unused-vars */ import React, { useState } from react import { Button, message, Steps, theme } from antd import After from ./components/after import Now from ./components/now const steps …

IOS恢复

1、实验目的 通过本实验可以掌握: copy方式恢复IOS的步骤。TFTPDNLD方式恢复IOS的步骤。Xmodem方式恢复IOS的步骤。 2、实验拓扑 路由器IOS恢复的实验拓扑如下图所示。 3、实验步骤 如果工作中不慎误删除路由器IOS,或者升级了错误版本的IOS&#xff…

Andorid复习

组件 TextView 阴影 android:shadowColor"color/red" 阴影颜色android:shadowRadius"3.0" 阴影模糊度(大小)android:shadowDx"10.0" 横向偏移android:shadowDy"10.0" 跑马灯 这里用自定义控件 public cla…

【线段树 区间位运算模板】3117划分数组得到最小的值之和

本文涉及知识点 线段树 区间位运算模板 LeetCode3117. 划分数组得到最小的值之和 给你两个数组 nums 和 andValues,长度分别为 n 和 m。 数组的 值 等于该数组的 最后一个 元素。 你需要将 nums 划分为 m 个 不相交的连续 子数组,对于第 ith 个子数组…

Spring Boost + Elasticsearch 实现检索查询

需求:对“昵称”进行“全文检索查询”,对“账号”进行“精确查询”。 认识 Elasticsearch 1. ES 的倒排索引 正向索引 对 id 进行检索速度很快。对其他字段即使加了索引,只能满足精确查询。模糊查询时,逐条数据扫描&#xff0c…

离散数学之一阶逻辑基本概念与等值演算思维导图+大纲笔记(期末复习,考研,学习笔记,知识点总结)

大纲笔记 基本概念 一阶逻辑命题符号化 个体词 个体常项 个体变项 个体域 个体总域 谓词 谓词常项 谓词变项 零元谓词 特性谓词 引入规则 量词 全称量词 存在量词 一阶逻辑1公式及解释 基本概念 原子公式 谓词公式 自由变元与约束变元 自由变元 换名规则 约束变元 带入规则 闭…

【Flink入门修炼】2-3 Flink Checkpoint 原理机制

如果让你来做一个有状态流式应用的故障恢复,你会如何来做呢? 单机和多机会遇到什么不同的问题? Flink Checkpoint 是做什么用的?原理是什么? 一、什么是 Checkpoint? Checkpoint 是对当前运行状态的完整记…

机器学习day3

一、距离度量 1.欧氏距离 2.曼哈顿距离 3.切比雪夫距离 4.闵可夫斯基距离 二、特征与处理 1.数据归一化 数据归一化是一种将数据按比例缩放,使之落入一个小的特定区间的过程。 代码实战 运行结果 2.数据标准化 数据标准化是将数据按照其均值和标准差进行缩放的过…

语义分割模型——浅谈U-net相关理论

目录 1 U-net简介 1.1 U-net是什么 1.2 U-net的创新点及优势 2 U-net改进思路 2.1 编码器优化 2.2 跳跃连接优化 2.3 解码器优化 2.4 其他优化方式 2.5 注意事项 1 U-net简介 1.1 U-net是什么 Ronneberger等人于2015年基于FCN(全卷积神经网络&#xff09…

【一般排查思路】针对银河麒麟高级服务器操作系统磁盘空间已满

1. 本身磁盘空间已满 有时候我们会看到服务器上有提示“设备上没有空间”,如图1。 图 1 如果是磁盘本身空间已满,我们可以借助du工具来排查,比如首先cd / 切换到根目录,然后 du -sh * | sort -rh | head -n 3查看空间占用最大的…

基于Springboot的在线动漫信息平台

基于SpringbootVue的在线动漫信息平台的设计与实现 开发语言:Java数据库:MySQL技术:SpringbootMybatis工具:IDEA、Maven、Navicat 系统展示 用户登录 首页 热门动漫 文章专栏 会员分享 论坛信息 动漫资讯 后台登录 动漫分类管…

【Redis】Redis 非关系型数据库 安装、配置、使用(全集)

目录 Redis 第一章 1、什么是redis 2、安装redis 1-7 8 3、redis使用 第二章 1、redis的使用 1、使用方式 2、使用Java代码使用redis 3、优化连接redis 2、五种数据类型 常用命令 string hash list set zset 不同数据类型存、取、遍历的方法 3、redis在项目…

C++ | Leetcode C++题解之第49题字母异位词分组

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<vector<string>> groupAnagrams(vector<string>& strs) {// 自定义对 array<int, 26> 类型的哈希函数auto arrayHash [fn hash<int>{}] (const array<int, 26>&…

d12(121-125)-勇敢开始Java,咖啡拯救人生

目录 JDK8前的Date SimpleDateFormat 解析字符串时间成为日期对象 秒杀 Calendar JDK8之后的时间 LocalDate LocalTime LocalDateTime LocalDate 获取日期对象中的信息 修改某信息 把某信息加/减多少 获取指定时间的LocalDime对象 判断两日期对象 是否相等 在前还是…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之六 简单进行人脸训练与识别

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之六 简单进行人脸训练与识别 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之六 简单进行人脸训练与识别 一、简单介绍 二、简单进行人脸训练与识别 1、LBPH…

基于Spring Boot的考研资讯平台设计与实现

基于Spring Boot的考研资讯平台设计与实现 开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/idea 系统部分展示 系统功能界面图&#xff0c;在系统首页可以查看首页、考…

公司服务器中的kafka消息中间件挂了,我是如何修复的?

今天的公司的system系统服务在运行过程中&#xff0c;提示连接不上kafuka的消息中间件。但是负责kafka的同事已经离职了&#xff0c;询问公司开发也不知道如何处理&#xff0c;我是如何重启kafka消息中间件使system系统服务正常运行&#xff1f; 查看kafka的安装位置 在下面的…

【UE5】蓝图通信方式

目录 1、直接通信 2、getAllActorsOfClass 3、getAllActorsOfClassWithTag 4、通过射线检测 5、接口 6、事件分发器 7、SpawnActor 8、调用控制台命令 9、关卡蓝图中直接调用 创建两个Actor蓝图 1、直接通信 场景中 2、getAllActorsOfClass 3、getAllActorsOfClassWit…