查看原文
其他

诸子笔会2023 | 杨文斌:数字化转型建设的开源安全治理实践

杨文斌 安在 2023-07-06




自2023年4月起,“诸子笔会2023第一季”正式拉开帷幕。10位专家作者组成新一届“笔友”,自拟每月主题,在诸子云知识星球做主题相关每日打卡,完成每月一篇原创。除了共同赢取万元高额奖金以为,我们更要聚焦甲方关注,发掘最佳实践,弘扬分享精神,实现名利双收。本期发文,即诸子笔会月度主题来稿之一。



数字化转型建设的开源安全治理实践


     文 | 杨文斌




杨文斌


某电商公司安全管理



12年网络安全从业经验,熟悉网络安全、数据安全及安全运营等领域,擅长企业网络架构和安全架构设计。近期一直在深耕开源安全相关工作,并持续开展SRC平台运营推广。



国家高度重视开源产业良性发展,在《“十四五”国家信息化规划》中首次提到开源社区生态建设取得重要进展,紧接着多份国家战略规划均密集提到建设开源生态。金融、教育、医疗等传统行业已开展开源发展和安全治理工作。开源安全治理已经上升到国家安全的高度,并得到主流认可和关注。通过阅读《DevSecOps敏捷安全》书籍关于开源安全治理方面的内容解读,总结提炼个人在开源安全治理方面的实践经验,希望可以为企业开展开源安全治理提供指导思路。


开源软件安全风险现状
随着互联网产业数字化高速发展,信息系统需要加快满足各种业务场景发展需求的节奏,必须具备快速迭代上线运行的特点。传统信息系统开发模式在创新性、迭代速度上均表现出一定的局限性,开源技术的应用开发模式可以有效推动信息系统建设分布式协作和技术快速创新,进而促使系统快速迭代,促进信息系统高效高质量输出。开源技术在教育、金融、医疗等传统行业使用已超过60%,开源软件已成为企业构建新型信息技术的重要选择。全球开源项目数量连续三年增长率超过40%,我国已经使用开源技术的企业占比高达88.2%,仍在爆发式增长。随着开源软件大量被引用,也给信息系统带来了众多安全风险。据统计,97%的行业代码库包含开源代码,84%的开源代码库至少含有一个安全漏洞,49%的已审核代码库仍包含高危安全漏洞,67%的开源组件存在法律合规风险,开源组件风险已严重影响着业务的安全稳定运行。随着数字化转型建设加快,开源软件应用正在呈快速增长态势,开源安全风险越来越不容忽视。伴随科技发展和业务市场化需要,公司业务对开源技术的应用需求持续增加,面临的开源安全风险指数级增长。在开源风险治理方面的慢节奏将严重阻碍公司健康稳定发展。需要在开源软件使用全生命周期全面建设安全监管处置机制,消除开源软件安全问题,减少开源技术引发的安全风险及合规问题。


开源安全治理实施途径
结合开源安全治理现状,总结提炼形成有效的典型经验,有助于相关企业有序开展开源安全治理策略规划和实施,从落地推进的角度详细阐明了具体步骤和思路:

(一)加强开源软件资产信息备案
信息收集和资产管理是安全工作的第一要素,开源软件资产信息备案至关重要。由于开源资产的信息数量庞大,需要建立自动化备案机制提升管理效率,在业务侧应用探针或插件来完成开源资产的自动化采集,对业务系统中开源软件资产的特征信息进行有效提取,主要包括开源软件名称、版本、使用组织等信息,形成标准化的开源资产信息清单。开源软件信息采集技术有五方面:1)通过源代码片段来识别开源软件和许可证类型;2)对开源软件文件提取哈希值,进行哈希值比对来识别信息;3)通过扫描包配置文件读取信息,提取开源软件信息和许可证类型;4)对开源项目的文件目录和结构进行解析,解析开源软件路径和依赖关系;5)通过编译开源项目并对编译后的开源项目进行依赖分析,最终从开源项目中提取开源软件信息。提取开源软件资产信息的方式有三种:1)通过监控业务系统当前运行的服务获取此服务所依赖库文件中的开源软件,此方法可以获取到依赖或间接依赖的包文件;2)通过对源代码扫描查看POM(项目对象模型)文件信息提取开源软件属性,此方法无法获取依赖的包文件信息;3)直接读取开源项目的文件目录,无法直接获取准确的服务路径。为获得准确的资产信息,防止出现文件伪造,使用与公共仓库的文件哈希值比对确认完整性,否则会出现伪造文件名来规避整改,同时也会伴随另外一个问题,如果对包文件内容更改,哈希值比对将不再准确,需要更深层的核查机制。开源软件资产的备案需要考虑项目、组织、人员等多维信息关联性,实现责任精确到人和漏洞快速精准定位。



