企业安全建设中的第三方组件问题

简述:

我们知道常见第三方组件分为开源组件和闭源组件。开源组件Open-Source Software实际上就是各个公司、软件开发者基于各种协议公布的源代码开源让所有人使用的软件依赖,只要遵守对应的协议就可以使用。闭源组件一般都是三方的商业公司开发提供,方便研发人员实现业务功能而进行统一定制化的,包括依赖库、SDK等等,大多数是需要付费购买并且没有源代码。

三方组件在项目开发中扮演着很重要的角色,也是软件供应链的重要组成部分,研发在项目开发过程中引入使用三方组件,可以提高研发效率、缩短项目上线的时间并且有效的降低了开发的成本。如果使用的三方组件依赖库、SDK本身存在安全风险漏洞,就会严重威胁到业务安全。也是OWASP TOP 10列表中反复强调的“使用含有已知漏洞的组件”逐步成为供应链安全的显著问题。想一想养活了安全人员的Apache Struts、Fastjson和Weblogic。

所以为全面把控第三方组件依赖库安全威胁情况,降低外部依赖库带来的安全风险,提高业务系统整体安全防护能力,在企业安全建设中应建立相应的第三方组件全生命周期管理体系,对第三方组件进行漏洞检测、修复、报告、跟踪,及时根据官方漏洞修复方案进行漏洞修复。

由各个业务组和安全运营人员对漏洞检测结果、修复方案、修复结果、未修复原因等信息进行汇总整理,方便后续对第三方组件进行全生命周期管理。对第三方组件在引入前、上线前进行安全评估,在系统发版后对第三方组件进行追踪,定期进行安全评估工作。这是一个持续迭代并且优化的过程。

供应链.png

准备:

1、安全团队要有项目中引用的三方组件清单列表,记录哪些项目使用了哪些开源组件。一旦某个开源组件出现漏洞,可以通过清单列表迅速排查。该清单列表也正是Gartner提到的材料清单,将在开源组件管控过程中发挥重要的作用。

2、安全团队要有维护一个清单列表记录禁用的开源组件,即,开源组件黑名单。对于那些安全问题比较多、风险较大的第三软件,应加入到这个禁用清单列表中禁止使用。

3、安全团队对于使用较多的开源组件,建议执行静态代码扫描或其他必要的安全测试,提早识别安全漏洞。对于发现的漏洞,提交开源社区,并促使开源社区修复。

4、对于开源组件的使用要有安全性指导(主要是规避一些因配置不当引入的安全问题)。

5、慎用对安全问题处理态度消极的厂商所开发的开源组件。

要点:

组件的安全风险

近年来,针对软件供应链的安全攻击事件一直呈快速增长态势,造成的危害越来越严重,防范软件供应链安全风险,已经迫在眉睫;
开源软件漏洞频现:截至2020年底,CVE/NVD、CNNVD、CNVD等公开漏洞库中共收录开源软件相关漏洞41342个,其中高达13%(5366个)为2020年度新增漏洞;
研究发现:近9成软件项目存在已知开源软件漏洞;平均每个软件项目存在66个已知开源软件漏洞;影响最广的开源软件漏洞存在于44.3%的软件项目中;15年前开源软件漏洞仍存在于多个软件项目中。
2020年 “奇安信开源项目检测计划”对1364个开源软件项目的源代码安全检测显示:开源软件项目整体缺陷密度为14.96个/千行,高危缺陷密度为0.95个/千行;

组件的合规风险

合规风险主要来源于两方面,一方面是开源协议滥用导致的安全风险,另一方面是来至监管合规的风险。

  • 《中华人民共和国网络安全法》第三十三条规定,建设关键信息基础设施应当确保其具有支持业务稳定、持续运行的性能,并保证安全技术措施同步规划、同步建设、同步使用。该条规定,明确了关键信息基础设施的安全工作应该前移,在信息系统的规划阶段就应该保证安全技术措施的介入。

  • 信息安全技术网络安全等级保护基本要求【GBT22239-2019】中要求企业自行软件开发应制定代码编写安全规范,要求开发人员参照规范编写代码,在软件开发过程中对安全性进行测试,在软件安装前对可能存在的恶意代码进行检测;对外包软件开发应在软件交付前检测其中可能存在的恶意代码。

  • 2019年,中国银保监会办公厅文件【银保监办发(2019)129号】文《中国银保监会办公厅关于开展银行业和保险业网络安全专项治理工作的通知》中提出建立新技术引入、开源技术应用安全评估与准入机制,加强科技创新、新技术应用的风险监测与处置。

  • 2020年,中国人民银行办公厅文件【银办发(2020)45号】文《中国人民银行办公厅关于开展金融科技应用风险专项摸排工作的通知》中提出应不定期组织针对开源系统或组件的安全测评,及时进行漏洞修复和加固处理。

