聚焦源代码安全,网罗国内外最新资讯!

专栏·供应链安全

数字化时代,软件无处不在。软件如同社会中的“虚拟人”,已经成为支撑社会正常运转的最基本元素之一,软件的安全性问题也正在成为当今社会的根本性、基础性问题。

随着软件产业的快速发展,软件供应链也越发复杂多元,复杂的软件供应链会引入一系列的安全问题,导致信息系统的整体安全防护难度越来越大。近年来,针对软件供应链的安全攻击事件一直呈快速增长态势,造成的危害也越来越严重。

为此,我们推出“供应链安全”栏目。本栏目汇聚供应链安全资讯,分析供应链安全风险,提供缓解建议,为供应链安全保驾护航。

注:以往发布的部分供应链安全相关内容,请见文末“推荐阅读”部分。

Node-ipc 简介

Node-ipc 是用于本地和远程间通信的 nodejs 模块,支持Linux、Mac 和 Windows 系统。它还支持底层unix和UDP的windows 套接字,并保护TLS 和TCP 套接字的安全。它是解决Node.js 中复杂多进程 Neutral Networking 的很好的解决方案。截止 9.2.2版本,该模块使用 peacenotwar 模块。该模块的周下载量超过109万次。

事件概述

但今天,多个国家的开发人员在使用时发现无法拉取 vue-cli 依赖node-ipc 的 peacenotwar 包。如果用户使用的是俄罗斯的IP地址,则所有文件会被爱心图标替换,然后未经用户同意,在桌面和OneDrive文件夹写入“WITH-LOVE-FROM-AMERICA.txt” 。peacenotware 模块的作者RIAEvangelist 被指投毒供应链。

恶意代码如下:

为此,Vue 项目维护人员@sodatea澄清指出:

(1)Vue CLI 依赖于 node-ipc v9.x版本。

(2)Node-ipc 9.2.2 增加了peacenotwar模块,该模块会在未经用户同意的情况下,将“WITH-LOVE-FROM-AMERICA.txt” 写入用户Desktop 和 OneDrive 文件夹。

(3)目前发布 4.5.16和5.0.3版本锁定该依赖版本。

(4)受影响用户是在2022-03-15T05:40:26.758Z至2022-03-15T13:17:57.076Z期间创建项目的用户,或者在这个时间段更新了项目依赖的用户。

(5)删除俄罗斯和白俄罗斯 IP 地址文件的恶意代码并不包含在增加了 peacenotwar 模块的 9.2.2版本中。

@sodatea 表示,解决该问题的最佳方法是npm注册表直接下架这些恶意代码,并表示npmmirror.com 已采取措施将有问题的版本重定向到最新的安全版本 cnpm/bug-versions#181。

Node-ipc 作者“社死”现场还原

用户@MidSpike 指出,深挖 node-ipc 仓库中最新commit,反混淆代码后发现,如果主机机器的ip地址是俄罗斯或白俄罗斯,则用户文件被覆写。

用户@GalvinGao评论称,随后该文件似乎被删除,且受影响的v10.1.3版本被删除或被下线,目前已经不存在于npm 上。他认为,这种行为非常可以。不管文件是有意还是无意引入,使用该包的安全问题已经存在。

有眼尖的用户发现上述用户的评论被 node-ipc 包作者@RIAEvangelist 删除。

@RIAEvangelist 回应称,“代码是不可能运行的,并不存在威胁,不过确实看起来比较恐怖。”

@MideSpike 回应这一说法称,“问题是你将代码推送到了仓库中,它不应该和 node-ipc 混合,这种行为应被视作恶意行为。”其他用户则质问其为何删除明显可表明所增加代码删除/覆写用户文件的帖子?

@RIAEvangelist 回应称,“我可以证实没有恶意代码。而且,我也不认为你理解你所指代的代码。这个代码不可能覆写用户文件。虽然看起来可能会覆写,但如果你看下它是如何运行的,就会发现不会发生你说预期的情况。”

当有人表示,“社区应该 fork node-ipc,因为它的所有人不再受信任。”

@RIAEvangelist 回应,“Forking 一直是个选择,版本锁定也如此。急着下结论称某个人不值得信任也很容易。代码审计、阅读许可证和文档可能会得出更好的评估。”

但随即有用户@hax证实称,“我测试了代码,可以确认,如果响应提示ip地址来自俄罗斯,则代码就会覆写文件(每次运行的可能性是1/4)。”

