您位于: 首页 OWASP峰会 OWASP2010中国峰会 郭涛:漏洞分析与软件安全保障

郭涛:漏洞分析与软件安全保障

 

中国信息安全测评中心副总工程师郭涛博士

 

演讲实录:各位来宾中午好!我的演讲分为三个部分。

 

一、信息安全现状。

 

(一)几个小问题。对于专家也好,对于我们的爸爸妈妈也好,这几个问题没有可以避免。

 

(二)这是几个信息安全的事件。

 

(三)信息安全的几个特点,可以用几句话描述一下。第一,信息安全环境越来越复杂,我们第一个阶段做信息化的建设,第二个阶段做信息化过程中的 安全问题,到现在经过近十年的发展为什么说我们现在的信息安全环境越来越复杂?第二,现在黑客的攻击越来越容易,攻击效果会越来越好。现在漏洞的利用速度 越来越快。

 

二、引发的几点思考。

 

第一,互联网时代我们投入大量的经费、人力、物力,,但是互联网时代的信息安全的根源在哪里?互联网的开放性和互联性决定其先天就是一个不安全 不可信的计算环境。网络中和主机上的软件普遍存在漏洞,使得普通网民缺乏信心。软件作为一种"手工制品"存在缺陷难以避免,软件漏洞成为当前信息化发展的 焦点问题,甚至可以说引发了下一轮"软件危机".实际上软件开发过程是人的语言转换过程,把人的思想经过若干个步骤分层次由不同的人员把它转换成软件,实 际在这个过程中任何环节都可能引起漏洞。

 

我们来看一组数据,软件开发过程中通常会有大量的全国政协,普通软件工程师一般的缺陷是50-250个。国外的一组统计数据,左边这个图是 100万个功能点,普通的项目的缺陷的数据是2000多,缺陷的数据是3000多,平均是15000多。右边图表明的是缺陷发生的概念,100万个功能 点,应用软件占45%.所以漏洞和软件的缺陷一定是普遍存在的,它的出现有其必然性。

 

这些年除了我们信息化过程中投入很多资金和精力做防火墙等等这样一些反恐的防护设备。最近几年我们国家对信息安全非常重视,做了很多信息安全的 工作,但是到现在信息安全的问题还有很多没有问题。软件的核心问题是软件自身的漏洞,软件漏洞它实际上是一种可持续的,它的根源在于它的前世,它的前世就 是在软件编制过程中的源代码。所以当前我们应该把信息安全不仅仅关注于基础运营之后事后的检测,更应该关注我们在软件开发或者软件交付的节点做质量安全把 关。如果从源代码深层次把关的话,一方面可以查到根源问题,第二可以在软件开发生命周期的越早期发现问题。当然软件中的源代码中可能会发现一些新的其他软 件或者其他方式的产品。

 

这里有一张图,同样说明一个问题,就是我们在软件整个需求设计过程中,缺陷管理成本与软件生命周期有关系,越往后我们的损失会越大。当然我们从 源代码层次来找软件缺陷,这里面有一些理论说明可以有效找到代码的缺陷。比如说美国国防安全部和开源合作做了一些项目,美国这边有一个SAMATE的项目 也说明这个行业在高速发展过程中。

 

第二,谁来为我们的安全把关?这个软件是由谁来开发的?当前业界有一个OEM的问题,我们并不是说OEM不好,关键是OEM过程中本身有没有关 注软件的把关。我们来看一下美国的一组统计数据,这个统计数据都是一些包括恶意代码等等,这个比例是比较高的,这个说明什么问题?这个不是普通软件的因为 缺陷所带来的漏洞,这个带有人为的恶意的行为,往往这种危害比我们前面谈到软件本身质量的问题大得多。

 

那么如何解决软件安全的保障?第一个是要考虑来源安全,就是这个软件是不是作为研发。第二个是质量安全,我们在开发过程中和设计过程中,通过一 些标准流程,通过一些安全开发的工具,去保证我们的软件质量比较高,避免一些不必要的漏洞。第三个是行为安全,人为设置的安全漏洞,如逻辑炸弹、隐藏管理 接口等。除了这三个方面我们需要让用户得到安全信心以外,所有这些观点必须贯彻到信息系统的建设中。

 

前面说到了国外公司对自身软件安全把关上存在很多不足,国内软件企业相对来说在软件安全的把关上所做的投入也是不够的。所以第三方的在软件使用 之前,或者在信息系统交付之前,对软件有一定的把关尤为重要。我们可以看一下这张图,实际上我们通常所关注的是安全机制和安全性能,我们根据一定规则一些 预期的行为。实际上对漏洞的检测是一些对预期的行为,因此我们应该把传统的工作深入到深入的漏洞分析。回顾到前面所谈到的,包括源代码本身的安全,包括是 不是自己开发的,包括在开发过程中的一些培训,包括开发过程的一个安全的监督等等,这些工作显得尤为重要。这个案例是某软件源代码里面有很多安全缺陷,比 如我们日常生活中用的证券客户端,比如OEM的产品也存在一些历史漏洞。

 

总结一下,也就是说我们的安全实际上是开发方、用户方以及第三方检测机构和国家相关单位共同努力,把我们的安全从被动的事后防护推向到主动的先天的防范。