速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

漫谈软件缺陷与漏洞

作者: Cynthia Freeney

  • 2022-04-13
  • 本文字数:3365 字

    阅读完需:约 11 分钟

漫谈软件缺陷与漏洞

软件缺陷

尽管自编码有了一些进展,但现在开发软件主要仍然得靠人工。


然而,人非圣贤,孰能无过?因此,我们可以得到一个合理的推测:由人生产出来的产品和服务,必然包含某种形式的缺陷。所以,软件缺陷不可避免,并且是软件开发过程的固有部分。


软件缺陷是逻辑或配置上的错误,会导致系统产生我们不期望的行为。


软件应用程序中的一些主要和常见缺陷包括业务逻辑错误、复杂性问题、文件处理问题、封装问题、数据验证问题、身份认证和授权错误。


常见弱点枚举 (CWE) 清单描述了常见的软件和硬件弱点,会导致安全方面的相关问题。 该清单对可能存在的软件弱点进行了全面分类。


在业务研发过程中,我们通常通过比较内部质量和风险指标以及对需求、规范、标准和截止日期等方面的遵守程度,来衡量和评估软件质量等级的可接受度。


因此,我们应该可以得到这样一个结论:软件质量是主观的,受业务承诺、高级管理人员的参与情况和组织文化的影响。 


软件开发中一个重要的关注点涉及到在预算、进度、范围、质量和安全性这些方面之间保持适当的平衡。一个方面的变化会影响其他方面。虽然都不希望改变计划,但这在软件开发生命周期中并不少见。这些场景反映了组织为了控制预算和进度,不得不在软件质量和安全性方面做出妥协。


软件质量并不总是软件的安全性指标。软件安全性的衡量标准,是在测试期间和生产部署之后发现的漏洞数量。软件漏洞是一类软件缺陷,潜在的攻击者经常利用这些漏洞,绕过授权,访问计算机系统或执行操作。有时,授权的用户也会出于恶意,利用系统中这些未修补的已知漏洞。


这些用户还可能会输入不能通过校验的数据,无意中利用了软件漏洞,从而损害数据完整性和使用这些数据的功能的可靠性。对漏洞的利用会针对下面三个安全支柱中的一个或多个:机密性、完整性和可用性,它们通常称为 CIA 三元组。


机密性指保护数据在未经授权时不会被泄漏;完整性指保护数据在未经授权时不会被修改,以保证数据的真实性;可用性指系统在需要时可供授权用户使用,并拒绝未经授权的用户访问。了解软件错误和漏洞之间的区别,是为创建安全的软件和及时减少缺陷和漏洞的整体战略的关键。

软件漏洞

现在已公布的漏洞利用行为,以及OWASP十大MITRE常见漏洞和暴露 (CVE) 列表、美国国家漏洞数据库和其他来源提供的见解都在讲软件漏洞。总体而言,这些信息强调了技术创新如何打破了所需的平衡,我们可以根据这些信息采取更有效的措施,在产品部署之前更好地检测和减少软件漏洞。


软件安全瑕疵越来越多,影响最大的因素是我们对软件安全性不思进取的态度、在软件安全性方面缺乏有效的最佳实践、软件开发人员和潜在攻击者之间的知识差异以及不安全的遗留软件。


由于威胁在不断变化,因此,在安全方面与时俱进的态度对于达成软件安全性很有必要。组织在开发和部署软件时,如果对安全的态度原地踏步,有可能会把内部合规跟有效、安全的软件开发周期过程混为一谈;对不断发展的威胁向量认识不足;从而无意中增加客户在各方面的风险。安全策略一成不变,只依赖内部合规来证明开发的软件很安全,这是短视的行为。


随着时间的推移,这种依赖性将导致利益相关者对组织开发安全软件的能力产生盲目的信心,并降低软件开发团队充分审查和应对不断变化的威胁的能力。若我所料不差,这些组织很可能没有有效的补丁管理程序,也没有在产品或解决方案实施过程中集成软件安全方面的设计原则。他们也不太可能添加安全相关场景的测试套件,或将软件安全的最佳实践纳入软件开发流程。


