开源项目生存现况:xz投毒事件引发的思考与GNU tar维护挑战
(首发地址:学习日记 https://www.learndiary.com/2024/04/xz-tar/)
嗨,大家好!我是来自淘宝网“学习日记小店”的 learndiary,专注于 Linux 服务领域。今天我要和大家谈谈近期备受瞩目的 XZ 供应链投毒事件,并借此引申到开源世界中小型基础软件项目的生存困境。本文基于“通义千问”归纳视频字幕生成文本修改。视频演示:【开源项目生存现况:xz投毒事件引发的思考与GNU tar维护挑战】 https://www.bilibili.com/video/BV1Nm411r76N/
开源项目生存现况:xz投毒事件引发的思考与GNU tar维护挑战
最近热议的焦点在于 JiaT75 这位开发者,在一个开源项目中潜伏长达三年,试图植入后门。这起事件引发了我对开源社区中小型基础项目如 xz 的生存状况的关注。Deepin Linux 社区论坛上的一个转贴(见参考链接1)揭示了 xz 项目的原唯一维护者 Lasse Collin 早已不堪重负,仅能应对修复已知bug,无力进行新功能开发。这种情况使得 JiaT75 能够险些成功地在其代码中注入恶意内容,而这与小软件项目因资源有限而面临的挑战紧密相关。
我自己也曾亲历过相似的开源项目困境,这次是针对 Linux 下常用的归档工具 GNU tar。我发现 GNU tar 当时无法正确恢复通过 chattr 设置的不可更改文件属性(见参考链接2)。当我向 tar 的邮件列表提问该功能是否存在时,得到了明确答复:目前 GNU tar 不具备恢复此类属性的功能,且短期内也没有将其纳入开发计划。尽管 tar 的维护者认可这是一个有价值的特性,但可能由于时间和精力有限,暂时无法着手实施。
此外,另一位程序员用户提交了另一个 tar 的补丁,但他也被告知维护者们正忙于其他事务,尚未对此补丁进行全面评估和整合。这些迹象表明,GNU tar 项目似乎也面临着与 xz 类似的维护难题。我分析是随着 Linux 使用人数的增长,对软件维护的需求增加,而小型基础软件的维护压力也随之增大,尤其是在缺少充足人力和长期专注维护的情况下。
回顾 OpenSSL 曾经爆发的“心脏出血”漏洞事件(参考链接3),我们可以看出开源社区在面对危机时展现出的自我修复能力和生命力。尽管 OpenSSL 曾面临严重的管理问题和资金短缺,但在事件曝光后不久,Linux 基金会迅速采取行动,通过成立核心基础设施联盟(CII)等方式筹集资金并加强关键开源项目的维护力度。这证明了即使在面临重大挫折时,开源模式依然能够凭借其透明性和广泛参与的优势找到解决问题的办法。
因此,我认为我们不应因这次 xz 供应链投毒事件而否定开源模式的价值。开源本质上倡导的“我为人人,人人为我”的理念有助于构建一个更加安全、公平和美好的信息社会,避免陷入互相伤害的恶性循环。同时,开源还能有效缩小数字鸿沟,削弱数字霸权的影响。
总结来说,尽管诸如 xz 和 GNU tar 这样的基础开源软件可能会遭遇维护困境,但只要我们坚定开源立场,积极寻求解决方案,一定能够改善它们的生存状态,确保开源世界健康有序的发展。让我们共同期待并努力营造一个更加繁荣、安全、公正的开源生态环境。再次感谢大家的关注,希望这些分享能引起更多人对开源项目可持续发展问题的重视。下次再见!
参考链接:
- 【转载】从 xz 后门事件看开源项目维护者和用户关系 https://bbs.deepin.org/post/270171
- Linux tar 保留文件特殊属性使用小结 https://www.learndiary.com/2024/03/gnu-tar/
- 开源软件和OpenSSL的真实故事到底是什么样的? https://www.geekpark.net/news/212283
相关文章:
开源项目生存现况:xz投毒事件引发的思考与GNU tar维护挑战
(首发地址:学习日记 https://www.learndiary.com/2024/04/xz-tar/) 嗨,大家好!我是来自淘宝网“学习日记小店”的 learndiary,专注于 Linux 服务领域。今天我要和大家谈谈近期备受瞩目的 XZ 供应链投毒事件…...
前端开发语言有哪些
随着互联网的迅猛发展,前端开发已经成为了一个炙手可热的职业。对于初学者来说,了解前端开发所使用的语言是非常重要的。那么,前端开发语言有哪些呢?本文将为您一一介绍。 一、HTML HTML(HyperText Markup Language&…...
速盾:cdn加速https额外收费吗?
CDN(内容分发网络)是一种通过在全球各地部署服务器来提供高速互联网内容传输的技术,它可以加速网站的访问速度,提高用户体验。而HTTPS(超文本传输安全协议)是一种通过加密技术保护网站数据传输安全的协议。…...
【蓝桥杯嵌入式】13届程序题刷题记录及反思
一、题目分析 考察内容: led按键(短按)PWM输出(PA1)串口接收lcd显示 根据PWM输出占空比调节,高频与低频切换 串口接收(指令解析)【中断接收】 2个显示界面 led灯闪烁定时器 二…...
C++类 单例模式
例子 请看如下的类和调用: 在您提供的代码片段中,CPathPlanMan 类使用了一个单例模式,这意味着这个类只需要一个实例,并且提供了全局访问点来获取这个实例。这通常用于控制对一个类实例的访问,尤其是在创建实例代价昂…...
prompt 工程案例
目录 prompt 工程是什么? 案例 vllm 推理加速框架 prompt 工程是什么? prompt:提示词,也就是我们使用网页版输入给大模型的内容就叫 prompt,那什么是 prompt 工程呢? 简单理解其实就是利用编写的 prom…...
燃气管网安全运行监测系统功能介绍
燃气管网,作为城市基础设施的重要组成部分,其安全运行直接关系到居民的生命财产安全和城市的稳定发展。然而,随着城市规模的不断扩大和燃气使用量的增加,燃气管网的安全运行面临着越来越大的挑战。为了应对这些挑战,燃…...
正则表达式(2)
文章目录 专栏导读1、贪婪与非贪婪2、转义匹配 专栏导读 ✍ 作者简介:i阿极,CSDN 数据分析领域优质创作者,专注于分享python数据分析领域知识。 ✍ 本文录入于《python网络爬虫实战教学》,本专栏针对大学生、初级数据分析工程师精…...
xv6源码分析 001
xv6源码分析 001 我们先看看xv6这个项目的基本结构(只看代码部分) 主要就是两个目录kernel 和 user。 user是一些用户程序,也就是我们平时在shell上面执行的命令,每执行一个命令就会创建一个新的用户进程来执行这个命令 在user目…...
JS代码小知识(个人向)
JS 对象转数组 let obj {0:"a",1:"b",length:2 //加上这个就能转了 }; console.log(Array.from(obj)); // ["a", "b"] 数组的拼接 let a ["a","b"] let b ["c","d"] let c [...a , …...
MC34119
这份文件是关于MC34119线性集成电路的产品规格说明书,由Unisonic Technologies Co., Ltd生产。MC34119是一款低功耗音频放大器IC,主要用于电话应用,如扬声器电话。以下是该文件的核心内容概要: 产品描述: MC34119是一款…...
RabbitMQ3.13.x之十_流过滤的内部结构设计与实现
RabbitMQ3.13.x之十_流过滤的内部结构设计与实现 文章目录 RabbitMQ3.13.x之十_流过滤的内部结构设计与实现1. 概念1. 消息发布2. 消息消费 2. 流的结构1. 在代理端进行过滤2. 客户端筛选3. JavaAPI示例4. 流过滤配置5. AMQP上的流过滤6. 总结 3. 相关链接 1. 概念 流过滤的思…...
Node爬虫:原理简介
在数字化时代,网络爬虫作为一种自动化收集和分析网络数据的技术,得到了广泛的应用。Node.js,以其异步I/O模型和事件驱动的特性,成为实现高效爬虫的理想选择。然而,爬虫在收集数据时,往往面临着诸如反爬虫机…...
Python如何解决“滑动拼图”验证码(8)
前言 本文是该专栏的第67篇,后面会持续分享python爬虫干货知识,记得关注。 做过爬虫项目的同学,或多或少都会接触到一些需要解决验证码才能正常获取数据的平台。 在本专栏之前的文章中,笔者有详细介绍通过python来解决多种“验证码”(点选验证,图文验证,滑块验证,滑块…...
MongoDB 启动异常
Failed to start up WiredTiger under any compatibility version. 解决方案: 删除WiredTiger.lock 和 mongod.lock两个文件,在重新启动。回重新生成新的文件。...
mysql 常见数据处理 dml
学习完,mysql正则表达式查询,把常见的数据处理,做一个汇总,便于查看。 数据操纵语言(Data Manipulation Language, DML)。 1,新增数据: 1,单个插入: insert…...
课时86:流程控制_函数基础_函数退出
2.1.2 函数退出 这一节,我们从 基础知识、简单实践、小结 三个方面来学习。 基础知识 简介 我们可以将函数代码块,看成shell脚本内部的小型脚本,所以说函数代码块也会有执行状态返回值。对于函数来说,它通常支持两种种状态返回…...
【Python】无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称解决方案
【Python】无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称解决方案 大家好 我是寸铁👊 总结了一篇【Python】无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称解决方案✨ 喜欢的小伙伴可以点点关注 💝 前言 今天寸铁…...
9(10)-1(2)-CSS 布局模型+CSS 浮动
个人主页:学习前端的小z 个人专栏:HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! 文章目录 一、CSS 布局模型1 流动模型(标准流) 二、CSS 浮动1 浮…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