(二)多元化开源漏洞信息来源
融合国内外权威漏洞库,包括CVE(通用漏洞披露)、NVD(国家漏洞数据库)、CNVD(国家信息安全漏洞共享平台)、CNNVD(中国国家信息安全漏洞库),充分挖掘各大漏洞库准确的开源软件漏洞参数信息,建立符合企业自身使用要求的开源软件漏洞库。漏洞库的形成应全面覆盖开源软件,至少应包含近5年内官方发布的开源软件漏洞,若存在于更早期,但是影响范围和危害程度严重的漏洞也需要收录入库。漏洞信息的建立需要结合业务需要,重点基于开源软件名称、影响范围、解决方案等信息进行梳理,建立形成一套适用于企业内部业务系统有效开展开源安全治理工作的漏洞库,最关键的工作是持续开展漏洞库的运营维护并动态更新,保证漏洞库信息的高时效性和高准确性,提高业务系统开源软件漏洞检测效率,降低漏洞检测漏报率和误报率。同时应进一步扩展漏洞数据信息源,从安全研究机构公众号等第三方平台深化漏洞信息的完善,不断积累和丰富漏洞信息库。

(三)快速高效的开源漏洞分析预警策略
快速精准定位开源软件漏洞影响范围是有效开展开源安全治理的核心环节,开源软件安全漏洞检测原理主要包含两种:一是依据获取到的开源组件名称和版本号信息,与整合形成的漏洞库信息匹配存在开源软件漏洞的不安全版本,建立有效的数据分析决策算法,支撑平台智能化分析预警;二是通过程序分析技术,获取开源软件名称、版本及引用的函数,再依据企业漏洞库去匹配所引用的函数是否会造成漏洞。方法二的准确性远高于方法一,但是实现难度也相对较大。可优先运用方法一,快速建立形成有效的业务系统开源资产信息库与开源软件漏洞库之间的联动关系,融合先进的大数据分析、人工智能等新技术,对漏洞进行标准化处理和关联决策分析,高效整合开源软件信息和漏洞信息之间的关联性,实现对开源软件漏洞的精准分析预警。同时通过预警通知快速传达相关负责人,提高响应效率,实现开源软件漏洞预警的高精准性和高时效性。

(四)动态实时的开源漏洞闭环整改机制
开源安全治理平台化能力建设,通过实时监测各业务系统所应用的开源软件资产信息,建立形成常态化持续监控机制,新发布漏洞可以第一时间完成受漏洞影响范围预警,研发人员完成对开源软件漏洞的整改处置后,已整改的开源软件漏洞会立即在平台实现消除,真正实现了对开源漏洞应急响应的闭环管理。除了通过技术措施的动态监测,还可以建立线上化管理流程,通过开源安全治理平台向业务系统团队发布开源软件漏洞预警任务单,业务团队完成漏洞整改后通过线上化流程反馈预警任务单。结合技术措施和管理手段,加强制度流程监管,强化技术应用实效,持续提升业务系统团队开源软件漏洞整改积极性。还需建立开源软件漏洞整改产线质量考核机制,将开源安全漏洞按漏洞等级和漏洞数量量化,推进开源安全治理工作扎实落地。



(五)开源软件安全治理管控流程
在建立管控流程之前需明确制度规范要求,将开源软件管理制度化,改变传统的邮件式的漏洞预警模式,建立平台线上化的全流程预警及整改反馈监管机制,结合短信、微信等通知平台实现快速风险预警、同时形成有效的可视化统计分析能力,全面指导管理者掌控开源软件漏洞影响及整改成效,协助业务负责人有目标地精准开展整改工作。《DevSecOps敏捷安全》书中充分讲解了开源安全流程化治理方案,比较完善的开源安全流程化解决方案是将开源安全治理融合到研发流程中,DevSecOps(开发、安全、运营)框架就是在研发测试验证阶段引入SCA(软件成分分析),将开源软件安全检测集成到自动化流程中,在业务系统迭代发版前完成对开源软件漏洞的检测和消除。将开源安全治理流程深度左移,建立开源安全漏洞与研发过程中开源软件资产之间的对接,在研发人员引入开源软件时完成漏洞检测,禁止引入存在漏洞的开源软件版本,彻底将开源软件风险消灭在萌芽阶段,杜绝供应链安全。安全隐患处置越早整改修复成本越低,发布运行至生产环境后修复成本将是指数级增加,甚至会因架构老旧、兼容性问题、代码找不到源头等问题导致整改工作无法顺利进行。


开源技术带来的创新性和高效性等正面效应已在企业推进数字化转型中发挥重要作用,开源安全可控将是关键任务。企业应紧密结合国家政策及行业标准规范,依据文中提到的已经建立形成的实施路径,制定开源安全治理统一指导方案和开源安全实施策略,全面统筹规划和推动开源治理工作,建立形成开源安全治理长效机制。本文所推荐书籍图示如下



书名:《DevSecOps敏捷安全》


作者:子芽出版:机械工业出版社内容简介:这是一本体系化讲解DevSecOps敏捷安全的实战性著作,为企业应对软件开发方式敏态化与软件供应链开源化带来的安全挑战提供了解决之道,它能有效指导企业快速将安全能力完整嵌入整个DevOps体系,在保证业务研发效能的同时实现敏捷安全内生和自成长。




推荐阅读

2022第二届诸子笔会

评优投票  | 12月盘点

11月盘点 | 10月盘点 | 9月盘点 | 8月盘点

7月盘点 | 6月盘点 | 5月盘点  | 报名





推荐阅读

2021首届诸子笔会

  评优投票 | 1月盘点 | 12月盘点

11月盘点 | 10月盘点 | 9月盘点 | 8月盘点

7月盘点 | 6月盘点 | 组团 | 报名



END








点【在看】的人最好看


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存