自2021年6月起,安在征文全新“改版”——“诸子笔会,打卡征文”。简略来说,咱们在诸子云社群招募“志愿者”,组成“笔友群”,自拟每月主题,相互催促互相鼓舞,完结每月一篇原创,在诸子云常识星球做主题相关每日打卡,一起约请专业作者群内共享,互通沟通。咱们的方针,不只是在继续8个月时刻里,赢取累计8.8万的高额奖金,更是要探究一种脑力激荡、常识共享的新思路和新玩法。本期发文,即诸子笔会月度主题来稿之一。
10多年网络安全从业经历,曾上任于宇通、唯品会、华为等企业,曾担任安全担任人、资深安全工程师、高档安全架构师等职位。主导过安全团队建造、企业安全办理规划、企业安全系统建造、运用安全系统建造、数据安全与隐私维护建造、终端安全管控建造、安全防护项目建造、安全运营监控建造、物联网安全服务建造、网络安全司法防备与追责项目建造等许多范畴的安全项目,在网络安全与隐私维护方面具有丰厚的办理与实践经历。
在当今这个“软件界说全部、软件使能全部”的年代,软件技能飞速展开,软件安全范畴的办法和东西已逐步完善,可是软件开发进程中的供给链安全,这一新式安全危险正在使得企业面临严峻的安全要挟。
软件开发进程中的供给链安全,是指企业在软件规划与开发进程中,面临的因供给链上游原因导致软件存在安全危险。与传统的软件安全缝隙比较,软件供给链安全的进犯面由本来的软件本身,扩展到软件内部的一切代码,以及供给链上游供货商的开发进程、开发东西和供货商网络鸿沟等,进犯面的增大明显降低了进犯难度。一起,软件供给链的安全危险将影响供给链中下流阶段的安全,因而进犯影响被明显扩展。从这两个方面能够看出,软件开发进程中的供给链进犯具有低成本、高效率的特色。
按人员以及协作形式的不同,咱们能够把企业软件的开发活动分为外包开发驻场、外包开发非驻场、收购产品、收购产品定制化开发四品种别,其间触及的安全危险包含源代码污染、开源软件安全、源代码安全缝隙、源代码信息走漏四种,本文要点剖析的是软件开发进程中的供给链安全,软件交给运用进程中触及的软件可用性、数据安全、个人信息维护等方面的危险不在本文考虑规划之内。
源代码污染是指进犯者经过各种方法进犯了上游软件供货商,在软件开发、构建、传达、晋级的进程中,不合法对软件供货商的源代码进行篡改,对软件传达、晋级进行绑架,运用软件供货商与企业用户之间的信赖联系,到达绕过安全产品检测,终究到达成功进犯软件供货商下流企业的意图。
源代码污染典型的事例是产生在2020年12月份的SolarWinds进犯事情。全球最著名的网络安全办理软件供货商SolarWinds遭受了高度杂乱的供给链进犯,SolarWinds旗下的Orion根底设施办理渠道,其发布环境遭到黑客安排侵略,黑客对源码中的e.BusinessLayer.dll文件进行篡改并添加了后门代码,后门代码可随软件更新被下发到下流客户的网络环境中。一起,由于Solars的令牌现已被其客户信赖,进犯者假造的令牌成功诈骗并绕过了安全防护。后门代码伪装成Orion OIP协议的流量进行通讯,将其歹意行为融合到SolarWinds合法行为中,然后到达躲藏本身的意图。进犯者经过后门能够完结对方针机器的彻底操控,包含恣意发动进程,履行下发的文件,快速在内网中构建出进犯阵地,并向内浸透。一起该后门支撑对文件hash进行校验,避免了误操作或许上传无效文件。设置的注册表项供给了耐久驻留功用,保证系统重启后仍能正常履行后门功用。该进犯直接导致美国在内的北美、欧洲、亚洲和中东的一些要害根底设施,政府、戎行、咨询企业、技能公司在内的18000+企业受到影响。
现在的软件大多数是被“拼装”出来,不是被“开发”出来的。无论是企业自己开发,仍是外包给供货商开发,开发出来的软件其源代码基本上都是混源代码,即由自主开发的源代码和开源软件代码一起组成。开源软件作为软件开发最根底的原材料,坐落软件开发供给链的源头,开源软件的安全会直接影响终究软件的安全性。
依据奇安信发布的《2021我国软件供给链安全剖析陈述》,2020年开源项目总量较2019年增长了34.2%,干流开源软件包生态系统中均匀每个开源项目有10.2个版别,能够看出,开源软件生态愈加昌盛,全体展开十分迅猛。2020年奇安信代码安全实验室对2557个国内企业软件项目中的开源软件状况进行了剖析,无一例外,一切的项目都运用了开源软件,均匀每个项目运用126个开源软件,可见开源软件在企业软件开发活动中的遍及程度。但开源软件的安全缝隙缺不容乐观,据统计,开源软件全体缺点密度为10.11个/千行,高危缺点密度为1.08个/千行。缝隙类型包含输入验证、途径遍历、注入、NULL引证、API误用等等,这些安全缝隙可直接导致企业软件被进犯。
源代码安全缝隙是指企业开发人员或许软件供货商的开发人员,在编写自有代码时,由于编码不标准、安全意识缺乏等原因,导致编写的代码中存在安全缝隙,缝隙类型包含注入、跨站脚本进犯、跨站点恳求假造、灵敏信息走漏等,这些包含缝隙的代码假如被发布到出产环境,可直接导致企业软件被进犯。许多供货商会由于本身规划小、监管要求不严、安全需求不激烈等原因,未展开或未系统化的展开网络安全建造作业,其开发出来的源代码或许会包含较多的安全缝隙。供货商源代码中的安全缝隙也是供给链安全中需求考虑的一个重要危险。
源代码信息走漏是指企业或许软件供货商,因数据安全管控系统不健全,或代码办理类东西装备不标准等其他原因,终究导致源代码走漏,进犯者拿到源码后能够从源码中获取灵敏信息,或许依据已取得的源码展开代码安全审计,然后能够更快速、更全面的找到软件安全缝隙,以施行进一步安全进犯。在软件开发进程中,供给链安全危险首要考虑的是供货商本身原因导致源代码信息走漏的危险。
别的,一些源代码办理类的开源软件也或许导致源代码被走漏,比方最近热议的境外某黑客安排运用SonarQube(一款开源静态代码质量剖析办理东西)安全缝隙(CVE-2020-27986),盗取了数十家重要单位的很多源码,并公开兜销。缝隙原因是由于SonarQube在默许装备的状况下,短少对API 接口的拜访权限操控,进犯者可运用该缝隙在未授权的状况下,经过拜访api/settings/values接口然后获取到 SMTP、SVN、GitLab 凭证,进一步获取源代码数据仓库中的源代码。一起也能够运用默许的账号密码,取得灵敏装备信息,然后进一步盗取企业源代码。
软件开发进程中面临的供给链安全具有危险品种多、要挟等级高,进犯隐蔽性强、进犯分散规划广等特色,并且越往上游的进犯影响量级就越大。因而,近年来,环绕供给链进犯的防护和办理,也成了国家层面安全范畴的重要研讨方向。重要国家的一些办理办法如下:
盟国间加强供给链安全的协作,2011年6月,美国与欧盟委员会在布鲁塞尔签署了《供给链安全联合声明》,为供给链危险办理与安全供给直接的支撑。2012年,美国和日本一起发布《美日全球供给链联合声明》。
2015年4月,美国国家标准与技能研讨所(NIST)发布了《联邦信息系统和安排的供给链危险办理实践》NIST Special Publication 800-161,该出版物为美国联邦安排的各个等级安排在确认、点评和缓解信息和通讯技能(ICT)供给链危险方面供给了相应的辅导。经过选用针对供给链危险办理(SCRM)的多层特定办法,将SCRM集成到联邦安排的危险办理活动中,这其间包含了有关怎么点评供给链危险和施行缓解活动的攻略。
2016年10月,英国国家互联网应急中心(CERT-UK)发布供给链网络安全危险白皮书,其间,介绍了各类软件供给链的危险事例和躲避主张。
2018年10月,我国发布了《信息安全技能 ICT供给链安全危险办理攻略》(GB/T 36637-2018),从供给链安全危险办理进程以及办理行动两个大的方面,对重要信息系统和要害根底设施的ICT供方办理其供给链安全危险提出了标准要求。
2020年4月27日,我国国家互联网信息作业室等12个部分联合发布了《网络安全查看办法》(以下简称查看办法),要求要害信息根底设施运营者收购网络产品和服务,影响或或许影响国家安全的,应当进行网络安全查看。查看办法作为履行《网络安全法》第三十五条提出的网络安全查看准则的重要准则文件,将要点重视要害信息根底设施收购网络产品和服务或许带来的国家安全危险,保证要害信息根底设施供给链安全。
2020年5月,我国电子商会发布了《软件代码开源成分与安全检测攻略》(T/CECC005-2020),规则了软件代码开源成分及其安全性检测的检测进程及办法,描绘了代码中开源成分及其安全性检测的检测条款。
2021年3月,开源初次被清晰列入《中华人民共和国国民经济和社会展开第十四个五年规划和2035年前景方针刚要》,支撑数字技能开源社区等立异联合体展开,完善开源常识产权和法律系统,鼓舞企业敞开软件源代码、硬件规划和运用服务。
2021年5月,在科洛尼尔管道运送公司(ColonialPipeline)因遭受勒索软件网络进犯暂停运营后,美国总统拜登于当地时刻5月12日签署了《改进国家网络安全的行政命令》,其间包含九项要害行动,其间第四项加强软件供给链安全,这是美国在软件供给链安全采纳的最微弱办法。
2021年9月,我国人民银行作业厅、中心网信办秘书局、工业和信息化部作业厅、银保监会作业厅、证监会作业厅以银办发〔2021〕146号联合发布《关于标准金融业开源技能运用与展开的定见》,旨在标准金融安排合理运用开源技能,进步运用水平缓自主可控才能,促进开源技能健康可继续展开。
企业在面临软件开发进程中供给链安全危险时,能够参阅上述国家层面的各类标准要求,从面向供货商的安全管控以及企业本身安全管控两个方面,展开源代码污染、开源软件安全、源代码安全缝隙、源代码信息走漏这四类安全危险的办理作业。要点行动详细介绍如下:
针对软件开发进程中的供货商,安全管控系统思路如下图所示,即依据协作需求布景,从协作形式、危险暴出面、危险类别三个维度对供货商进行安全危险等级区分,并按等级区分成果别离在协作前、协作中、停止协作时施行一系列的安全管控办法。
其间软件开发进程中与供货商的协作形式分为:开发外包驻场、开发外包非驻场、收购产品、收购产品+定制化开发。
危险暴出面即供货商担任开发的运用系统或从供货商收购的运用系统,在企业中布置的网络区域,包含互联网、内网两种。
危险类别即本文第一章介绍的四类危险,包含源代码污染、开源软件安全、源代码安全缝隙、源代码信息走漏。
终究把供货商的安全危险等级由低到高区分为1-4级,依据不同的安全危险等级拟定不同的安全管控办法,包含协作前供货商安全点评、合同安全条款束缚、协作中供货商安全查看共7大项管控办法。
在开发外包驻场的协作形式中,安全准则是把外包开发人员作为企业内部人员一起办理。包含一致配发作业终端,一致请求作业账号与权限,一致作业终端的网络权限及终端外设权限,一致开发要求与标准等等。
信任我们都遇到过这种场景,即企业收购回来一个运用系统,网络安全团队在对系统展开安全测验时,常常会发现收购系统中存在很多的安全缝隙。在把缝隙提交给供货商要求修正时,或许供货商的开发人员都不清楚何为安全缝隙,不清楚各类安全缝隙的影响和损害,更别提怎么修正缝隙。所以,网络安全团队不只要花时刻给供货商的运用系统进行了免费浸透测验,还要花很多时刻向其开发人员遍及安全缝隙常识,解说安全缝隙修正计划。假如把网络安全团队的这些作业看做一个安全服务项目,按市场上安全服务项目价格核算,或许比收购这个运用系统本身的合同价格还高。为了尽或许避免企业网络安全团队免费为供货商“打工”,针对开发非驻场外包形式以及收购的发布到互联网的运用系统,在协作前对供货商展开安全才能点评是十分有必要的。
供货商安全才能点评详细履行方法有两种,一种是经过问卷调研,别的一种是在POC阶段添加系统安全测验。
规划好供货商安全才能点评调研问卷,在协作前让供货商正式反应,依据反应成果能够大致了解供货商的安全才能。为了避免歹意虚伪反应,应将反应成果作为合同附件,使其具有必定的法律效力。一起,在协作中的供货商现场安全查看办法中,也需求对供货商的反应成果进行查看验证,假如存在虚伪反应应进行查核追责。
别的,针对收购类项目,应在POC阶段添加安全测验环节,安全测验的成果应作为POC终究成果的一部分,归入招标点评打分项。
合同条款中添加安全束缚的意图是为了清晰供货商的安全职责,详细应添加的安全内容包含:供货商安全才能点评调研成果真实性许诺。发现安全缝隙时缝隙修正的安全要求,包含呼应时刻、缝隙修正时刻。信息财物的保密许诺和要求,包含协作进程中担任信息财物的保密,协作完毕后按要求删去已不再运用的信息财物,如开发外包非驻场场景中,协作完毕时供货商应按要求删去项目中的开发代码。因供货商本身原因产生安全事情后承当的补偿职责,比方开发外包非驻场场景中,因供货商原因导致企业源代码被走漏。
在两边正式协作开始时,应提早清晰软件交给时的安全要求,详细包含供给《运用系统安全浸透测验陈述》(专业安全厂商供给)、《第三方开源组件清单及安全缝隙状况》,恪守《供货商软件开发网络安全红线》要求。
针对开发外包非驻场以及定制化产品开发的协作形式,供货商会为企业供给专属的源代码,因而,需求向供货商清晰《供货商软件开发网络安全红线》,要求供货商在开发进程中有必要满意红线中的安全要求。
供货商正式交给软件时,企业应对软件展开安全点评,要点包含核对《供货商软件开发网络安全红线》的满意状况,对软件进行安全浸透测验,对开源软件进行缝隙扫描等。发现缝隙或危险时按合同条款中的安全束缚要求供货商修正。
为了应对源代码污染、开源软件安全、源代码安全缝隙、源代码信息走漏危险,企业应按需对供货商展开现场或非现场网络安全查看,以点评供货商的全体网络安全才能,催促供货商做好网络安全建造。安全查看前应先拟定查看列表,提早将列表同步至供货商,先有供货商展开整改和准备作业。查看列表能够按网络安全操控域的维度,别离细化详细的查看点。查看维度能够包含网络安全安排建造状况、人员安全办理状况、代码等数据安全办理状况、运用安全管控、终端安全管控、拜访操控、网络鸿沟安全防护、开发进程办理、开源软件安全管控等方面。
别的,在协作停止时的安全查看中,应要求供货商删去已不再运用的企业源代码,并对删去状况进行查看。
在对软件开发进程中供给链的安全危险进行办理时,企业本身也应加强以下几方面的安全才能建造,简略介绍如下:
结合企业开发现状,展开SDL或许DevSecOps系统建造,以“安全左移”为准则,尽或许树立掩盖研产生命周期的安全系统。安全测验阶段应经过黑盒运用安全扫描东西、白盒源代码安全扫描东西、灰盒被动式扫描东西以及人工浸透测验等方法,尽或许发现源代码中的安全缝隙。安全运营阶段应经过外部要挟情报及时获取开源软件、收购产品的安全缝隙状况,以及与供货商相关的安全事情信息。
为处理源代码走漏的危险,企业需求系统化的展开数据安全建造作业,详细可拜见8月份以数据安全主题发布的文章:。
开源软件的危险首要包含答应协议合规以及开源安全缝隙危险,现在商用的开源软件扫描东西也比较老练,可对上述两个危险进行扫描发现,企业可经过开源软件扫描东西,在软件开发进程中对开源危险进行扫描辨认。详细示意图如下所示:
上述办理进程首要包含三个安全管控点,一是开发人员在本地终端进行代码编译时,可依据缝隙战略,制止本地终端从企业制品库拉取存在高危安全缝隙的开源软件,并经过IDE插件进行相应的提示。二是在经过继续集成进行构建时,可依据缝隙战略制止高危开源软件被拉取,并经过继续集成提示开发人员进行晋级修正。三是可经过外部缝隙库要挟情报,主动搜集最新的缝隙信息并与内部开源软件台账进行比对,辨认缝隙影响规划,并展开缝隙修正作业。
本文首要是针对软件开发进程中的供给链安全危险进行剖析,从与供货商的协作形式、危险暴出面、危险类别三个维度对供货商进行安全危险等级区分,并按等级区分成果别离在协作前、协作中、停止协作时供给了一些安全管控的主张。