❶ 软件供应链安全及防护工具研究
文 中国信息通信研究院云计算与大数据研究所云计算部工程师 吴江伟
随着 5G、云计算、人工智能、大数据、区块链等技术的日新月异,数字化转型进程逐步推进,软件已经成为日常生产生活必备要素之一,渗透到各个行业和领域。容器、中间件、微服务等技术的演进推动软件行业快速发展,同时带来软件设计开发复杂度不断提升,软件供应链也愈发复杂,全链路安全防护难度不断加大。近年来,软件供应链安全事件频发,对于用户隐私、财产安全乃至国家安全造成重大威胁,自动化安全工具是进行软件供应链安全防御的必要方式之一,针对软件供应链安全及工具进行研究意义重大,对于维护国家网络空间安全,保护用户隐私、财产安全作用深远。
一、软件供应链安全综述
软件供应链定义由传统供应链的概念延伸扩展而来。业界普遍认为,软件供应链指一个通过一级或多级软件设计、开发阶段编写软件,并通过软件交付渠道将软件从软件供应商送往软件用户的系统。软件供应链安全指软件供应链上软件设计与开发的各个阶段中来自本身的编码过程、工具、设备或供应链上游的代码、模块和服务的安全,以及软件交付渠道安全的总和。软件供应链攻击具有低成本、高效率的特点,根据其定义可知,相比传统针对软件自身安全漏洞的攻击,针对软件供应链,受攻击面由软件自身扩展为了软件自身内部的所有代码、模块和服务及与这些模块、服务相关的供应链上游供应商的编码过程、开发工具、设备,显着降低了攻击者的攻击难度。同时,软件设计和开发所产生的任何安全问题都会直接影响供应链中所有下游软件的安全,扩大了攻击所造成的影响。
近年来,软件自身安全防御力度不断加大,攻击者把攻击目标由目标软件转移到软件供应链最薄弱的环节,软件供应链安全事件频发,对用户隐私及财产安全乃至国家安全造成重大威胁。最典型的如 2020 年 12 月,美国网络安全管理软件供应商“太阳风”公司(SolarWinds)遭遇国家级 APT 组织高度复杂的供应链攻击,直接导致包括美国关键基础设施、军队、政府等在内的超过 18000 家客户全部受到影响,可任由攻击者完全操控。
软件供应链安全影响重大,各国高度重视,纷纷推行政策法规推动软件供应链安全保护工作。2021 年 5 月 12 日,美国总统拜登签署发布《改善国家网络安全行政令》,明确提出改善软件供应链安全,要求为出售给政府的软件开发建立基线安全标准,不仅提供应用程序,而且还必须提供软件物料清单,提升组成该应用程序组件的透明度,构建更有弹性且安全的软件供应链环境,确保美国的国家安全。同年 7 月,美国国家标准与技术所(NIST)发布《开发者软件验证最低标准指南》,为加强软件供应链安全加码,明确提出关于软件验证的 11 条建议,包括一致性自动化测试,将手动测试最少化,利用静态代码扫描查找重要漏洞,解决被包含代码(库、程序包、服务)等。
我国对软件供应链安全问题也给予了高度重视,2017 年 6 月,我国发布实施《网络产品和服务安全审查办法》,将软件产品测试、交付、技术支持过程中的供应链安全风险作为重点审查内容。2019 年12 月 1 日,《信息安全技术 网络安全等级保护基本要求》2.0 版本正式实施,在通用要求及云计算扩展部分明确要求服务供应商选择及供应链管理。
二、软件供应链安全挑战
目前,软件供应链安全受到高度重视,但仍面临多重现实挑战,可以总结分为以下五大类。
1. 软件设计开发复杂化成为必然趋势
随着容器、中间件、微服务等新技术的演进,软件行业快速发展,软件功能及性能需求也不断提升,软件设计开发复杂化已经成为必然趋势。这一现状同时带来了软件设计、开发及维护难度陡增,设计与开发过程不可避免的产生安全漏洞,为软件供应链安全埋下隐患。
2. 开源成为主流开发模式
当前,开源已经成为主流开发模式之一,软件的源代码大多数是混源代码,由企业自主开发的源代码和开源代码共同组成。根据新思 科技 《2021 年开源安全和风险分析》报告显示,近 5 年,开源代码在应用程序中所占比例由 40% 增至超过 70%。开源的引入加快了软件的研发效率,但同时也将开源软件的安全问题引入了软件供应链,导致软件供应链安全问题多元化。
3. 快速交付位于第一优先级
由于业界竞争环境激烈,相较于安全,功能快速实现,软件快速交付仍处于第一优先级,虽然软件通常实现了安全的基本功能需求,如身份认证鉴权、加解密、日志安全审计等,但整体安全防护机制相对滞后,以后期防护为主,前期自身安全性同步建设往往被忽视,软件自身代码安全漏洞前期清除存在短板。
4. 软件交付机制面临安全隐患
软件交付指软件由软件供应商转移到软件用户的过程。传统软件交付以光盘等存储设备为载体,随着互联网等技术的发展,通过网络对于软件进行快速分发已经成为基本模式,不安全的分发渠道同样会对软件供应链安全产生重大影响。
5. 使用时软件补丁网站攻击
针对软件供应链安全防护,软件的生命周期并非结束于软件交付之后,而是直到软件停用下线。软件在设计及开发过程中难免存在安全缺陷,通过补丁下发部署是修复软件缺陷漏洞的最通用方式。软件补丁的下发部署同样受分发渠道影响,受污染的补丁下载站点同样会造成软件供应链安全问题。
三、软件供应链安全防护工具
软件供应链安全涉及众多元素及环节,参考业界常见划分,软件供应链环节可抽象成开发环节、交付环节、使用环节三部分。针对交付环节及使用环节安全防护,主要通过确保分发站点及传输渠道安全。开发环节与软件源代码紧密相关,安全防护较为复杂,囊括编码过程、工具、设备及供应链上游的代码、模块和服务的安全,涉及四类安全工具,包括软件生产过程中的工具和软件供应链管理工具。
1. 静态应用程序安全测试工具
静态应用程序安全测试(SAST)是指不运行被测程序本身,仅通过分析或者检查源程序的语法、结构、过程、接口等来检查程序的正确性。源代码静态分析技术的发展与编译技术和计算机硬件设备的进步息息相关,源代码安全分析技术多是在编译技术或程序验证技术的基础上提出的,利用此类技术能够自动地发现代码中的安全缺陷和违背安全规则的情况。目前,主流分析技术包括:(1)词法分析技术,只对代码的文本或 Token 流与已知归纳好的缺陷模式进行相似匹配,不深入分析代码的语义和代码上下文。词法分析检测效率较高,但是只能找到简单的缺陷,并且误报率较高。(2)抽象解释技术,用于证明某段代码没有错误,但不保证报告错误的真实性。该技术的基本原理是将程序变量的值映射到更加简单的抽象域上并模拟程序的执行情况。因此,该技术的精度和性能取决于抽象域对真实程序值域的近似情况。(3)程序模拟技术,模拟程序执行得到所有执行状态,分析结果较为精确,主要用于查找逻辑复杂和触发条件苛刻的缺陷,但性能提高难度大。主要包括模型检查和符号执行两种技术,模型检查将软件构造为状态机或者有向图等抽象模型,并使用模态/时序逻辑公式等形式化的表达式来描述安全属性,对模型遍历验证这些属性是否满足;符号执行使用符号值表示程序变量值,并模拟程序的执行来查找满足漏洞检测规则的情况。(4)定理证明技术,将程序错误的前提和程序本身描述成一组逻辑表达式,然后基于可满足性理论并利用约束求解器求得可能导致程序错误的执行路径。该方法较为灵活性,能够使用逻辑公式方便地描述软件缺陷,并可根据分析性能和精度的不同要求调整约束条件,对于大型工业级软件的分析较为有效。(5)数据流分析技术,基于控制流图,按照某种方式扫面控制流图的每一条指令,试图理解指令行为,以此判断程序中存在的威胁漏洞。数据流分析的通用方法是在控制流图上定义一组方程并迭代求解,一般分为正向传播和逆向传播,正向传播就是沿着控制流路径,状态向前传递,前驱块的值传到后继块;逆向传播就是逆着控制流路径,后继块的值反向传给前驱块。
2. 动态应用程序安全测试工具
动态应用程序安全测试(DAST)技术在测试或运行阶段分析应用程序的动态运行状态。它模拟黑客行为对应用程序进行动态攻击,分析应用程序的反应,从而确定该应用是否易受攻击。以 Web 网站测试为例对动态应用程序安全测试进行介绍,主要包括三个方面的内容:(1)信息收集。测试开始前,收集待测试网站的全部 URL,包括静态资源和动态接口等,每一条 URL 需要包含路径和完整的参数信息。(2)测试过程。测试人员将测试所需的 URL列表导入到测试工具中。测试工具提供“检测风险项”的选择列表,测试人员可根据测试计划选择不同的风险检测项。测试工具在测试过程中,对访问目标网站的速度进行控制,保证目标网站不会因为同一时刻的请求数过高,导致网站响应变慢或崩溃。测试人员在设定测试任务的基本信息时,根据目标网站的性能情况填入“每秒请求数”的最大值。测试工具在测试过程中保证每秒发送请求的总数不超过该数值。(3)测试报告。在安全测试各步骤都完成后,输出测试报告。测试报告一般包含总览页面,内容包括根据测试过程产生的各种数据,输出目标网站安全性的概要性结论;测试过程发现的总漏洞数,以及按照不同安全等级维度进行统计的漏洞数据。
3. 交互式应用程序安全测试工具
交互式应用程序安全测试(IAST)通过插桩技术,基于请求及运行时上下文综合分析,高效、准确地识别安全缺陷及漏洞,确定安全缺陷及漏洞所在的代码位置,主要在三方面做工作:流量采集、Agent监控、交互扫描。(1)流量采集,指采集应用程序测试过程中的 HTTP/HTTPS 请求流量,采集可以通过代理层或者服务端 Agent。采集到的流量是测试人员提交的带有授权信息有效数据,能够最大程度避免传统扫描中因为测试目标权限问题、多步骤问题导致扫描无效;同时,流量采集可以省去爬虫功能,避免测试目标爬虫无法爬取到导致的扫描漏水问题。(2)Agent 监控,指部署在 Web 服务端的 Agent 程序,一般是 Web 服务编程语言的扩展程序,Agent通过扩展程序监控 Web 应用程序性运行时的函数执行,包括 sql 查询函数、命令执行函数、代码执行函数、反序列化函数、文件操作函数、网络操作函数,以及 XML 解析函数等有可能触发漏洞利用的敏感函数。(3)交互扫描,指 Web 应用漏洞扫描器通过Agent 监控辅助,只需要重放少量采集到的请求流量,且重放时附带扫描器标记,即可完成对 Web 应用程序漏洞的检测。例如,在检测 SQL 注入漏洞时,单个参数检测,知名开源 SQL 注入检测程序 SQLMAP需要发送上千个 HTTP 请求数据包;交互扫描只需要重放一个请求,附带上扫描器标记,Agent 监控SQL 查询函数中的扫描器标记,即可判断是否存在漏洞,大大减少了扫描发包量。
4. 软件组成分析软件组成分析
(SCA)主要针对开源组件,通过扫描识别开源组件,获取组件安全漏洞信息、许可证等信息,避免安全与法律法规风险。现有的开源组成扫描技术分为五种。(1)通过进行源代码片段式比对来识别组件并识别许可证类型。(2)对文件级别提取哈希值,进行文件级哈希值比对,若全部文件哈希值全部匹配成功则开源组件被识别。(3)通过扫描包配置文件读取信息,进行组件识别从而识别组件并识别许可证类型。(4)对开源项目的文件目录和结构进行解析,分析开源组件路径和开源组件依赖。(5)通过编译开源项目并对编译后的开源项目进行依赖分析,这种方式可以识别用在开源项目中的开源组件信息。
四、软件供应链安全研究建议
1. 发展软件安全工具相关技术
软件供应链安全防护的落地离不开安全工具的发展使用。大力发展软件安全工具技术,解决安全开发难点需求,进行安全前置,实现安全保护措施与软件设计、开发同步推进。
2. 提升软件供应链安全事件的防护、检测和响应能力
软件供应链安全防护需要事前、事中、事后的全方位安全防御体系。软件供应链安全攻击事件具有隐蔽性高、传播性强、影响程度深的特点,软件供应链作为一个复杂、庞大的系统,难免存在脆弱节点,应提升对软件供应链安全攻击事件的防护、检测和响应能力,避免安全事件造成重大影响。
3. 构建完善软件供应链安全相关标准体系
通过科研院所及标准机构完善软件供应链安全标准体系,普及软件供应链安全防范意识,提升企业组织对软件供应链安全的重视程度,进行软件供应链安全投入,推进安全建设工作落实。
4. 建立软件供应链安全可信生态
实现软件供应链安全需要各领域企业的共同努力。企业共建安全可信生态将满足不同用户、不同行业、不同场景的安全可信需求,提升业界整体软件供应链安全水平。
(本文刊登于《中国信息安全》杂志2021年第10期)
❷ 请问进行企业数据安全防护的费用是多少呢
数据对公司来说很重要,不是用金钱能衡量的,你可以使用腾讯T-Sec安全运营中心,它是一个智能的安全运营与管理平台,通过自动盘点检测,能够及时发现漏洞,并对安全事件进行统一采集与存储,方便进行便捷式的统一管理,它还可以免费试用哦,对于公司来说,很不错的。
❸ 计算机安全防护有哪些要点
计算机安全防护有哪些要点:
1、实体硬件安全防护要点
(1)打开机箱进行硬件清理及安装时,必须切掉电源,不可带电作业。
(2)插拔外设时,也要断电,避免烧坏主板。
(3) 电脑外壳上的凹槽和开口是用来通风的,为防止电脑过热,请勿阻塞和遮盖这些开口。
(4)电脑应与产生强烈磁场的电器(电视、冰箱及大型音响等)保持至少13厘米距离。避免突然将电脑由寒冷处移至温暖处,两处温差若高10度,导致机体内结露,进而损坏存储介质。
2、软件及网络安全防护要点
(1)增强软件及网络安全防护是一项日常性的工作,并不是说网络设备、服务器配置好了就绝对安全了,操作系统和一些软件的漏洞是不断被发现的,比如冲击波、震荡波病毒就是利用系统漏洞,同样利用这些漏洞可以溢出得到系统管理员权限。在这些漏洞未被发现前,我们觉得系统是安全的,其实还是不安全的,也许漏洞在未公布前已经被部分hacker 所知,也就是说系统和应用软件我们不知道还会存在什么漏洞,那么日常性的防护就显得尤为必要。
(2)做好基础性的防护工作
安装正版干净的操作系统,不需要的服务一律不装,多一项就多一种被入侵的可能性,打齐所有补丁,选择一款优秀的杀毒软件,至少能对付大多数木马和病毒的,安装好杀毒软件,设置好时间段自动上网升级,设置好帐号和权限,设置的用户尽可能的少,对用户的权限尽可能的小,密码设置要足够强壮。
操作系统自带的防火墙功能还不够强大,建议打开,但还需要安装一款优秀的软件防火墙保护系统。对于对互联网提供服务的服务器,软件防火墙的安全级别设置为最高,然后仅仅开放提供服务的端口,其他一律关闭,对于服务器上所有要访问网络的程序,现在防火墙都会给予提示是否允许访问,根据情况对于系统升级,杀毒软件自动升级等有必要访问外网的程序加到防火墙允许访问列表。那么那些反向连接型的木马就会被防火墙阻止,这样至少系统多了一些安全性的保障,给hacker入侵就多一些阻碍。
(3)修补所有已知的漏洞
a、操作系统漏洞修补。
及时更新操作系统,时刻留意软件制造商发布的各种补丁,并及时安装应用。
安装完Windows操作系统后,立即打上补丁。使用Windowupdate在线更新全部重要更新。(360安全卫士有此功能,简单易用)。
b、 应用软件漏洞修补
养成良好的习惯,经常性的了解当前黑客攻击的手法和可以被利用的漏洞,检查自己的系统中是否存在这些漏洞。自己经常可以用一些安全性扫描工具检测,比如360安全卫士等检测工具,发现漏洞及时修补。
(4)密码安全
设置难猜的密码。不要随便地填上几个与你有关的数字,在任何情况下,都要及时修改默认密码。
不能把自己常用的几个邮箱、几个QQ和网络游戏的密码都设成一样,并至少每月改一次。其他不常用的几个邮箱密码不要和主邮箱的密码设成一样,密码可以相对简单点,也可以相同。不过密码内容千万不要涉及自己的名字、生日、电话(很多密码字典都是根据这些资料做出来的)。其他的密码设置也是同样道理,最常用的那个密码要设置的和其他不同,免得被人“一路破”。
顺便提醒一下,不要把写有你密码的那本笔记本放在你认为安全的地方。具体密码设置方式,参见IT小助第四期。
(5)多种方式灵活设置口令
a、 开机口令(又称为CMOS口令):在计算机主机板BI0S中设定;
b、登录用户名(帐号):进入操作系统所需键入的用户名和口令;高权限用户名(帐号)对整个操作系统具有控制权,甚至是整个工作组或域的控制权,是最重要的口令,须正确设置口令,妥善管理口令;
c、 屏保口令:在暂时离开时要使用计算机屏幕保护程序并设置口令。
(6) 上网浏览的注意事项
a 、不要同时打开太多链接窗口;
b 、当某个网站提出要将本网站设置为主页时,要取消操作;
c 、当网页中弹出安装某个插件的对话框时,如果一时不能确认,取消安装;
d 、定期清除历史访问信息、cookies以及Internet临时文件。
(6)使用电子邮件的安全事项
a、邮件和邮件通讯录都要做好备份;
b、发送邮件大小不超过邮箱总容量,附件大小应做适当控制,可先行压缩,或分成几个压缩包;
c 、多个文档文件作为附件发送时,最好压缩打包成一个文件发送;
d 、群发邮件时,收件人地址之间用逗号“,”或分号“;”分隔;
e、 以Web方式收取邮件,在阅读完毕时,一定要退出登录,并关闭网页;
f 、不要打开来历不明、奇怪标题或者非常有诱惑性标题的电子邮件;exe、com、pif、scr、vbs为后缀的附件,或者名字很特别的TXT文件,不要轻易打开;
g 、应该及时清理自己的个人邮箱,删除或转移邮件,以保证邮箱的可用容量;
h 、多个邮箱使用时最好做分类处理。例如,其中一个用作单位内部工作邮箱,另一个用作单位对外联络邮箱;
i、严禁在邮件内容中透露涉及单位和个人的重要信息内容。如身份证号码、银行帐号、计算机账号及口令等;
j 、禁止任何人发送或有意接收垃圾邮件。
3、、数据安全防护要点
(1) 重要数据和文件根据不同的需要进行加密和设置访问权限;
(2) 重要数据和文件应及时按规定进行备份。核心数据和文件要考虑在本地备份的基础上进行异地备份;
(3) 重要数据和文件不要放在共享文件夹内,确因工作需要临时设立共享文件夹的,应设置口令,并应针对不同的用户名(帐号)设置不同的操作权限。临时共享文件夹使用结束后,应立即取消。
4、 病毒防护要点
木马防范。 木马,也称为后门,直截了当的说,木马有二个程序组成:一个是服务器程序,一个是控制器程序。当你的计算机运行了服务器后,恶意攻击者可以使用控制器程序进入如你的计算机,通过指挥服务器程序达到控制你的计算机的目的。千万不要小看木马,它可以所定你的鼠标、记录你的键盘按键、修改注册表、远程关机、重新启动等等功能。
❹ 如何做好网络安全防护
一、做好基础性的防护工作,服务器安装干净的操作系统,不需要的服务一律不装,多一项就多一种被入侵的可能性,打齐所有补丁,微软的操作系统当然推荐 WIN2K3,性能和安全性比WIN2K都有所增强,选择一款优秀的杀毒软件,至少能对付大多数木马和病毒的,安装好杀毒软件,设置好时间段自动上网升级,设置好帐号和权限,设置的用户尽可能的少,对用户的权限尽可能的小,密码设置要足够强壮。对于 MSSQL,也要设置分配好权限,按照最小原则分配。最好禁用xp_cmdshell。有的网络有硬件防火墙,当然好,但仅仅依靠硬件防火墙,并不能阻挡 hacker的攻击,利用反向连接型的木马和其他的办法还是可以突破硬件防火墙的阻挡。WIN2K3系统自带的防火墙功能还不够强大,建议打开,但还需要安装一款优秀的软件防火墙保护系统,我一般习惯用ZA,论坛有很多教程了。对于对互联网提供服务的服务器,软件防火墙的安全级别设置为最高,然后仅仅开放提供服务的端口,其他一律关闭,对于服务器上所有要访问网络的程序,现在防火墙都会给予提示是否允许访问,根据情况对于系统升级,杀毒软件自动升级等有必要访问外网的程序加到防火墙允许访问列表。那么那些反向连接型的木马就会被防火墙阻止,这样至少系统多了一些安全性的保障,给hacker入侵就多一些阻碍。网络上有很多基础型的防护资料,大家可以查查相关服务器安全配置方面的资料。
二、修补所有已知的漏洞,未知的就没法修补了,所以要养成良好的习惯,就是要经常去关注。了解自己的系统,知彼知己,百战百胜。所有补丁是否打齐,比如 mssql,server-U,论坛程序是否还有漏洞,每一个漏洞几乎都是致命的,系统开了哪些服务,开了哪些端口,目前开的这些服务中有没有漏洞可以被黑客应用,经常性的了解当前黑客攻击的手法和可以被利用的漏洞,检查自己的系统中是否存在这些漏洞。比如SQL注入漏洞,很多网站都是因为这个服务器被入侵,如果我们作为网站或者服务器的管理者,我们就应该经常去关注这些技术,自己经常可以用一些安全性扫描工具检测检测,比如X- scan,snamp, nbsi,PHP注入检测工具等,或者是用当前比较流行的hacker入侵工具检测自己的系统是否存在漏洞,这得针对自己的系统开的服务去检测,发现漏洞及时修补。网络管理人员不可能对每一方面都很精通,可以请精通的人员帮助检测,当然对于公司来说,如果系统非常重要,应该请专业的安全机构来检测,毕竟他们比较专业。
三、服务器的远程管理,相信很多人都喜欢用server自带的远程终端,我也喜欢,简洁速度快。但对于外网开放的服务器来说,就要谨慎了,要想到自己能用,那么这个端口就对外开放了,黑客也可以用,所以也要做一些防护了。一就是用证书策略来限制访问者,给 TS配置安全证书,客户端访问需要安全证书。二就是限制能够访问服务器终端服务的IP地址。三是可以在前两者的基础上再把默认的3389端口改一下。当然也可以用其他的远程管理软件,pcanywhere也不错。
四、另外一个容易忽视的环节是网络容易被薄弱的环节所攻破,服务器配置安全了,但网络存在其他不安全的机器,还是容易被攻破,“千里之堤,溃于蚁穴 ”。利用被控制的网络中的一台机器做跳板,可以对整个网络进行渗透攻击,所以安全的配置网络中的机器也很必要。说到跳板攻击,水平稍高一点的hacker 攻击一般都会隐藏其真实IP,所以说如果被入侵了,再去追查的话是很难成功的。Hacker利用控制的肉鸡,肉鸡一般都是有漏洞被完全控制的计算机,安装了一些代理程序或者黑客软件,比如DDOS攻击软件,跳板程序等,这些肉鸡就成为黑客的跳板,从而隐藏了真实IP。
五、最后想说的是即使大家经过层层防护,系统也未必就绝对安全了,但已经可以抵挡一般的hacker的攻击了。连老大微软都不能说他的系统绝对安全。系统即使只开放80端口,如果服务方面存在漏洞的话,水平高的hacker还是可以钻进去,所以最关键的一点我认为还是关注最新漏洞,发现就要及时修补。“攻就是防,防就是攻” ,这个观点我比较赞同,我说的意思并不是要去攻击别人的网站,而是要了解别人的攻击手法,更好的做好防护。比如不知道什么叫克隆管理员账号,也许你的机器已经被入侵并被克隆了账号,可能你还不知道呢?如果知道有这种手法,也许就会更注意这方面。自己的网站如果真的做得无漏洞可钻,hacker也就无可奈何了。