先抛出两个问题
- 你们公司从超市买一桶水回去,喝之前会做检测吗?会放心水被人下毒吗?
- 你们公司的程序员从 GitHub 上 clone 一个开源我的项目或者组件,引入到线上我的项目代码中运行,你会放心有安全漏洞吗?会放心软件投毒吗?
开源技术的利用成为驱动新一轮产业数字化降级的外围能源
“迎接数字时代,激活数据因素潜能,推动网络强国建设,放慢建设数字经济、数字社会、数字政府,以数字化转型整体驱动生产方式、生存形式和治理形式改革。”
这是国家“十四五”布局中第五篇对于放慢数字化倒退,建设数字中国中明确提出的布局要求。软件应用作为构建数字化的必要根底元素,随着数字化改革的过程一直推动和深入,企业及社会组织对于供应链软件的需要日益晋升,其中不论是开源软件还是闭源的商业软件开始被大量引入,而这些供应链软件引入的同时无疑给企业带来了越来越多的潜在平安威逼。
开源软件被企业大量引入
据统计,2020 年较 2015 年开源项目数增长了近 3 倍,中国有超 88% 的企业在应用开源技术,开源代码占软件代码的比例曾经从 2015 年的不到 40% 回升到 19 年的超过 70%,大大晋升了开发效率,放慢了翻新步调。
软件供应链攻打成为国家、企业面临的次要威逼
开源技术利用、国际形势简单、软件供应链的多样化,供应链各个环节的攻打急剧回升,软件供应链平安危险未然成为企业及组织的次要平安威逼。以后开源软件生产、散发、应用全过程不足无效的风险管理及生态治理能力,导致近几年寰球范畴内重大软件供应链安全事件频发,这无疑给企业稳固倒退带来十分大的不确定性。
- 2020 年 12 月,SolarWinds 公司软件更新包中存在后门导致客户被入侵,该事件影响了数千家机构,包含美国国家安全局和美国能源部。
- 2021 年 3 月,一名研究员应用“供应链“破绽(抢注外部组件名称的形式)胜利入侵了 35 家重要公司的外部零碎:包含 Microsoft、Apple、PayPal、Shopify、Netflix、Yelp、Tesla 和 Uber。
- 2021 年 12 月,log4j2 破绽暴发,墨菲平安实验室对 log4j2 的 1~4 层依赖关系进行了统计分析,能够发现总共有超过 173104 个组件受该破绽影响。
- 2022 年 3 月,墨菲平安实验室间断 2 天寰球首发预警了 Spark&Hadoop RCE 破绽及 Spring Cloud 的表达式注入破绽;紧接着之后蚂蚁平安研究员又发现 Spring 框架近程命令执行破绽。
这些还只是影响十分大的事件和破绽,除此之外每天新增曝出的通用组件破绽都在数十起至数百起之间,这些都是企业所依赖的供应链软件所存在的潜在威逼。这背地咱们看到的是和新冠病毒一样具备高传染性、致命性和变异能力的平安威逼,只不过的区别是新冠病毒影响的是人类的身材,而这些破绽缺点影响的是寰球任何接入数字化的企业。
对于咱们和墨菲平安
墨菲平安的开创团队成员都是来自百度、华为、贝壳的企业平安建设团队,过来十年大家始终在从事企业平安建设的工作,不论是在哪一家公司,咱们每一个人都经验过太屡次深夜的“安全事件应急响应”,“破绽剖析”。当然咱们也时常和研发同学因为修一个破绽而撕 X,过来十年,三千多个日夜,每天简直都在和代码和破绽打交道。咱们也很渴望每一个工程师生产的软件就像咱们明天喝的矿泉水一样,平安而衰弱。咱们不必战战兢兢的去为咱们买的每一瓶水做“平安评估”。
软件供应链能不能像传统生产矿泉水的供应链一样平安有保障
让每一个开发都可能更平安的应用开源代码,让每一家企业都可能平安的管理软件供应链。是咱们最后去做这件事件的想法,墨菲平安晚期(大略 2020 年 5 月,启动这个开源我的项目的时候)其实有另外一个名字,叫 gokusec,起初咱们发现这个名字如同被其余公司用了,所以改名墨菲平安。这个过程咱们始终在思考的一个问题是:如何可能为软件供应链的生态建设一个无效治理的平安能力,咱们能做点什么?
不晓得大家有没有想过,如果新冠疫情暴发的时候,没有核酸检测这样的工具,结果会是怎么样?大略是咱们无奈及时发现谁得了新冠,身边的人也没方法及时无效的防控,患病者也无奈失去及时无效的医治,明天所建设的所有防控机制其实都是空谈。开源组件的利用十分宽泛且具备非常复杂的依赖关系,这使得开源软件的破绽其实就像新冠病毒一样,具备弱小的传染性、致命性、变异能力,而明天如果咱们要对这些软件供应链里的新冠进行无效的管制,仿佛咱们首先最缺的是一款针对开源软件破绽缺点检测的核酸工具?它应该具备很好的准确性、易用性和低成本,而这就是墨菲平安推出的开源我的项目 murphysec 的核心理念,为每一个软件开发者提供一款易用、业余且高效的代码平安检测工具,当然如果他还有特效药的作用,那就更棒了。
对于 muphysec
muphysec 是墨菲平安开发的一款开源软件平安检测工具,致力于让每一个开发者更平安的应用开源代码。
产品特点:易用、业余、翻新
话都说到这了,那么,先上链接(欢送提 issues、PR、star):
- 开源地址:https://github.com/murphysecurity/murphysec
- 产品官网:https://www.murphysec.com/
外围性能
1. 化验:精确辨认软件中间接依赖和间接依赖的开源组件
2. 看病:精确辨认这些开源组件存在的安全漏洞及许可证合规危险
3. 医治:为开发者提供简略高效的一键缺点修复能力
反对语言:
目前反对 Java、JavaScript、Golang、Python 语言我的项目的检测,后续会逐步反对其余的开发语言。
检测原理
- 对于应用不同语言 / 包管理工具的我的项目,工具次要采纳我的项目构建或间接对包管理文件进行解析的形式,来精确获取到我的项目的依赖信息
-
我的项目的依赖信息会上传到服务端,并基于墨菲平安继续保护的破绽知识库来辨认我的项目中存在平安缺点的依赖
阐明:工具只会将检测我的项目的依赖和根本信息发送到墨菲平安服务端,用于辨认存在平安缺点的依赖,不会上传任何本地代码。
装置
拜访 GitHub Releases 页面下载最新版本的墨菲平安 CLI,或执行以下相干命令:
在 Linux 上装置
wget -q https://s.murphysec.com/install.sh -O - | /bin/bash
在 OSX 上装置
curl -fsSL https://s.murphysec.com/install.sh | /bin/bash
在 WINDOWS 上装置
powershell -Command "iwr -useb https://s.murphysec.com/install.ps1 | iex"
应用
- 执行 murphysec scan [your-project-path]实现开始检测
查看后果
- 执行命令减少 –json 参数,能够将检测后果输入为 Json 格局进行查看
-
也能够间接在墨菲平安平台上查看具体的检测后果
- 查看依赖信息
- 查看检测后果(提供处理倡议、缺点组件的最小修复版本以及丰盛的破绽信息)
- 查看依赖信息
IDE 检测插件
一款基于墨菲平安开源检测工具而开发的 IDE 插件,帮忙开发者在 IDE 中即可检测代码依赖的平安问题,轻松辨认代码中应用了哪些存在平安缺点的开源组件,通过精确的修复计划和一键修复性能,疾速解决平安问题。
插件官网地址:https://plugins.jetbrains.com/plugin/18274-murphysec-code-scan
反对性能
- 破绽检测:检测 Java(Maven)、JavaScript(npm)、Go 代码中引入的缺点组件
- 一键修复:不仅有清晰的修复计划,还能够通过此性能疾速修复
- 实时检测:代码的依赖发生变化导致了平安问题,不必放心,插件会及时给您揭示进行解决
装置
- 在 IDE 插件市场中搜寻“murphysec”,查看详情并装置
应用
- 抉择“点击开始扫描”,即可检测出代码中存在哪些平安缺点组件
- 点击检测后果中的组件,即可查看该缺点组件的根本信息
-
点击右侧“一键修复”,即可间接将该组件降级至“最小修复版本
具体应用阐明能够查看文档
更多的应用场景
一、GitLab 代码库检测工具
基于墨菲平安开源检测工具开发,能够帮忙您疾速对企业 GitLab 上所有我的项目进行检测
工具地址:https://github.com/murphysecurity/murphysec-gitlab-scanner
性能
- 自动化拉取 GitLab 上代码进行检测
-
反对增量代码检测(基于 GitLab Webhook 性能)
应用
- 拉取工具最新代码
-
执行命令
python3 scan_all.py -A [your gitlab address] -T [your gitlab token] -t [your murphysec token]
参数阐明
- -A:指定您的 GitLab 服务地址
- -T:指定您的 GitLab 集体拜访令牌
- -t:指定您的墨菲平安账户拜访令牌
二、Jenkins 集成平安检测能力
能够将墨菲平安开源检测工具集成到 Jenkins 中,进步线上代码平安品质
集成形式
1. 装置墨菲平安开源检测工具
在 Jenkins 机器上装置墨菲平安开源检测工具最新版本,拜访 GitHub Releases 页面下载,或执行以下命令:
wget -q https://s.murphysec.com/install.sh -O - | /bin/bash
2. 设置 Jenkins 全局凭据
在 Jenkins 全局凭据中增加墨菲平安拜访令牌
3. 批改 Jenkinsfile
为了将墨菲平安开源检测工具增加到 pipeline,须要在 Jenkinsfile 中增加一个 stage,示例如下:
pipeline {
agent none
stages {stage('MurphySec Scan') {
environment {API_TOKEN = credentials('murphysec-token-key')
}
steps {sh 'murphysec scan . --log-level debug'}
}
}
}