一款软件从设计到实现,往往会被拆分成许多小的功能模块,分别实现后再组装整合。大量简单的业务逻辑被用于构建复杂而又丰富的业务逻辑,设计或实现上的偏差或缺陷都会导致漏洞的产生。

近年来,随着人工智能和物联网等新兴科技的广泛应用,各种“智能”、“自动”的科技服务已经渗透到人们生活的方方面面。在这些服务的背后,是无数个应运而生的软件和应用程序在支撑。遗憾的是,软件行业的大繁荣并没有带来软件代码质量的明显提升。Forrester研究数据显示,82%的漏洞来源于应用程序。与软件规模、数量的井喷一同出现的,是软件漏洞的大爆发,以及随之而来的隐私泄漏、网络欺诈等漏洞“后遗症”。

面对如此巨大的风险,企业内部的软件开发团队通过践行代码审查、各种测试以及代码分析以期减少代码中的漏洞从而提高代码质量。然而,这些方法往往也只能确保“砖块”可用,由这些“砖块”搭建起来的建筑是否符合设计、是否安全可靠就很难验证了。由此,用以检测软件设计或功能实现上的缺陷或偏差的“业务逻辑验证”就应运而生了。

偏差是漏洞

一款软件从设计到实现,往往会被拆分成许多小的功能模块,分别实现后再组装整合。大量简单的业务逻辑被用于构建复杂而又丰富的业务逻辑,设计或实现上的偏差或缺陷都会导致漏洞的产生。实践中,团队在拆解实现时,即使顶层描述十分清晰,将文字表达翻译为编程语言,将笼统的语言描述到细节的代码实现,其中可能产生的偏差不是代码审查、各种测试和代码分析能够轻易发现的。同时,如果开发团队在不同模块接口之间的功能描述不够清晰、实现存在偏差,程序一旦运行,问题就会浮出水面。尤其是在增强软件功能、对原有功能改造以及新加入开发人员时,发生类似状况的风险也会上升。

此外,开发人员对第三方或者库函数的理解偏差,也会导致漏洞的发生。如谷歌浏览器Chrome的0day漏洞cve-2019-5786就是由于开发者对std::move()的理解不全面而造成的。对新标准、新接口的尝鲜心理普遍存在于软件开发者中,但在真正使用这些新事物之前,开发者自身需要投入时间精力,去学习并真正理解它。而且,并不是所有的新标准、新接口的设计都合理,如std::move(),其功能在一个编译器的优化流程中就能自动实现。通过开放一个接口,让开发者来尝试实现编译器优化未能完成的工作,同时提供了一个可能导致大量漏洞的来源,其目的和意义让人费解。

业务逻辑验证的重要性

业务逻辑验证,这个步骤可以帮助企业在被认可的合理范围内交付软件,而不是提供一个拥有过多或过少功能的半成品。功能过少的弥补方法相对简单,延长交付时间进行添加即可;而功能过多,则有可能提供了通往用户隐私数据的入口,从而导致不可挽回的严重后果,这类例子比比皆是。

图: 国家信息安全漏洞共享平台收集整理信息系统高危漏洞数量

在智能家居普及的今天,黑客利用监控设备的漏洞将监控片段上传至互联网,造成用户隐私泄露,甚至财产损失的事件屡见不鲜。据CNCERT披露的《中国互联网络发展状况统计报告》显示,2020年信息系统的高位漏洞数量同比2019年增长52.2%。诸多例子都在警醒我们软件安全问题就潜伏在身边。

验证业务逻辑,就是从语言描述转换成扫描工具能够认识的检测原语,并证明其成立的一个过程。传统的验证方法是将语言描述转换为严谨的数学表达,证明过程繁复且困难,不仅用人门槛极高,且费时费力。而且一旦顶层的语言描述发生变化,整个推导过程又需要从头开始。在传统形式化方法的实践中,为了验证一行软件源代码,验证过程中需要写17行的代码去验证。此外,传统形式化方法在证明失败的地点分析问题的症结所在并不容易,往往需要沿证明路径倒推检查。一般的开发者并不具备轻易掌握传统方法的能力。

为提供高效的业务逻辑验证服务,最好的方法是在静态代码扫码工具上提供接口,让用户将其业务逻辑映射到对应的开发语言上,再由机器快速高效的完成验证工作。即,如果有某语言编写的一段程序,又有它的一段语言描述,只要代码扫码工具提供了相同编程语言的接口,就可将语言描述的业务逻辑映射到的验证引擎可以识别的接口函数上,对软件进行扫描,查看真正的实现是否符合了语言描述中所要实现的功能。全程由机器执行的工具不仅拥有更快的速度、更高的效率,其对使用者的水平要求也更低,更能直观地帮助客户了解软件开发的具体症结所在。在实践中,80%的客户的定制化验证需求是可以通过有限的扫描引擎描述接口由客户自行实现的,而另外20%的客户的特定的需求,则需要花费大量精力去帮助解决。

左移已是开发标配

软件生命周期包括:设计、实现、测试以及交付使用。早发现问题早解决,弥补的成本也随之而下降。在用户开始使用时才暴露出来的错误,其修复的人力和时间成本最高,远超过开发时就发现并修复的成本。与其在用户使用后才报错,不如在内部开发的早期就践行业务逻辑验证,确保 “我做的是客户想要的”,因为一个软件到实现功能之后再重新设计改造,其时间、人力成本都会很高。

