系统性谈谈软件可靠性——第6讲:单独谈谈软件导致的安全问题

目录

一、软件安全性与产品安全的关系

二、软件导致的产品安全问题


本文为拓展内容,《可靠性工程师手册》一书中并无此内容。因我跟产品安全打交道多,所以谈谈软件导致的安全问题。

一、软件安全性与产品安全的关系

首先我们要明确下产品安全的概念。所谓产品安全,是指不发生可能造成人员伤亡、职业病、设备损坏、财产损失或环境损害的状态。这个我在产品安全系列文章中有讲,详见《产品安全系列1:安全的基本概念》。

在本系列的第一篇文章里(《系统性谈谈软件可靠性——第1讲:软件可靠性基础概念》),我们特意强调了软件的安全性和软件导致的安全问题,不是同一个概念。

我把它们之间的关系总结为3点:

1.软件安全性不够,容易给整机带来安全问题。例如,由于软件本身的安全性不足,无法抵御黑客入侵,导致整机被控制、破坏,产生安全问题。举个例子:2012年5月,美国新泽西州发生了一起黑客侵入心脏起搏器夺人性命的离奇案件。原本正常的起搏器突然超负荷运作,不断高频度的刺激心脏,使心脏在短时间内无法承受而永远的停止了工作,而起搏器也因为超负荷运作而彻底报废。

2.不是所有软件安全性问题,都会导致整机不安全。在第1讲中,我们讲了软件本身的安全性,是包含保密性、完整性、抗抵赖性、可核查性、真实性这五个子特性的。举个例子来理解,假设我们软件没有去考虑“可审查”这点,非权限外的人员去操作了,或者权限内的人员没有按要求操作,这些没有记录,从软件安全性来讲,这个软件是安全性不够。但如果这个软件本身控制的东西就没有什么安全问题,那它不会导致整机的安全问题。

3.不是所有整机安全问题,都是因为软件本身安全性不够导致,更有可能是因为Bug。举个例子,我们假设有一个发热设备控制软件,设置了各种权限,有完善的日志记录,还带有自毁功能,一旦受到任何攻击启动自毁,本身安全性很高。但软件有个bug,会导致发热设备在某个情形下不停机了,一直发热,这个时候,如果我们本身没有对设备做一些额外防护(例如结构防护,或者程序上设计超时必须终止任何其他程序),它可能温度超高,最终导致起火的安全问题。

二、软件导致的产品安全问题

理解了上述内容后,今天我们特别讲下由于软件出错导致的安全问题。

因为我们做家电,常见的六大维度安全问题,是起火、触电、爆炸、漏水、机械伤害、误操作。所以这里就讲这六个类型,我搜集了一些案例。

起火:通常,发动机起火是由于过热而发生的,这是一个机械问题。但是,现代汽车发动机和变速箱是由计算机控制的,并且像任何计算机一样,可能存在软件缺陷,带来意想不到的后果。这正是某些2013年现代Velosters所发生的事情。

现代汽车在美被曝出多起车辆发动机非碰撞起火事件,美国国家公路交通安全管理局(NHTSA)对此展开了调查。调查发现,2013年4月26日至2013年10月16日生产的2013款飞思出现了软件故障,有可能导致发动机熄火甚至起火。


NHTSA 表示,问题汽车中的发动机管理软件可能会导致发动机中的空气/燃料混合物过早点火,由此产生的过高气缸压力可能会损坏飞思搭载的1.6升涡轮增压发动机。

在家电行业,很可能会发生的是程序Bug导致干烧,温度过高,引发起火。

触电:触电方面,这个我没有找到因为软件问题导致直接触电的案例。但很多系统,可以使用软件去做一些预防提示。例如,安装防误系统软件可以有效防止变电站工作人员的误操作和人身触电。如果这个防误软件出了Bug,给出错误的提示,就很可能会导致触电问题。所以变电站是还有其他多重防护措施的:严格管理制度,提高值班人员的技术含量,提升现场操作人员的工作技能,在带电设备旁要设置明显标志牌,采取必要的安全隔离措施,安全操作等等。

爆炸:1996年6月4日。“阿丽亚娜-5”运载火箭进行首次测试发射,结果是失败的。在火箭发射后的第37秒就被迫自爆。经过检查后发现,原因竟然是因为控制火箭飞行的软件发生了故障。资料显示由于64位元的运算错误的变为16位元的运算,造成程序崩溃后处理器发生数据溢出,读取感测角度水平数据运算时错误地读入垂直数据,导致火箭在高速下进行了90度水平滚转而崩溃,触发了自毁装置。造成了非常大的损失。

家电一般来说,是物理爆炸比较多,大多数是由于用户使用不当导致。但也可能会有化学爆炸,比如一些涉及到可燃气体之类的家电,需要注意点火程序。

漏水:程序设计上有延时,但没有考虑到动作先后顺序以及延时过长,导致系统承压,水压作用下开裂漏水。

机械伤害:美国核管会在2013年9月20日公布的一份报告中表示,已经确定三菱重工 (MHI)用于为美国圣奥诺弗雷核电站2台机组设计蒸汽发生器的计算机软件存在缺陷 。核管会在报告中指出 ,三菱重工用于设计蒸汽发生器的软件不能准确地预测蒸汽发生器中可导致管道振动和磨损的热工水力条件,最终导致圣奥诺弗雷3号机组在2012年1月因放射性物质泄漏而紧急停堆,而发生泄漏的原因是该机组的1台蒸汽发生器出现管道 “异常磨损”。对2号机组进行的检查发现 ,2号机组的蒸汽发生器也存在同样的问题。此后 ,这两台机组一直处于停堆状态。

对于家电,用传感器进行位置检测是很普遍的情形,如果检测逻辑或算法有问题,判断所处位置错误,而程序没有做保护,最后也很可能导致伤害,如产生机械破损,危险物质溢出等。

误操作:程序设计上,以用户操作按键为前提进入判断条件。未考虑用户的非正常操作,直接绕过按键进行了操作。这时程序无终止条件,一直不停机,导致财产损失。

除了上面几个类型,随着家电产品往智能化发展,我们还有考虑服务器的安全问题。入侵会不会导致产品问题。比如:入侵后,显示错误的信息,使得用户操作错误,例如取冷水时出热水,导致安全问题。指引信息被修改,用户受到错误的指引操作导致产品出问题。

软件可以导致安全问题,但也可以利用软件来做一些保护,提升产品安全。例如:限制最长的加热时间,限制最长的制水时间,判断参数是否有超出传感范围并作出保护等等。

软件本身改起来,成本没那么高,占有的资源相对来说比较小。所以我们在产品设计上,可以考虑在软件上做一些防护,提升产品安全。

本文为《软件可靠性简介》培训课程中摘录的公开内容,关注微信公众号“永恒之地”,后台回复“软件可靠性”,下载培训课件。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值