@RIAEvangelist则指出,“俄罗斯或白俄罗斯,而且前提是API是有效的,但实际并非如此。”

@hax 回应称,“是的,API秘钥现在无效了,但申请一个或重置非常容易。”这时,@MidSpike 指出,“在我测试期间,这个API 秘钥是有效的。不要对我们说谎。”

@MidSpike 指出node-ipc 作者的行为非常危险,这种行为不止是开玩笑行为,而且可实际损害俄罗斯开发人员的计算机或服务器。

而@RIAEvangelist则仍然嘴硬称,“我想没有人在撒谎。”

随后用户@liudonghua123 亮出代码,“代码不会说谎。如果你想要做点事情,不要背后搞鬼。”

随后@RIAEvangelist 哑口无言,没有进一步回应。

投毒供应链引发众怒

针对此事,由用户表示,“有人用行动表明开源是有国界的。供应链污染并非良策。”

GitHub用户@jukrb0x情绪激动,对该事件发表了四点看法:

(1)将不不相关代码和恶意代码写入开源用户来传播自己的个人情绪的行为,从来都不是抗议和提倡反战的正确方法。

(2)你让node社区为此蒙羞。有人star或fork你的项目,就是等于你在投毒无辜的开发人员和网络,你的个人道德永远不应该成为供应链中的主角。你为自己所开源的代码负责,即使没有相关底线,但我认为像你一样的人没有作为真正抗议人员或战斗人员的道德底线,你是一个笑话,就像幼儿园孩子一样幼稚。

(3)我只想问你,俄乌战争是当前发生的唯一战事吗?你到底是一个真正的反战人士,还是只是宣扬自己的个人政治信仰?你这么做太幼稚了。

(4) 这个案例表明,nodejs 包系统中存在漏洞,你的所做作为已经导致信任链破产。你只是***,开源社区以你为耻。

用户@hax 指出,“提交恶意代码、删除披露这一行为的注释、撤销已被暴露的API四月并狡辩称因为API秘钥无效所以代码不工作的行为,让我认为这个人不再值得信任。我强烈建议npmmirror 不仅把Node-ipc 列入黑名单,而且还要把他所提交的所有数据包全部列入黑名单。”

如何保护开源软件供应链安全

实际上针对供应链投毒的事件层出不穷。比如曾在2018年发生的event-stream 投毒事件。项目作者由于时间和精力有限,将其维护工作交给了另一位开发者 Right9ctrl,该开发者获得了 event-stream 的控制权,将恶意代码注入。据报道,该恶意程序在默认情况下处于休眠状态,当 BitPay 的 Copay 钱包启动后,就会自动激活,它将会窃取用户钱包内的私钥并发送至 copayapi.host:8080。event-stream包是一个Node.js 流数据的 JavaScript 软件包,每周下载量在200万次以上,截止到目前为止已经有大约800万次的下载量,持续时间为2.5个月。

使用越来越广泛的开源项目已成为软件基础设施的核心组成部分,开源项目自身的开发安全也愈发重要。代码托管服务器、Git账户、社区账户、制成品仓库等各个开发环节都有可能成为不法黑客的攻击目标。这次node-ipc 库中被植入恶意代码就是一个典型的案例。

除event-stream 事件外,近期还发生多起开源软件供应链安全事件,比如Log4Shell 事件、Linux “脏管道”事件、周下载量超过700万次的 JavaScript 流行库 ua-parser 账户遭接管事件、影响多家大厂的依赖混淆事件、SolarWinds事件、PHP源代码事件等等。

供应链安全风险是各个层面、各个环节、各个维度的。其最大的挑战就在于供应链的复杂性。首先,针对供应链各环节,需要有检测安全风险的能力;第二,供应链安全是动态的,需要持续监测,并配有安全运营机制。

当前,从软件供应链安全的角度来看,国内监管机构已陆续推出相关标准及政策,但针对关键基础设施和重要信息系统相关的企业和单位,并没有制定具体的举措和细则要求。

打好软件供应链安全治理“团体赛”,需要整个开源生态在供应链的各个环节建立一系列的安全准则和最佳实践,切实保障整个网络空间的安全。例如,在代码最终交付之前,采用应用安全的静态、动态分析方案,尽可能避免造成后门或漏洞;在供应链的各个环节中,引入完整性校验技术及流程,避免遭意外或恶意篡改。


代码卫士试用地址:https://codesafe.qianxin.com/