想要研发安全的软件,在研发生命周期中就应该应用软件安全方面的最佳实践。最佳实践涵盖安全设计原则、编码、测试、工具以及针对开发人员和测试人员的培训,有助于在将产品和解决方案部署到生产环境之前主动检测和修复漏洞。在合适的情况下,应用“故障安全”、“最小权限”、“深度防御”和“职责分离”等安全设计原则,可以增强应用程序的安全性。此外,还必须优先对开发人员和测试人员进行软件安全性方面的常规培训。


软件开发人员和潜在攻击者之间的知识差距正在扩大。这种现象的原因不尽相同,其中一些原因是心态、主要关注领域不同和缺乏学习机会。此外,一些软件开发人员对系统妥协持零和态度。这种心态与深度防御的安全设计原则背道而驰,并认为网络和设备漏洞实际上是“天国的钥匙”事件(译注:keys-to-the-kingdom,基督教典故,此处是指通过漏洞获得极大权限是漏洞发现者应得的)。因此,他们认为试图尽量减少妥协是徒劳的。有许多被爆出来的系统数据泄露事件,正是这种心态引发的后果,它们因缺少安全性或分层安全性不足,导致未加密的个人数据被盗。


这种“零和”心态,无意中助长了潜在攻击者通过各种技术深入到网络中进一步破坏生态系统的能力,从而可能获得对包含个人和业务数据的其他系统的访问权限。仔细审查代码是常见的深度防御措施,但一些软件开发人员未能有效利用。这些开发人员完全依赖自动代码扫描工具,而没有审查代码,或者只是粗略地审查代码。使用自动代码扫描工具并仔细审查代码才是一种有效的深度防御策略,可以在解决方案或产品部署到生产环境之前检测出漏洞。


软件开发人员和潜在攻击者有不同的优先级和重点领域。软件开发人员的重点领域包括实现业务逻辑;修复软件缺陷以满足质量要求;确保他们实施的功能或解决方案满足内部实用性、可用性和性能指标或服务水平协议 (SLA) 中的指标。显而易见,软件开发人员会在其主要关注领域获得专业知识。而潜在攻击者主要关注领域包括系统和软件行为分析,他们不断磨练技能以增加收入、满足好奇心、实现工具集、侦察和探索。所以同样地,潜在攻击者在其关注领域里也能获得专业知识。


潜在攻击者和软件开发人员之间的技能差异,让组织需要在软件安全方面持续地对软件开发人员进行培训。软件开发人员还必须了解当前的和不断拓展的攻击向量,并了解软件攻击面的概念,以避免在软件实现和修改过程中误入雷区。此外,软件开发人员必须转变观念,将软件安全原则和最佳实践纳入到软件开发生命周期中,它们与功能实现具有同等优先级。


在开发现在被称为“遗留”软件的那些年里,功能实现通常有最高优先级。对于许多软件供应商而言,软件安全跟功能的优先级不同,而且不是软件开发流程的一部分。在这种优先级安排以及威胁形势不断增长的长期影响下,其结果就是现在“遗留”软件中那些漏洞会被人发现和利用。为什么优先考虑功能实现,原因各不相同。


竞争、上市时间问题以及对软件安全缺乏关注,是组织不能遵循软件安全最佳实践和维持软件安全开发流程的主要原因。某些组织为了更好地保护“遗留”软件,给它们分配了资金和资源,在所需功能的实现上做出牺牲;并且由于持续关注在“遗留”软件的保护上,可能会丧失潜在的竞争优势。而其他组织通过检查软件漏洞来主动评估其“遗留”系统。尽管如此,在代码库被完全修补、升级到最新最安全或被废弃之前,遗留软件都将是漏洞利用方面的沃土。

结论