组件的稳定性

开源社区维护者和贡献者为我们所有人构建工具,为我们日常的开发提供了很大的帮助,但开源社区的贡献者自身却面临诸多问题,这些问题一定程度上影响了开源软件的可持续发展,开源项目的可持续性也一直存在矛盾。这一矛盾导致很多开源软件在最初更新迭代比较快速,文档书写也比较及时,后面却可能出现一些人员离职等问题,导致该开源产品后续的更新不及时,甚至直接中断,这时使用该开源产品的的同学在反馈问题时往往需要很长时间才会得到答复,甚至得不到答复。

  • 除非是非常成熟的开源项目,否则其稳定性是未经考验的,这也是使用开源项目在真正进入持续商业化时所遇到的最大挑战!关于一个项目是否“成熟”,这是个非常主观的问题,如果用Github的star数量来衡量,要充分考虑中国式开源通过运营人头来点赞的模式,即便有1-2万颗星,也并不意味着项目已经成熟了。另外,要看Top-100的贡献者,很多所谓的开源项目几乎所有的贡献者都是项目所在公司的内部员工,这种开源项目的成熟度能有多少呢?

  • 像MySQL,Redis之类这么稳定的项目并不常见,即便是像MongoDB这么宏大的开源项目,一旦进入大规模部署后对于任何中小公司而言都是巨大的挑战,一旦无法克服,会深陷泥潭难以自拔。

  • 国内市场上一度火爆的TFS(Taobao File System=淘宝文件系统),曾经受到很多程序员的追捧,但是很少有人仔细的分析过淘宝的应用场景和对该项目的支持力度,现在该项目已经寿终正寝(淘宝团队不再维护该项目),而且淘宝当时设计的目的是支持海量小文件,而有多少创业项目是一样的业务需求呢?很多人盲目的上马了TFS,到头来发现系统稳定性很差而且有无数的问题,这些是小团队、二次开发能力并不强悍的团队可以承受得了的吗?
    https://zhuanlan.zhihu.com/p/361101335

解决:

接入

梳理目前业务中开发的项目,项目里面使用了哪些组件,要对目前使用的三方组件有一个全面、准确和可实现自动更新维护的资产清单列表。关注引入情况和组件的版本及安全漏洞

发现

漏洞

开源组件的漏洞和风险主要是通过邮件列表,github issues,nvd漏洞库进行的标注,我们可以根据组件资产清单,发现项目中的依赖->找到对应的cve漏洞,将漏洞信息填充到我们组件依赖检测的平台。

软件许可协议

除了安全问题外,license问题也需要关注。未按照开源许可证约定使用开源组件会引发潜在的法律纠纷,其中最常见的是 GPL(GNU 通用公共许可证)许可证违规。懵懵懂懂的用户使用了不合规的license,会导致产品下降或被传染被迫开放自有商业产品的源代码。

防护

商业工具:

jfrog的产品是xray,snyk势头不错,和github集成推广力度大

开源工具:

dependency check && dependency track。

自主研发 :

自己动手,丰衣足食。更贴合实际业务。

管理

  1. 自上而下,与管理层沟通达成一致。建立更好的安全流程,给出专业的修复建议。
  2. 成立开源治理团队,包括管理者、法务、安全专家、研发负责人,梳理重点组件,推动大面积的升级版本
  3. 建立第三方软件引入制度,审核组件的历史漏洞、预估业务解耦风险,选型备用组件
  4. 面向研发工程师进行政策、法规、案例的培训宣传。
  5. 聘请知识产权律师处理软件法律冲突,审核并购公司的合规性。

参考:

企业安全建设 - 软件供应链 | 岚光

