《软件测试的系统审计方法与应用.pptx》由会员分享,可在线阅读,更多相关《软件测试的系统审计方法与应用.pptx(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件测试的系统审计方法和有向图算法在金融审计中的应用主讲人:主讲人: 陈宇陈宇8/30/20221概 述v近年来,随着计算机审计的深入开展,成都特近年来,随着计算机审计的深入开展,成都特派办在传统的基于派办在传统的基于SQLSQL的数据审计领域之外,的数据审计领域之外,扩宽思路,积极地开展一些新的计算机审计尝扩宽思路,积极地开展一些新的计算机审计尝试,尤其是在信息化程度高的金融领域取得了试,尤其是在信息化程度高的金融领域取得了不错的效果。不错的效果。v20072007年,我办在年,我办在20072007年对中国人民财产保险公年对中国人民财产保险公司的审计中,对某保险公司的信息系统尝试了司的审计
2、中,对某保险公司的信息系统尝试了初步的初步的信息系统审计信息系统审计。v20082008年在对某商业银行的审计中,使用年在对某商业银行的审计中,使用有向图有向图的环查找算法的环查找算法,有效地解决了多家企业循环担,有效地解决了多家企业循环担保的分析和查找。保的分析和查找。 8/30/20222保险公司信息系统审计初步尝试v遇到的问题:数据量大,关键是遇到的问题:数据量大,关键是每笔保单每笔保单的金额偏小的金额偏小,这与银行的数据迥异。这一,这与银行的数据迥异。这一特点就决定了保险公司的取证最好从特点就决定了保险公司的取证最好从“面面”上而不是从上而不是从“点点”上取证。上取证。v根据这一特点,
3、审计人员从前后台同时着根据这一特点,审计人员从前后台同时着手,分析保险公司系统可能存在的漏洞以手,分析保险公司系统可能存在的漏洞以及该漏洞可能导致的问题。及该漏洞可能导致的问题。v这样的好处是能达到较高的覆盖率,发现这样的好处是能达到较高的覆盖率,发现普遍性的问题,对保险公司加强管理堵塞普遍性的问题,对保险公司加强管理堵塞漏洞有好处。漏洞有好处。8/30/20223保险公司信息系统基本架构保单录入子系统保单批改子系统保单注销子系统保单理赔子系统业务系统收费子系统减退费子系统报表子系统统计子系统财务系统数据传数据传输接口输接口8/30/20224白盒测试v白盒测试白盒测试是软件测试中最常用的方法
4、之一,是软件测试中最常用的方法之一,其基本思想是把待测试的模块看做一个其基本思想是把待测试的模块看做一个能能够看到内部结构的够看到内部结构的“白盒子白盒子”,设计测试,设计测试用例覆盖所有分支,测试模块的功能性和用例覆盖所有分支,测试模块的功能性和健壮性。健壮性。正确数据一正确输出正确数据二正确输出错误数据报错返回8/30/20225对保单批改子系统进行白盒测试v审计人员从审计人员从前台前台登录系统,录入了若干张登录系统,录入了若干张测试保单,然后尝试对这些保单的各个要测试保单,然后尝试对这些保单的各个要素进行各种类型的批改。素进行各种类型的批改。v例一:例一:批改保单的费率批改保单的费率,随
5、意上下浮保单,随意上下浮保单费率,尤其是费率,尤其是下浮到保监会规定的最低费下浮到保监会规定的最低费率之下率之下,看系统是否报错。,看系统是否报错。v例二:例二:批改保单的保额批改保单的保额。针对一些费率和。针对一些费率和保额有关的保险,随意增加或减少保额,保额有关的保险,随意增加或减少保额,看看保险费率是否随之变化保险费率是否随之变化,相应的保费是,相应的保费是否会随之改变。否会随之改变。8/30/20226发现漏洞!v我们在我们在批改终保日期批改终保日期的环节发现了漏洞!的环节发现了漏洞!v漏洞为:可以对一张保单的终保日期进行漏洞为:可以对一张保单的终保日期进行随意批改,随意批改,将保单的
6、终保日期提前到当前将保单的终保日期提前到当前日期之前日期之前!对此保险公司的系统竟然完全!对此保险公司的系统竟然完全没有控制!没有控制!v例如:一张例如:一张20072007年年1 1月月1 1日至日至20072007年年1212月月3131日的保单,竟然可以在日的保单,竟然可以在20072007年年1212月月3030日做日做批改,将保单的终保日期提前到批改,将保单的终保日期提前到20072007年年1 1月月2 2日日 !8/30/20227批改终保日期漏洞图示批改日期批改日期终保日期日期起保日期日期如果简单这样退保,等于将终保日期提前到批改日期。如果简单这样退保,等于将终保日期提前到批改
7、日期。原终保日期日期能退出的保费8/30/20228批改终保日期漏洞图示批改日期批改日期起保日期日期终保日期系统漏洞使得能把终保日期提前到批改生效日期之前系统漏洞使得能把终保日期提前到批改生效日期之前原终保日期能退出的保费8/30/20229到后台数据库中查询v发现这一问题后,审计人员到白宣布公司发现这一问题后,审计人员到白宣布公司后台数据库去查询所有后台数据库去查询所有终保日期早于批改终保日期早于批改生效日期,且有退保记录生效日期,且有退保记录的保单。的保单。v发现可以保单后延伸审计,发现该公司某发现可以保单后延伸审计,发现该公司某支公司存在使用这种手法违规退保,套取支公司存在使用这种手法违
8、规退保,套取保费数百万的犯罪事实,犯罪嫌疑人已被保费数百万的犯罪事实,犯罪嫌疑人已被逮捕。逮捕。v审计后,保险公司针对该漏洞打了审计后,保险公司针对该漏洞打了补丁补丁,及时堵塞了这一漏洞。及时堵塞了这一漏洞。8/30/202210对保单录入子系统进行白盒测试v我们在对保单录入子系统进行白盒测试的我们在对保单录入子系统进行白盒测试的时候发现:车险保单在录入时可以时候发现:车险保单在录入时可以将个人将个人车辆的投保人录入为单位车辆的投保人录入为单位,从而享受更低,从而享受更低的单位车团保险费率,对此系统无控制!的单位车团保险费率,对此系统无控制!v有了这一发现后,审计人员在后台数据库有了这一发现后
9、,审计人员在后台数据库中查询,发现了该公司在全国范围内有中查询,发现了该公司在全国范围内有6060余万份余万份“个人用车个人用车”保单是以保单是以“单位用车单位用车”名义承保,直接导致少收保费约名义承保,直接导致少收保费约1.71.7亿元。亿元。v延伸调查发现:很多保险公司以这种方法延伸调查发现:很多保险公司以这种方法降低保费招揽客户降低保费招揽客户,在保险市场上进行不,在保险市场上进行不正当竞争。正当竞争。 8/30/202211针对接口进行黑盒测试保单录入子系统保单批改子系统保单注销子系统保单理赔子系统业务系统收费子系统减退费子系统报表子系统统计子系统财务系统数据传数据传输接口输接口8/3
10、0/202212对数据传输接口进行黑盒测试v审计人员对数据传输接口进行黑盒测试,审计人员对数据传输接口进行黑盒测试,首先在业务系统录入若干测试保单,然首先在业务系统录入若干测试保单,然后进行批改、注销、退保等操作,后进行批改、注销、退保等操作,看数看数据是否能够正确地传入财务系统据是否能够正确地传入财务系统。v接下来审计人员在财务系统中对保单进接下来审计人员在财务系统中对保单进行操作,比如删除保单缴费记录,注销行操作,比如删除保单缴费记录,注销保单等,保单等,看数据能否正确地传回业务系看数据能否正确地传回业务系统统。8/30/202213发现漏洞!v我们发现该系统的数据传输是我们发现该系统的数
11、据传输是单向单向的!的!v业务系统的数据可以从传输接口顺利而准业务系统的数据可以从传输接口顺利而准确地传到财务系统;但对财务系统进行的确地传到财务系统;但对财务系统进行的操作则不能反过来传输到业务系统。操作则不能反过来传输到业务系统。业务系统财务系统8/30/202214漏洞导致的问题v发现这一漏洞后,审计人员对业务系统和发现这一漏洞后,审计人员对业务系统和财务系统的保单进行了比对,发现了该公财务系统的保单进行了比对,发现了该公司的某分公司采用司的某分公司采用在财务系统中修改保单在财务系统中修改保单保费或退保保费或退保的方式来实现的方式来实现“暗折暗折”,20062006年年共违规批退保费年年
12、共违规批退保费60006000余万元。余万元。v比如有一家单位来对比如有一家单位来对1010辆车进行投保,这辆车进行投保,这家公司在业务系统不能打折的情况下,在家公司在业务系统不能打折的情况下,在财务系统中修改保费为应收保费的财务系统中修改保费为应收保费的80%80%,实,实现八折的暗折!现八折的暗折!v审计后,保险公司已针对该问题打了审计后,保险公司已针对该问题打了补丁补丁。8/30/202215对分公司和总公司数据传输接口的黑盒测试保险公司网络拓扑结构分公司前台分公司前台省公司数据库服务器省公司数据库服务器总公司数据库服务器总公司数据库服务器8/30/202216发现漏洞!v我们抽查了三家
13、省公司,将他们服务器上我们抽查了三家省公司,将他们服务器上的数据与总公司的数据进行了比对,发现的数据与总公司的数据进行了比对,发现存在存在不一致不一致的地方!的地方!v经过分析发现:省公司和总公司之间的数经过分析发现:省公司和总公司之间的数据传输接口只有简单的数据传送功能,在据传输接口只有简单的数据传送功能,在大量的数据传输时,对于可能发生的大量的数据传输时,对于可能发生的传输传输错误错误没有任何处理!没有任何处理!v进一步延伸调查,发现进一步延伸调查,发现20062006年的所有保单年的所有保单中,由于数据传输出错导致信息不符的保中,由于数据传输出错导致信息不符的保单有单有350453504
14、5张,涉及金额张,涉及金额40004000余万元。余万元。 8/30/202217我们的建议:加入校验和错误重传机制数据校验码省公司数据库服务器省公司数据库服务器总公司数据库服务器总公司数据库服务器数据传输接口数据传输接口校验码正确校验码正确数据校验码错误校验码错误要求重传8/30/202218跳出SQL的局限,找出多重循环担保v在数据审计领域,我们在整合利用已有专在数据审计领域,我们在整合利用已有专家经验的同时,也扩宽思路,突破数据库家经验的同时,也扩宽思路,突破数据库结构化查询语言结构化查询语言SQLSQL的限制,积极尝试使用的限制,积极尝试使用程序设计语言,利用数据挖掘等先进的算程序设计
15、语言,利用数据挖掘等先进的算法来进行更深度的数据分析。法来进行更深度的数据分析。 v比较典型的一个例子是我们利用有向图的比较典型的一个例子是我们利用有向图的环查找算法解决了环查找算法解决了N N家企业(家企业(N=2N=2)之间循)之间循环担保的问题。环担保的问题。8/30/202219循环担保问题描述v循环担保,常见的有循环担保,常见的有两家企业之间相互担两家企业之间相互担保保(即(即A A为为B B担保,担保,B B又为又为A A担保)和担保)和三家企三家企业之间循环担保业之间循环担保(A A为为B B担保,担保,B B为为C C担保,担保,C C为为A A担保)的情况。担保)的情况。v循
16、环担保的最终结果是担保落空,形成事循环担保的最终结果是担保落空,形成事实上的信用放款,企业一旦无力偿还贷款,实上的信用放款,企业一旦无力偿还贷款,贷款风险全部由银行承担。贷款风险全部由银行承担。 v分析循环担保的专家经验最先由京津冀办分析循环担保的专家经验最先由京津冀办董永强同志提出,能很好地解决董永强同志提出,能很好地解决3 3家以内企家以内企业循环担保的问题。业循环担保的问题。8/30/202220已有方法核心是基于SQL的表自连接贷款人 担保人A B A D B C C A D A 两家企业相互担保两家企业相互担保:Select *From 贷款表贷款表 as a, 贷款表贷款表 as
17、bWhere a.贷款人贷款人=b.担保人担保人 and a.担保人担保人=b.贷款人贷款人三家企业循环担保三家企业循环担保:Select *From 贷款表贷款表 as a, 贷款表贷款表 as b, 贷款表贷款表 as cWhere a.贷款人贷款人=b.担保人担保人 and b.贷款人贷款人=c.担保人担保人 and c.贷款人贷款人=a.担保人担保人B E 8/30/202221已有方法存在的不足v已有的方法没有相应的已有的方法没有相应的数学模型数学模型,导致其,导致其难以推广到三家以上企业循环担保的情况。难以推广到三家以上企业循环担保的情况。v已有的方法是已有的方法是基于基于SQLS
18、QL的,由于的,由于SQLSQL自身的自身的不足也导致该方法难以推广:两家企业相不足也导致该方法难以推广:两家企业相互担保要互担保要写一次代码写一次代码,三家企业循环担保,三家企业循环担保要要重写一次代码重写一次代码,四家企业循环担保还要,四家企业循环担保还要重写一次代码重写一次代码,且循环担保的企业越多,且循环担保的企业越多,代码越代码越复杂复杂,出错的可能也越大。,出错的可能也越大。8/30/202222解决方案:跳出SQL,首先建模v 针对已有方法存在的不足,我们对新方法针对已有方法存在的不足,我们对新方法的要求是:的要求是:1.1. 有良好的数学模型,便于推广到三家以上有良好的数学模型
19、,便于推广到三家以上企业循环担保的情况。企业循环担保的情况。2.2. 代码简单可复用。只运行一次就可以找出代码简单可复用。只运行一次就可以找出从两家相互担保到任意多家循环担保的所从两家相互担保到任意多家循环担保的所有记录。不用因为循环担保的企业家数改有记录。不用因为循环担保的企业家数改变而修改代码。变而修改代码。8/30/202223使用有向图对担保关系建模v图分为图分为有向图有向图和和无向图无向图两种,图的边是两种,图的边是有有方向方向的这种图称为有向图,否则为无向图。的这种图称为有向图,否则为无向图。节点节点A节点节点B节点节点C节点节点A节点节点B节点节点C8/30/202224使用有向
20、图对担保关系建模v我们将我们将企业抽象为有向图的节点企业抽象为有向图的节点,每一家企业,无论是贷款人还是担每一家企业,无论是贷款人还是担保人,都用一个节点来表示。保人,都用一个节点来表示。v我们将我们将担保关系抽象为从担保人担保关系抽象为从担保人指向贷款人的一条有向边指向贷款人的一条有向边。8/30/202225有向图建模演示贷款人 担保人A B A D B C C A D A B E 节点节点A节点节点B节点节点D节点节点C节点节点E8/30/202226循环担保问题转化为求环的问题v查找循环担保实际上就转化为了在有向图查找循环担保实际上就转化为了在有向图中查找环(回路或强连通子图)。中查找
21、环(回路或强连通子图)。节点节点A节点节点B节点节点D节点节点C节点节点E该有向图中存在两个环该有向图中存在两个环A-B-C-AA-D-A8/30/202227有向图中环的搜索算法v在有向图中搜索环的算法常见的有两在有向图中搜索环的算法常见的有两种:一种是种:一种是深度优先搜索算法深度优先搜索算法,一种,一种是将图转换成矩阵后用是将图转换成矩阵后用WarshallWarshall算法算法。v深度优先搜索算法是从图的一个节点深度优先搜索算法是从图的一个节点开始,进行深度优先搜索,当回到开开始,进行深度优先搜索,当回到开始的节点时就找到了环,如果回来中始的节点时就找到了环,如果回来中间访问过的节点,或没有路径可走,间访问过的节点,或没有路径可走,则结束本次搜索。则结束本次搜索。8/30/202228深度优先搜索算法演示节点节点A节点节点B节点节点D节点节点C节点节点E此时回到出发的节点此时回到出发的节点A找到环找到环A-B-C-A从节点从节点C出发已无其它出发已无其它路径,退回到节点路径,退回到节点B到达节点到达节点E后没有其它路后没有其它路径可走,退回到节点径可走,退回到节点B,此时从节点此时从节点B出发的所有出发的所有路径都走完,再退回节点路径都走完,再退回节点A,本次搜索结束。,本次搜索结束。Warshall算法不再赘述算法不再赘述8/30/2022298/30/202230
限制150内