开源卫士试用地址:https://oss.qianxin.com


推荐阅读

在线阅读版:《2021中国软件供应链安全分析报告》全文

Linux Netfilter 防火墙模块爆新漏洞,攻击者可获取root权限

丰田汽车顶级供应商 Denso 疑遭勒索攻击,被威胁泄露商业机密

漏洞Dirty COW:影响Linux系统以及安卓设备

第三方支付处理厂商软件有漏洞,日本美容零售商Acro 10万支付卡信息遭攻击

Linux 内核 cgroups 新漏洞可导致攻击者逃逸容器

谷歌宣布 Linux Kernel、Kubernetes 0day 漏洞奖励加倍

Apache Cassandra 开源数据库软件修复高危RCE漏洞

2021年软件供应链攻击数量激增300%+

热门开源CMS平台 Umbraco 中存在多个安全漏洞,可使账户遭接管

详细分析开源软件项目 Ajax.NET Professional 中的RCE 漏洞(CVE-2021-23758)

SAP 严重漏洞可导致供应链攻击

Apache PLC4X开发者向企业下最后通牒:如不提供资助将停止支持

Apache 软件基金会:顶级项目仍使用老旧软件,补丁作用被削弱

美国商务部发布软件物料清单 (SBOM) 的最小元素(上)

美国商务部发布软件物料清单 (SBOM) 的最小元素(中)

美国商务部发布软件物料清单 (SBOM) 的最小元素(下)

NIST 发布关于使用“行政令-关键软件”的安全措施指南

NIST 按行政令关于加强软件供应链安全的要求,给出“关键软件”的定义及所含11类软件

SolarWinds 攻击者再次发动供应链攻击

美国“加强软件供应链安全实践的指南” (SSDF V1.1草案) 解读来了

软件供应链安全现状分析与对策建议

“木马源”攻击影响多数编程语言的编译器,将在软件供应链攻击中发挥巨大作用

GitHub 在 “tar” 和 npm CLI 中发现7个高危的代码执行漏洞

流行的 NPM 包依赖关系中存在远程代码执行缺陷

速修复!热门npm 库 netmask 被曝严重的软件供应链漏洞,已存在9年

Npm 恶意包试图窃取 Discord 敏感信息和浏览器文件

微软“照片”应用Raw 格式图像编码器漏洞 (CVE-2021-24091)的技术分析

SolarWinds 供应链事件后,美国考虑实施软件安全评级和标准机制

找到软件供应链的薄弱链条

GitHub谈软件供应链安全及其重要性

揭秘新的供应链攻击:一研究员靠它成功入侵微软、苹果等 35 家科技公司

开源软件漏洞安全风险分析

开源OS FreeBSD 中 ftpd chroot 本地提权漏洞 (CVE-2020-7468) 的技术分析

集结30+漏洞 exploit,Gitpaste-12 蠕虫影响 Linux 和开源组件等

限时赠书|《软件供应链安全—源代码缺陷实例剖析》新书上市

热门开源CI/CD解决方案 GoCD 中曝极严重漏洞,可被用于接管服务器并执行任意代码

GitKraken漏洞可用于盗取源代码,四大代码托管平台撤销SSH密钥

因服务器配置不当,热门直播平台 Twitch 的125GB 数据和源代码被泄露

彪马PUMA源代码被盗,称客户数据不受影响

参考资料:

https://www.npmjs.com/package/node-ipc

https://github.com/vuejs/vue-cli/issues/7054

题图:Pixabay License

本文由奇安信编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。

奇安信代码卫士 (codesafe)

国内首个专注于软件开发安全的产品线。

 觉得不错,就点个 “在看” 或 "赞” 吧~

