本书将软件面临的安全威胁分为三大类:软件自身的安全(软件漏洞)、恶意代码及软件侵权。本节将概要介绍这3类威胁,后续第2~4部分将分别介绍针对这3类威胁的解决方案。
软件漏洞通常被认为是软件生命周期中与安全相关的设计错误、编码缺陷及运行故障等。
说明:
本书中并不对软件漏洞/脆弱点、软件缺陷及软件错误等概念严格区分。
一方面,软件漏洞可能会造成软件在运行过程中出现错误结果或运行不稳定、崩溃等现象,甚至引起死机等情况。举例如下。
●操作系统启动时发现未能驱动的硬件而导致蓝屏。
●应用软件由于存在内存泄露,运行时系统内存消耗越来越大,直至最后崩溃。
●网络软件由于对用户并发数考虑不周,导致用户数量超出预计,程序运行错误。
●多线程软件对线程同步考虑不周,导致系统因资源死锁而死机。
事实上,软件漏洞可以引发后果严重的系统故障,从而造成重大安全事故。例如,应用于航天、铁路、通信、交通、军事、过程控制和医疗等领域的任务关键软件,存在设计错误、编码缺陷和运行故障等不同漏洞形式时,会造成严重的后果。
另一方面,软件漏洞会被黑客发现和利用,进而实施窃取隐私信息、甚至破坏系统等攻击行为,举例如下。
●软件使用明文存储用户口令,黑客通过数据库漏洞直接获取口令明文。
●软件存在缓冲区溢出漏洞,黑客利用溢出攻击而获得远程用户权限。
●软件对用户登录的安全验证强度太低,黑客假冒合法用户登录。
●软件对用户的输入没有严限制,被黑客利用后执行系统删除命令,从而导致系统被破坏。
图1-2展示了一个从发现漏洞到实施攻击的过程。
图1-2 漏洞利用过程
利用软件漏洞可以实施高级可持续性攻击(Advanced Persistent Threat,APT),从而引发国家安全事件。本章【案例1】中提及的震网病毒,据分析就是利用了7个漏洞实施的,其中5个针对Windows系统的漏洞,另外2个针对西门子SIMATIC WinCC系统。在针对Windows的5个漏洞中,震网病毒采用了复杂的多层攻击技术,利用打印机后台程序服务漏洞(CNNVD-201009-132)实现在内部局域网中的传播,同时利用4个零日漏洞对Windows操作系统进行攻击,并利用另外1个快捷方式文件解析漏洞(CNNVD-201007-238)触发攻击。震网病毒主要通过U盘和局域网进行传播,如果企业没有针对U盘等可移动设备进行严格管理,有人在局域网内使用了带病毒U盘,则整个网络都会被感染。震网病毒对伊朗等国家的核设施造成的危害不亚于1986年发生的切尔诺贝利核电站事故,最终造成伊朗核计划拖后了2年,我国近500万网民及多个行业的领军企业也遭受了此病毒的攻击。
本书第2部分将用9章的篇幅介绍如何运用SDL尽可能地消除软件漏洞,实现软件安全开发。
拓展阅读
读者要想了解更多软件缺陷和错误带来的严重后果,可以阅读以下书籍资料。
[1]金钟河.致命BUG:软件缺陷的灾难与启示[M].叶蕾蕾,译.北京:机械工业出版社,2016.
恶意代码已经成为攻击计算机信息系统主要的载体,攻击威力越来越大、攻击范围越来越广。什么是恶意代码?它与常说的传统计算机病毒有怎样的关系?
恶意代码(Malicious Software,Malware)是在未被授权的情况下,以破坏软硬件设备、窃取用户信息、干扰用户正常使用、扰乱用户心理为目的而编制的软件或代码片段。
定义指出,恶意代码是软件或代码片段,其实现方式可以有多种,如二进制执行文件、脚本语言代码、宏代码或是寄生在其他代码或启动扇区中的一段指令。
恶意代码包括计算机病毒(Computer Virus)、蠕虫(Worm)、特洛伊木马(Trojan Horse)、后门(Back Door)、内核套件(Rootkit)、间谍软件(Spyware)、恶意广告(Dishonest Adware)、流氓软件(Crimeware)、逻辑炸弹(Logic Bomb)、僵尸网络(Botnet)、网络钓鱼(Phishing)、恶意脚本(Malice Script)及垃圾信息(Spam)等恶意的或令人讨厌的软件及代码片段。近几年危害甚广的勒索软件(Ransomware)也属于恶意代码范畴。
由于人们经常面对的恶意代码攻击大多结合了蠕虫、木马等多种类型的特点,例如,2017年5月12日全球大爆发的WannaCry勒索软件攻击,就具有主动扫描、远程漏洞利用等蠕虫和木马的一些特点,因此大家在称呼WannaCry勒索软件时,又称其为勒索病毒或是木马。实际上,恶意代码的各个类型还是具有比较明显的特点的。本书将在第3部分第12章介绍计算机病毒、蠕虫、木马、后门、Rootkit及勒索软件等主要类型的特点、基本工作原理和防治技术。
计算机软件产品开发完成后复制成本低、复制效率高,所以往往成为版权侵犯的对象。
版权,又称著作权或作者权,是指作者对其创作的作品享有的人身权和财产权。人身权包括发表权、署名权、修改权和保护作品完成权等;财产权包括作品的使用权和获得报酬权。
常见的软件侵权行为包括以下几种。
●未经软件著作权人许可,发表、登记、修改或翻译其软件。
●将他人软件作为自己的软件发表或者登记,在他人软件上署名或者更改他人软件上的署名。
●未经合作者许可,将与他人合作开发的软件作为自己单独完成的软件发表或者登记。
●复制或者部分复制著作权人的软件。
●向公众发行、出租或通过信息网络传播著作权人的软件。
●故意避开或者破坏著作权人为保护其软件著作权而采取的技术措施。
●故意删除或者改变软件权利管理电子信息。
●转让或者许可他人行使著作权人的软件著作权。
在软件侵权行为中,对于一些侵权主体比较明确的,一般通过法律手段予以解决,但是对于一些侵权主体比较隐蔽或分散的,政府管理部门受时间、人力和财力诸多因素的制约,还不能进行全面管制,因此有必要通过技术手段来保护软件。本书将在第4部分第14章介绍软件知识产权保护的法律途径和技术措施。