关于作者

李隆博士专注于代码验证基础架构,现任鉴释科技首席科学家。李隆于2008年在中科大获得计算机软件和理论博士学位。其学术研究集中在应用基于程序设计语言理论的技术构建可靠高效的软件上,并发表了数篇期刊和会议论文。毕业后,李隆博士加入了三星电子,从事高级技术小组的统计机器翻译工作。并于2010年加入HP编译器团队,从事HP Non-Stop编译器后端和SDK。

责编:Luffy Liu

阅读全文,请先
您可能感兴趣
人类的发明,即工程系统,依赖于物理学和数学基本原理,如麦克斯韦方程、量子力学和信息论等,以实现特定目标。然而,随着工程系统复杂性和规模迅速增长,其子组件的功能可能呈现出非线性特性,这使得基于第一原理的设计方法受到限制。
尽管生成式AI令人感到惊喜,但很多创新还没有真正落实到每个用户或企业的AI应用上。为了开发出真正不可或缺的“AI杀手级应用”,必须加快创新步伐,激励更多开发者致力于AI领域的开发和创新活动。
为了确保英国市场的竞争不受影响,CMA将对这一收购事宜进行调查。CMA称,允许相关方提交有关该交易可能对英国竞争产生影响的初步意见。
“神玑 NX9031”采用5nm车规工艺制造的高阶智能驾驶芯片,其芯片和底层软件均已实现自主设计,拥有超过500亿颗晶体管。该芯片采用32核超强CPU架构,并集成了高性能图像信号处理器ISP和各类推理加速单元NPU,能够灵活高效地运行各类AI算法。
在中国先进制程被封锁、算力芯片的峰值性能落后的大背景下,中国应该如何应对挑战呢?唐志敏认为,应该全栈协同,突破算力芯片和系统的关建技术,即需要系统级思维,在限制条件下求全系统的最忧解,不追求芯片峰值性能的绝对领先,通过协同创新、全栈优化,得到领先的性能。
微软还指出,由于与欧盟达成的协议,公司无法做出类似的改变来提高操作系统的安全性。因此,当第三方安全软件更新出现缺陷时,这些措施进一步加剧了问题的严重性。
大多数研发人员和导热界面材料配方设计师可能会推荐使用具备诸多优异特性的硅。然而,也存在一些例外情况。这些问题强调了在选择导热界面材料时考虑终端产品最终应用的重要性.....
在与芯科科技(Silicon Labs)首席技术官Daniel Cooley的交谈中,我们了解到该公司在物联网(IoT)和智能边缘领域所发挥的作用和未来发展。
虽然绕过产品防伪保护的手段变得越来越高级,但是最新的 NFC 芯片技术提高了信息安全性,让品牌能够保护知识产权,预防客户误买假冒商品。
西门子推出Simcenter更新版本,助力客户简化工作流程,加快航空航天认证,同时提供深入洞见
文|温风回顾完过去,再聊聊新的一年,沃尔沃从产品层面,还有哪些亟待解决的问题?首先是纯电高端化的挑战。这不是沃尔沃一家的命题,宝马i5/i7,奔驰EQE/EQS,没有一款对自身旗下传统动力车型产生强烈
本文来源:智能通信定位圈日前,瑞士物联网模组制造商u-blox表示,将在2025年逐步淘汰其亏损的蜂窝物联网业务。该部门拥有200多名员工,预计关闭后将有岗位裁撤。公司声明称:“经过仔细评估,u-bl
点击蓝字 关注我们SUBSCRIBE to USImage: Umar Shakir / The Verge谷歌将于今年2月(25年2月)推出其Android Automotive应用转换计划,该计划
 /记得星标我/比大部分人早一步看见未来在日新月异的数字浪潮中,中小企业作为国家经济的生力军,正站在数智化转型的十字路口。中国移动,作为信息通信领域的领军者,积极响应国家政策,以科技创新为笔,绘制出一
会议推介2025中国国际LED产业发展大会暨首届JM Insights春茗会 主办单位:JM Insights 支持单位:深圳市平板显示行业协会 论坛时间:2025年2月20日 论坛地址:深圳·国展皇
“什么是5G,用户说了算”。记得在5G商用之前,当人们都在谈论5G是什么、5G到底能做啥时,这句话引起了业界广泛共鸣——5G建设和发展需倾听用户的声音,以消费者和各行各业日益增长的需求为导向。时至今日
点击蓝字 关注我们SUBSCRIBE to USWestinghouse Electric Company西屋电气公司和Radiant公司正在开发一些世界上最小的反应堆。对两座新微型反应堆的资助可能会
一凡 铁鹰发自 智车入库 | 公众号 AI4Auto2025,智能驾驶怎么卷、卷什么?那要结合现在的能力和体验来看。2024年,「全国都能开」成为新的第一梯队门票,但很快不再「领先一代」。两个「端到端
    三极管的电流放大作用应该算是模拟电路里面的一个难点内容,我想用这几个动画简单的解释下为什么小电流Ib能控制大电流Ic的大小,以及放大电路的原理。    我这里的三极管也叫双极型晶体管,模电的放
1月21日,研究机构 Canalys 发布的报告显示,2024 年第四季度,由于厂商在节后调整库存,印度智能手机出货量下降 4%,降至 3720 万台。其中,vivo 以 750 万台的出货量和 20