软件是潜在攻击者最常用的攻击媒介之一。因此,许多组织意识到,为了实现和维护安全的软件开发流程和基础架构,尽职尽责的调查非常重要。这些组织独立而又协同地为推进网络和软件安全领域的防御策略做出贡献。企业贡献包括:创建描述网络攻击阶段的安全模型和框架(例如洛克希德马丁公司的网络杀伤链),从而使组织能够规划相应的缓解措施;设立赏金计划,奖励查找漏洞,让安全研究人员和其他人可以因发现可利用的软件缺陷而挣到钱;对开源网络安全工具集的贡献;编写应用程序安全白皮书,描述最佳实践并促进软件安全向开发-安全-运维(DevSecOps)自然过渡。


不断发展的软件攻击向量使得我们不可能在生产部署之前消除所有软件漏洞。尽管如此,软件开发人员还是必须持续学习软件安全开发。也有人正关注于使用机器学习来检测软件漏洞,这将有助于更快、更有效地检测软件漏洞。然而,这种在专业领域采用机器学习的结果是否符合预期,目前还不确定。与此同时,各组织还是必须继续在同一战线上持续投入,共同抗衡潜在攻击者。

 

作者简介


Cynthia Freeney 目前就职于一家专门从事生物医学人工智能和自然语言处理技术的组织,担任软件项目经理和安全官的双重角色。她拥有 Scrum Master 认证和 ISC2 认证软件安全生命周期专家(CSSLP)认证,并且是网络安全的狂热爱好者。

 

原文链接

Insights into the Emerging Prevalence of Software Vulnerabilities (infoq.com)

2022-04-13 09:142495

评论

发布
暂无评论
发现更多内容

软件测试开发/全日制丨测试方案设计 学习笔记

测试人

软件测试 自动化测试 测试开发

腾讯云大数据ES:结合AI大模型与向量检索的新一代云端检索分析引擎

腾讯云大数据

ES

码上加速,低代码解锁高效交付案例

京东科技开发者

HTTP 和 HTTPS 的比较

Liam

程序员 前端 https 后端 HTTP

垂直领域大模型——文档图像大模型的思考与探索

陈橘又青

人工智能 文档识别 智能文字识别技术

「2023中国ToB行业年度榜单」重磅启动!

ToB行业头条

理解 Node.js 中的事件循环

高端章鱼哥

node.js

如何快速搭建AI数字人系统源码?

伤感汤姆布利柏

Web3 生态系统中的稳定币发展:2024 年基本见解

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

Apache Paimon:Streaming Lakehouse is Coming

Apache Flink

大数据 flink 实时计算

亚太唯一,阿里云连续4年稳居Gartner全球云数据库报告「领导者」

阿里云瑶池数据库

数据库 阿里云 云原生 Gartner

Kafka Streams概述

FunTester

工作会议:更适合中国宝宝体制的party

伤感汤姆布利柏

PCB阻抗设计12问,轻松带你搞懂阻抗!

华秋电子

OP链、ARB链、TRX波场链丨BNB币安链质押挖矿系统开发丨源码搭建

l8l259l3365

软件测试开发/全日制丨redis击穿、穿透区别,如何设计用例及测试

测试人

redis 软件测试 测试开发

XSKY SDS 产品率先获得 OceanBase V4 新版本认证

XSKY星辰天合

SMART Utility for mac (硬盘检测工具) 3.2.7完美激活版

mac

苹果mac Windows软件 SMART Utility 磁盘诊断工具

FDA 9月27号最新发布!SBOM将作为医疗设备上市的重要参考材料!

安势信息

SBOM 医疗器械 医疗器械软件 FDA认证

奋发向前展华章 秋光熠熠映朝阳 ——华秋2023年度关键词“发展”

华秋电子

每个程序员都应该知道的 8 大算法

不在线第一只蜗牛

c++ Python 算法

程序员必备的数据库知识 2:Join 算法

快乐非自愿限量之名

制造业企业使用SD-WAN的意义

Ogcloud

网络 SD-WAN 组网 组网网络

漫谈软件缺陷与漏洞_语言 & 开发_InfoQ精选文章