修复来自开源和遗留程序的旧的-不安全的代码的三种方法 (修复来自开源的软件)
发现自己环境中存在旧的、易受攻击的代码的公司很可能缺乏修复这些代码的资源。大多数公司都会在某一时刻发现自己处于这种情况,无论是因为他们使用的是开源程序还是过时的程序,但公司有一些方法可以应对问题,包括确定优先顺序、自动化和缓解。
旧代码中的问题
旧的、糟糕的代码中存在的问题在企业中随处可见。易受攻击的代码通常是一个问题,根据Veracode今年发布的一份报告,在去年扫描的应用程序中,74%至少有一个安全漏洞,19%有高度严重的漏洞。
Veracode的首席研究官Chris Eng说,应用程序越旧,出现问题的可能性就越大。首次扫描新应用程序时,32%的应用程序存在安全漏洞。在五年的时间节点上,这一比例跃升至70%,到一个应用程序使用10年的时候,它有90%的可能性至少有一个安全漏洞。
问题增加的一个原因是应用程序中添加了新的代码,根据Veracode的数据,在前五年,应用程序平均每年增长40%,每一行新代码都增加了出错的可能性,更复杂的代码使发现和修复问题变得更加困难。
组件也是问题的一大部分,Eng告诉记者:大多数开发人员,当他们下载一个开源组件并将其整合到他们的应用程序中时,永远不会回去更新它。更准确地说,79%的时间里,旧的开源组件不会更新。
随着时间的推移,即使从来没有添加新的代码行,也会不断发现新的漏洞,Eng说,该应用程序的安全状况变得越来越糟糕。根据Synopsys在2月份发布的开源安全和风险分析,所有商业代码库中96%包含开源组件,89%包含过时四年以上的开源代码,这个问题对应用程序安全是很重要,以至于易受攻击的第三方库被OWASP列为Web应用程序安全风险前十名。
解决方案
表面上看,解决方案似乎很简单:只需用最新版本替换组件即可。当代码库相对较新时,这很容易。Eng说:如果明天发布补丁,那么做补丁就相当容易了。但如果我徘徊数年,得到多个版本,那么获取最新版本所需的工作量是巨大的。
随着每一个新的更新,特别是主要的版本,有更多的可能性来改变行为,关键功能可能已弃用,这意味着如果组件更新到最新版本,应用程序作为一个整体可能会停止工作。当你有几个主要版本之后,肯定会发生崩溃。Eng说。
当公司发现自己处于这种情况时,最好的做法是首先专注于最关键的问题。识别并确定构成最高风险的糟糕代码的优先顺序不同的漏洞可能会对公司产生不同的影响。在某些情况下,特定函数中可能存在安全漏洞,但应用程序不使用该函数,因此使系统不太容易受到该特定漏洞的攻击。还有一个问题是,是否看到了攻击行为,以及正在观察到的攻击活动的类型。
背景也很重要。Synopsys Software Integrity Group的管理顾问亚当·布朗告诉记者:如果你有一个过时的、非常旧的应用程序,但它部署在一个没有人能访问的安全网络上,那么它的影响就不会那么高了。即使它被归类为超高风险的关键漏洞,如果你花了很多钱来修复它,谁会受益?
在受监管的行业中,也可能存在与修复代码相关的合规问题,因为任何更改都必须经过审查,这种情况往往发生在金融和卫生领域。对于一些旧的应用程序,更换可能比修复更有意义。布朗说:有时候,建立一个新的模型,然后慢慢迁移到它上面,比试图修复旧的模型要容易得多。你可能会花时间修复一个严重的漏洞,但最终你应该做的是找出如何重新开发平台。
Synopsys本月初发布了自己的软件漏洞报告,该报告基于过去三年运行的1.2万项测试,重点是网络和移动应用程序。根据这份报告,92%的应用程序存在漏洞,其中33%属于严重类别。在确定优先顺序时,公司还需要注意不要被新闻头条所动摇。网络安全供应商Cymulate的董事兼网络安全架构师迈克·德纳波利表示:公司之间有一种趋势,即根据当前媒体的关注水平来评估迫在眉睫的威胁,而不是实际的风险水平。
Cymulate在今年3月发布了一份跟踪网络安全有效性状况的报告,该报告调查了1600名网络安全专业人士。报告发现,只有12%的公司对自己的网络安全状况有信心,83%的公司面临着技能短缺问题。
缓解
一旦确定了优先级,公司就可以开始采取步骤来缓解漏洞。自动化工具可以帮助识别和修复代码中的漏洞,而持续集成和持续部署(CI/CD)管道可以帮助确保在引入新代码时不会创建新漏洞。
还可以使用安全测试工具来识别代码中的漏洞。这些工具可以作为手动测试的补充,或作为自动化测试过程的一部分来使用。代码审查也可以用来识别和修复代码中的漏洞。代码审查是一种同行评审过程,在该过程中,开发人员审查其他开发人员的代码,以查找错误和安全漏洞。
定期进行安全审计也有助于识别和修复代码中的漏洞。安全审计是一种全面的安全评估,它可以识别代码中的漏洞,并确定安全控制措施的有效性。安全审计可以由内部审计团队或外部安全公司进行。
通过遵循这些步骤,公司可以识别和修复代码中的漏洞,从而降低网络安全风险。重要的是要记住,网络安全是一个持续的过程,公司需要不断审查其安全态势并采取适当的措施来降低风险。
软件公司要如何保障源代码的安全不会被外泄,不会被员工泄漏?
先回答你的问题,然后扩展开说说我的看法。 有些公司是这样做的:为工作场所划分保护级别。 为每台服务器和计算机定义保护级别,并制定相应保护级别下的保护策略,包括授权和访问方法。 将场所分为工作区和上网区,工作区不连外网,上网区是员工共享的非专用机。 封闭所有计算机的外部接口,比如USB口、光驱没有刻录功能、disable蓝牙,不允许计算机和U盘或手机等外设交换数据。 所有对外发的数据统一由高层来接口审核。 所有计算机安装后台监控软件,监控操作行为。 普通员工不配置笔记本电脑。 办公空间安装摄像头监视异常行为。 和员工签署保密协议。 等等上面的措施的确能起到一定保护作用,但是不能保证绝对不发生问题:公司开展业务必然要和外部进行信息交流,即使在硬件上做到了上述这些,如果真有居心不良的员工,那么只是增加了作案的难度,只要能上网,想把信息传到外部还是有办法的,比如把想窃取的信息通过编码的方式打包到正常外发的文件里。 可以在摄像头死角的地方,暴力破坏计算机,或者把计算机硬盘拆下来拿回去研究。 最不济还可以把核心代码写到笔记上,你总不能不让员工写读书笔记吧。 互联网公司产品的很多代码都是基于开源框架演化来的,有些开源许可是基于GPL的,是要求其衍生物是免费开放源代码的。 虽然有很多公司会取巧地绕开这个限定条件。 对于游戏公司,设计、策划、代码的保护是蛮重要的,因为开发期的游戏设计一旦外漏,很可能就失去了市场先机。 照我看,除了专用算法、特定的格式保护、极少数产品本身固有的设计、某些特殊行业(比如网游)之外,很多代码都是通用的,可开放的。 有以下一些建议:清晰自己所在的行业特点,对代码外泄做个风险评估,确定保护代码安全的思路和策略;划分核心代码和非核心代码,分别制定保护策略;在核心代码上下功夫,能接触这些代码的人一定是可以信任的人,尽可能地少,但也要考虑备份人选;把核心代码做成编译好的库供程序调用,这样就能降低核心代码泄漏的风险;员工入职签署保密协议;选拔高层注重品德和忠诚度,签订竞业保护协议;最后公司领导要有一个开放心态,正因为有开源的出现,才促进了计算机软件的发展,固守着自己的一亩三分地,早晚要被对手超越。 想在竞争中脱颖而出,首先要去除管理者的保守心态。 开放、公平竞争才让公司更有底气和信心。
安全开发你必须使用的28个DevSecOps工具
将安全融入开发过程,更早捕获并修复应用漏洞,你需要这五类共28款DevSecOps工具。
DevSecOps 是将安全集成到整个应用开发周期的过程,是从内到外强化应用,使其能够抵御各种潜在威胁的理想方式。因为很多公司企业不断开发应用以满足客户和商业合作伙伴的需求,DevSecOps的吸引力也与日俱增。
敏捷开发方法与DevOps操作帮助公司企业达成持续开发的目标。云原生应用架构也成为了DevSecOps运动的有力贡献者,推动采用公共云提供商、容器技术和容器平台为应用提供计算能力。DevSecOps将安全过程与工具集成进工作流并加以自动化,摆脱了传统方法按时间点进行的潜在干扰,是个无缝且持续的过程。
咨询公司 Data Bridge Market Research 称,鉴于网络安全威胁数量与危害性的持续上升,全球DevSecOps市场预计将从2018年的14.7亿美元增长至2026年的136.3亿美元。
市场繁荣之下,DevSecOps工具必将呈现百花齐放百家争鸣的局面。下面就按核心门类为您呈上多款优秀DevSecOps工具。
开发应用的时候很容易忽略掉安全漏洞。下面的工具为开发人员提供了潜在安全异常及缺陷的警报功能,可供开发人员及时调查并修复这些漏洞,不至于走得太远回不了头。有些工具专用于警报功能,比如开源的Alerta 。其他工具则兼具测试等别的功能,比如 Contrast Assess。
2. Contrast Assess
作为一款互动应用安全测试(IAST)工具,Contrast Assess 与用户应用集成,在后台持续监视代码,并在发现安全漏洞时发出警报。据称即便是非安全开发人员也可使用 Contrast Assess 自行识别并修复漏洞。
3. Contrast Protect
该运行时应用自保护(RASP)工具采用了 Contrast Assess 同款嵌入式代理。Contrast Protect 在生产环境中查找漏洞利用程序和未知威胁,并将结果提交给安全信息及事件管理(SIEM)控制台、防火墙或其他安全工具。
4. ElastAlert
ElastAlert提供近实时接收警报的框架,可接收来自Elasticsearch数据的安全异常、流量激增及其他模式。ElastAlert查询Elasticsearch并根据一系列规则比较这些数据。一旦出现匹配,ElastAlert便发出警报并随附建议动作。
大多数DevSecOps工具都提供一定程度的自动化。此类工具自动扫描、发现并修复安全缺陷,只是自动化程度各有不同,从条件式事件驱动的自动化到运用深度学习技术的自动化都有。
旨在通过深度学习技术自动查找并修复源代码中的安全漏洞,号称可为开发人员提供可供参考的解决方案列表,而不仅仅是安全问题列表。其供应商QbitLogic宣称,已为CodeAI馈送了数百万个现实世界漏洞修复样本供训练。
2. Parasoft tool suite
Parasoft提供包括应用开发安全测试在内的多种自动化工具:
1)Parasoft C/C++test
用于开发过程早期缺陷识别;
2)Parasoft Insure++
可以查找不规范编程及内存访问错误;
3)Parasoft Jtest
用于Java软件开发测试;
4) Parasoft dotTEST
以深度静态分析和高级覆盖作为 Visual Studio 工具的补充。
3. Red Hat Ansible Automation
该工具包含三个模块——Ansible Tower、Ansible Engine 和 Red Hat Ansible Network Automation,可作为无代理IT自动化技术单独或联合使用。尽管不是专门的安全工具,Ansible Automation 却可供用户定义规则以确定自身软件开发项目中哪些部分是安全的。
4. StackStorm
该开源工具号称“可进行条件式运营”,其事件驱动的自动化能在检测到安全漏洞时提供脚本化的修复与响应,并附有持续部署、ChatOps优化等功能。
5. Veracode
该公司提供DevSecOps环境中广泛使用的一系列自动化安全工具,包括在代码编写时即时自动扫描的Greenlight;在沙箱中扫描代码漏洞的 Developer Sandbox;识别漏洞组件的 Software Composition Analysis (SCA);以及识别应用缺陷的 Static Analysis。
专用DevSecOps仪表板工具可使用户在同一图形界面中查看并共享从开发伊始到运营过程中的安全信息。有些DevSecOps应用,比如ThreatModeler和Parasoft已自带仪表板。
该开源分析平台允许用户创建自定义仪表板,聚合所有相关数据以可视化及查询安全数据。如果不想自行构建,还可以在其网站上选用社区构建的仪表板。
如果你使用Elasticsearch,该开源工具可在统一图形界面中集成成千上万的日志条目,包括运营数据、时间序列分析、应用监视等等。
威胁建模DevSecOps工具用以在复杂的攻击界面中识别、预测并定义威胁,以便用户可以做出主动安全决策。有些工具可根据用户提供的系统及应用信息自动构建威胁模型,并提供可视化界面以帮助安全及非安全人员 探索 威胁及其潜在影响。
1. IriusRisk
出自 Continuum Security 的解决方案,既可云部署,也可现场部署,能以基于问卷的界面自动化风险及需求分析,并设计出威胁模型和技术性安全要求。IriusRisk还可帮助用户管理代码构建及安全测试阶段。
2. ThreatModeler
该自动化威胁建模系统有两个版本:AppSec版和云版。在提供了用户应用或系统的功能性信息后,ThreatModeler会基于更新的威胁情报自动就整个攻击界面进行数据分析和潜在威胁识别。
3. OWASP Threat Dragon
一款基于Web的开源工具,提供系统图解和用于自动化威胁建模与缓解的规则引擎。Threat Dragon 承诺可与其他软件开发生命周期(SDLC)工具无缝集成,且界面易于使用。
在开发过程中测试应用以找出潜在漏洞是DevSecOps的关键部分,能够事先发现安全漏洞,避免漏洞被黑客利用。尽管其他工具往往包含了测试功能,比如Parasoft出品的那些,下列工具仍然在应用安全测试上表现强劲。
1. BDD-Security
该出自 Continuum Security 的开源框架可使安全人员在敏捷开发过程中测试行为驱动开发(BDD)语言编写的功能及非功能性安全场景。此BDD框架旨在使安全功能独立于应用特定的导航逻辑,让同样的安全要求能够更容易地应用到多个应用程序上。
2. Checkmarx CxSAST
可对25种编程及脚本语言进行未编译/未构建源代码扫描的静态应用安全测试(SAST)工具,能在SDLC早期发现成百上千种安全漏洞。CxSAST兼容所有集成开发环境(IDE),是Checkmarx软件暴露平台的一部分——该平台可在DevOps所有阶段植入安全。Checkmarx的交互式应用安全测试(IAST)工具可检测运行中应用的安全漏洞。
3. Chef InSpec
整个开发过程中的每一阶段都可以运用该开源工具自动化安全测试以确保针对传统服务器及容器和云API的合规、安全及其他政策要求。
Micro Focus 出品,提供端到端应用安全,可供进行覆盖整个软件开发生命周期的现场及按需测试。Fortify on Demand 是 Micro Focus 的应用安全即服务产品,提供静态、动态和移动应用安全测试,以及生产环境中Web应用的持续监视。
流行测试框架,旨在推动易操作的安全测试及安全、开发和运营团队间的沟通。GauntIt便于产生攻击测试用例,且能方便地钩入现有工具及进程。
6. Synopsys suite
Synopsys提供多个应用安全测试工具,包括:
1)SAST工具Coverity
自动化测试且融入持续集成/持续交付(CI/CD)管道;
2)SCA工具 Black Duck
采用容器及应用中的开源和第三方代码检测并管理安全;
3)SeekerIAST
识别可暴露敏感数据的运行时安全漏洞;
以及一系列用于应用安全测试的托管服务。
以下DevSecOps工具同样含有上述工具提供的功能,但或多或少略有不同。
1. Aqua Security
在整个CI/CD管道和运行时环境中管理端到端安全,可用于所有平台和云环境的容器及云原生应用。
2. Dome9 Arc
被 Check Point 收购,提供自动化测试及安全实施,使开发人员能够将安全及合规融入公共云应用的构建、部署及运营。
该工具可将DevSecOps架构融入CI/CD过程,在提交时测试每一块代码,使开发人员能够在编程期间缓解安全漏洞,并提供涵盖所有漏洞的仪表板。
4. Red Hat OpenShift
为基于容器的应用提供内置安全,比如基于角色的访问控制、以安全增强的Linux(SELinux)实现隔离,以及贯穿整个容器构建过程的核查。
(前身为)
Palo Alto Networks 出品,适用于部署阶段,帮助开发人员快速发现并缓解资源配置、网络架构及用户活动中的安全威胁,尤其是在亚马逊S3存储桶和弹性块存储(EBS)卷上。
6. SD Elements
出品自 Security Compass 的自动化平台,旨在收集客户软件信息,发现威胁及对策,突出相关安全控制措施以帮助公司企业实现其安全和合规目标。
7. WhiteHat Sentinel 应用安全平台
该解决方案提供贯穿整个SDLC的应用安全,适用于需将安全集成进工具中的敏捷开发团队,以及需持续测试以保证生产环境应用安全的安全团队。
8. WhiteSource
用于解决开源漏洞,可集成进用户的生成过程,无论用户采用什么编程语言、生成工具或开发环境。WhiteSource使用经常更新的开源代码数据库持续检查开源组件的安全及授权。
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。