第三方组件安全评估指南_黑客技术

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一个集成目前Android主流优秀第三方组件、优秀好用的自定义控件、实用工具类封装、以及一些APP共通模块(比如:版本更新、意见反馈、引导界面等等)的开发包,帮助程序员快速开发自己的APP 已集成第三方开源组件: 网络请求库android-async-http 图片异步加载库universal-image-loader Sqlite数据库操作ormlite-android 社会化分享ShareSDK+短信验证码 Zxing二维码库 百度地图定位SDK 谷歌依赖注入库RoboGuice WebService调用库ksoap2 XML解析XStream 动画开源库nineoldandroids 表单验证库android-validation-komensky 更多优秀开源库等待集成... 已封装工具类: HTTP网络通信工具类(ToolHTTP.java),get/post请求,支持多种接口回调 SOAP协议通信工具类(ToolSOAP.java),基于异步回调请求WebService接口 Sqlite数据库操作工具类(ToolDatabase.java),获取DAO、创建表、删除表等API 提示信息对话框工具类(ToolAlert.java),已集成泡泡、土司、对话框三种提示 文件操作工具类(ToolFile.java),assets/raw/xml/shrePerface/等文件读写API 地图定位工具类(ToolLocation.java),读取GPS状态、请求定位、获取经纬度等方法 社会化分享工具类(ToolShareSDK.java),各大开发平台分享API操作 短信验证码工具类(ToolMSM.java),移动/联通/电信三网发送手机短信验证码、异步回调验证结果 字符串操作工具类(ToolString.java),生成UUID、非空非NULL逻辑判断、生成MD5等常用共通方法 数据操作工具类(ToolData.java),自动递归获取表单数据封装成Map、本地数据分页共通方法等 图片操作工具类(ToolPicture.java),生成二维码、验证码、灰度、合成、圆角、水印等操作 读取本地资源工具类(ToolResource.java),反射本地资源文件API,避免依赖R文件,方便jar形式发布 Android单位转换工具类(ToolUnit.java),sp/dp/px互转 自定义Toast工具类(ToolToast.java),自定义背景色、字体颜色、大小、边框等 Properties操作工具类(ToolProperties.java),读写Properties文件操作 网络操作工具类(ToolNetwork.java),获取网络信息、更改切换网络等相关操作 日期操作工具类(ToolDateTime.java),获取日期、日期加减、格式化日期、日期转换等操作 XML操作工具类(ToolXml.java),基于DOM/XMLPullPaser模式解析、生成XML操作 XMPP操作工具类(ToolXMPP.java),基于XMPP协议的相关API操作 适配字体工具类(ToolAutoFit.java),代码根据设备密度自动缩放View的字体大小 LOG相关工具类(ToolLog.java) 功能待续-->切入记录异常日志,并存储文件或上传至服务器 已封装/收集自定义控件: 兼容低版本的SwitchButton 追加自定义属性Value的CheckBox/RadioButton/RadioGroup/SingleSpinner 圆角提示信息TipsView 圆角图片RoundImageView 自定义样式风格ProgressDialog 自定义样式WebView 圆形进度条(RoundProgressBar)、垂直进度条(VerticalProgressBar) 开源优秀自定义控件:imageindicator(图片轮播/引导界面)、pulltorefresh、XListView、TableFixHeaders(水平+垂直滚动+首行+首列冻结表格)、ViewPager
以下是一个Oa软件选型需求的调查问卷,供您参考: 1. 您所在的行业是什么? A. 制造业 B. 金融业 C. 零售业 D. 其他(请注明) 2. 您目前使用的OA软件有哪些问题? A. 功能不够完善 B. 操作复杂,使用不便 C. 安全问题 D. 缺乏定制化功能 E. 其他(请注明) 3. 您对OA软件的需求有哪些? A. 协同办公 B. 审批流程管理 C. 项目管理 D. 知识管理E. 其他(请注明) 4. 您更看重OA软件哪些方面? A. 功能是否符合业务需求 B. 操作简便性 C. 系统安全性D. 可定制化程度E. 其他(请注明) 5. 您预算大约在什么范围? A. 1万元以下 B. 1-5万元 C. 5-10万元 D. 10万元以上 E. 不确定,根据需求和预算综合考虑 6. 您是否需要OA软件支持移动办公? A. 需要 B. 不需要,但希望支持移动设备访问 C. 不确定,视需求而定 7. 您是否需要OA软件提供第三方应用接口或SDK? A. 需要,以便与第三方系统集成 B. 不需要,目前无需接入第三方系统 C. 不确定,需要了解更多信息 8. 您期望OA软件的响应时间是多少? A. 毫秒级响应时间(即时响应) B. 秒级响应时间(无延迟响应)C. 不限时限速响应时间D. 其他(请注明) 9. 您对OA软件厂商的服务能力有何要求? A. 技术支持团队的专业程度B. 实施周期和效率C. 售后服务质量D. 其他(请注明) 10. 您是否了解过哪些OA软件品牌?请列举至少三个品牌。 (此问题用于了解候选品牌,但不作为决定因素) 以上问卷涵盖了OA软件的基本需求和关键因素,希望能帮助您进行软件选型。同时,建议您在实际选型过程结合其他渠道的信息,如厂商介绍、用户评价、行业经验等,以做出更全面、准确的决策。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值