Node-ipc 热门包作者投毒“社死‘’,谁来保护开源软件供应链安全?相关推荐

  1. 投毒者对 PyPi 上的开源包开发者下手了

    简述 OSCS 近期监测到 PyPi 官方发布公告称有攻击者针对 PyPi 上的开源组件开发者进行钓鱼,试图窃取 PyPi 贡献者的凭据.本次攻击是通过贼喊捉贼的假装PyPi官方给恶意包发邮箱进行钓鱼 ...

  2. 专业分析远离社死!如何看待QQ出现大面积盗号?

    引言 昨晚,qq群内出现了大量的广告信息,不少人员当场社死.针对此次事件,腾讯官方也给了相应的回复,今天我们想和大家聊聊我们的qq是如何"被盗"的. 注:以下内容仅为个人经验分析, ...

  3. 当众社死,涨粉百万,社交牛逼症成新晋流量密码

    只要我不尴尬,尴尬的就是别人 最近一个多月,"社交牛逼症"火了.前有"明星双喜哥"在地铁上自称"马牛逼",后有"宇宙最强心理素质安 ...

  4. “社死”生日现场服务,能让“熊猫不走”走到上市吗?

    继海底捞之后,大型社死生日现场又多了一个硬核创造者--熊猫不走. 这家成立于2017年的年轻烘焙品牌以"热情的服务"."3小时送达"的标准迅速火爆出圈,成为生日 ...

  5. 神网站PaperWithoutCode:举报无法复现的论文,让一作社死??

    文 | 小戏 几乎是可以肉眼可见的看到机器学习领域的论文几何级的增长,在铺天盖地的论文雪花纸片般涌来时,灌水.可复现性.工作真实的意义这些概念也伴随着 Paper 的洪水进入了人们的视野.谈及科研,我 ...

  6. Windows 令人“社死”的新功能,你都知道吗?

    相信每个人电脑上都或多或少都保存着一些秘密,或许是某个人的照片,或许是一段往事,也有可能是一些不可描述的学习资料. 而这些东西,想必都是不能被除了自己以外的人看到的. 此前,Windows 的搜索框功 ...

  7. (18) Node.js npm包管理工具

    一.npm概述 npm (Node Package Manager)是 Node.js 的包管理工具. 什么是包?包就是一坨代码,就是 Node.js 的第三方模块. 例如:JQuery模块,Boot ...

  8. 微信又双叒更新了!这次的隐藏功能,又一大型集体游街示众的 “社死“ 现场......!

    嗨,大家好呀,这里是小栈科技吧!张小龙抱怨过每天有很多的人在教他做产品--对于一个十几亿用户的国民级宝藏APP应用来说,确实任何细小的变化都容易牵一发而动全身.但不得不说,真的,微信经常有一些莫名其妙 ...

  9. 这个周末,炸锅了!QQ疑似出现大面积盗号!各种不雅照乱发!网友:被社死!...

    点击上方"码农突围",马上关注 这里是码农充电第一站,回复"666",获取一份专属大礼包 真爱,请设置"星标"或点个"在看&quo ...

最新文章

  1. Java设计模式(建造者模式-适配器模式-桥接模式)
  2. vi 从第几行到第几行 替换_第三十三章:查找新函数:XLOOKUP,再也不用趴着电脑屏幕数第几列、第几行(二)...
  3. TenSorFlow随笔-除法
  4. c语言 数组扩容,数组的扩容
  5. java解析vue对象数组,Java数组
  6. 《ArcGIS Runtime SDK for .NET开发笔记》--在线编辑
  7. 【文献阅读】Self-Normalizing Neural Networks
  8. 微信小程序设置用户收货地址
  9. Linux 的shell脚本的分享,运用了多个不同的方法,实现使用脚本批量巡检服务器,非常有借鉴作用...
  10. pip或者python安装jpype总是报错----Boilerpipe使用
  11. 学习开源硬件:开源IP,开源RISC-V与开源SoC等
  12. 各种统计检验及r语言实现
  13. 通过app打包修改app名称
  14. 上美股份在港交所开启招股:业绩将继续下滑,吕义雄提前大额套现
  15. lua -- class
  16. python写金字塔(数字金字塔)
  17. 一文读懂手机直播和摄像机直播的区别
  18. zookeeper集群安装和配置解读 - 雨中散步撒哈拉
  19. SQL Server中已满事务日志原因的检测
  20. SpringBoot部署应用到本地k8s

热门文章

  1. Exchange2010 owa 访问 http 500 内部服务器错误
  2. Remoting压缩信道的编程配置方式
  3. Barefoot和Stordis在欧洲领导开源网络
  4. Office 365 On MacOS 系列——配置浏览器账号同时管理多个订阅
  5. spring securiy使用总结
  6. sysvol共享没有出现的处理办法!
  7. 在英特尔® 凌动™ 处理器上将 OpenGL* 游戏移植到 Android* (第二部分)
  8. Android中关于Volley的使用(一)加载图片
  9. attempt to write a readonly database 错误
  10. Android中ICS4.0Launcher中Fold的功能详解【androidICS4.0--Launcher系列三】