白盒测试在西电捷通平台鉴别通用组件PAI中的应用

西电捷通安全测试研究

引言  有人说,每个成功的产品背后都有一群伟大而又出色的测试人员。大学毕业至今,笔者先是从事过五年的软件开发,而后一直做软件测试工作,在高手云集的西电捷通测试团队中算是一枚经验丰富的老兵了。在测试生涯步入第十个年头时,我接到平台鉴别(Platform Authentication Infrastructure, PAI)通用组件的测试任务。

关键词  白盒测试  平台鉴别通用组件 PAI

 

平台鉴别通用组件是可信网络连接的核心基础组件,提供包含平台身份鉴别和完整性评估在内的平台鉴别安全服务,可被三元对等(Tri-elementPeer Architecture, TePA)网络安全技术架构下的其他网络安全协议套件集成,构建更高安全级别的安全可信网络产品。

由此可见,平台鉴别通用组件未来应用前景非常广泛,团队上下均非常重视,可以说对于推动公司技术进步意义深远。接到平台鉴别通用组件测试任务后,刚开始内心有些小激动,不过更多时候感受到的是责任平台鉴别通用组件是一个公共模块,本身不能运行,无法应用常规的系统测试方法进行测试,此类产品测试在业内是公认的难题,测试难度之大可想而知。经过仔细分析和研究,我们测试团队决定采用对源码做白盒测试,同时项目组开发辅助测试框架,计划待平台鉴别通用组件运行起来后进行PAI协议栈测试。

1 平台鉴别通用组件的逻辑架构和协议流程

平台鉴别通用组件的逻辑架构如下:

 

图1 平台鉴别通用组件的逻辑架构图

平台鉴别通用组件有4个模块(在图1中以数字序号标出):分别是PAI安全协议栈、EPS评估策略服务组件、IMC完整性度量收集框架和IMV完整性度量验证框架。这4个模块分别组成3个实体:AR访问请求者、AC访问控制器和PM策略管理器。这3个实体间进行消息交互,就是下面的PAI协议流程图:


图2   PAI协议流程图

2 平台鉴别通用组件测试实战第一步:白盒测试之静态检查

白盒测试的静态检查,主要关注3点。一是检查编码风格是否符合要求;二是检查是否使用了strlen,strcpy,fgets等不安全的库函数;三是检查是否存在数组越界、缓冲区溢出、内存泄漏等内存管理问题。

本次测试实战,共启用了1321条静态检查规则,对平台鉴别通用组件做全方位的静态检查。这1321条静态检查规则,涵盖了包括汽车产业软件可靠性协会(MISRA)以及世界各大电信设备制造商等提出的C/C++开发标准和规范。其中有109条静态检查规则,是根据西电捷通对编码规范的特有要求,测试团队自主开发并应用到测试中的。

3 平台鉴别通用组件测试实战第二步:白盒测试之动态单元测试

在做动态单元测试前,最容易被忽视的一点是程序实现与设计的一致性检查。要先根据概要设计和详细设计文档,核对程序实现的正确性。也就是说,要先确认是否在做正确的事,然后再检查是否把事做正确了。

白盒测试的动态单元测试,关键是针对函数设计测试用例。对于单个函数来说,设计测试用例的关注点主要是入参合法性检查、返回值检查以及各种逻辑路径覆盖。

本次测试实战,平台鉴别通用组件中的每个函数,平均对应有测试团队开发的30个测试用例对其进行动态单元测试。测试团队开发测试用例的测试代码行数,接近10倍于平台鉴别通用组件的源码行数。

4 平台鉴别通用组件测试实战第三步:PAI协议栈测试

PAI协议栈测试的难点在于,除了按正常的PAI协议流程要能跑通外,还要验证以下异常情况下能否正确处理:

l  在收到异常消息,比如PM应接收消息3,却收到了消息1,能否正确处理?

l  收到的消息是经过非法篡改的伪造包,能否正确处理?

l  收到重复的包怎么处理?有没有抗重放攻击的手段?

l  等待的响应包一直收不到,有没有超时处理机制?

l  在短时间内收到海量的消息时,是否会导致异常崩溃?

常规测试手段根本没办法验证上述异常情况,那么下面要出场的就是测试团队自主开发的秘密武器mySender。mySender是一个发包测试工具,使用mySender,可以很容易的验证上述异常情况下PAI协议栈能否正常工作。

具体测试方法是先用网络抓包工具抓取PAI消息,然后将PAI消息导入到mySender。这样mySender就可以模拟AR、AC或PM任何一个实体,以指定顺序/速率向目标设备发送指定的PAI消息。mySender还可以对PAI消息进行编辑,生成篡改后的非法PAI消息。下面是mySender模拟AC,向PM发起合法/非法消息混合海量攻击的测试配置图。


       图3  mySender典型测试配置图

mySender模拟访问控制器AC,可以同时对访问请求者AR和策略管理器PM发起PAI协议栈测试。如图4所示,mySender分别向AR和PM发送合法PAI消息、篡改后的非法PAI消息、重复的PAI消息以及短时间内发送海量PAI消息,以验证AR和PM的PAI协议栈能否可靠工作。


图4 PAI协议栈测试示意图

类似的mySender可以模拟访问请求者AR或者策略管理器PM,对访问控制器AC发起PAI协议栈测试。

5 结论

本次平台鉴别通用组件测试收获颇丰,引入了包括白盒测试、协议栈测试在内的集成化的测试方式。对于西电捷通测试团队而言,我们最大收获在于认知。我们认为对于此类自身不能运行的协议栈产品,白盒测试是必不可少的测试手段。同时,根据协议栈流程,贴身打造协议栈测试工具,来验证异常情况下协议栈能否正常工作,是确保产品稳定可靠、品质卓越的重要手段。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值