軟件測試的系統(tǒng)審計方法與應用



Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,*,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,*,單擊此處編輯母版標題樣式,軟件測試的系統(tǒng)審計方法和有向圖算法在金融審計中的應用,主講人:陳宇,28.11.2024,1,概 述,近年來,隨著計算機審計的深入開展,成都特派辦在傳統(tǒng)的基于SQL的數(shù)據審計領域之外,擴寬思路,積極地開展一些新的計算機審計嘗試,尤其是在信息化程度高的金融領域取得了不錯的效果2007年,我辦在2007年對中國人民財產保險公司的審計中,對某保險公司的信息系統(tǒng)嘗試了初步的,信息系統(tǒng)審計,2008年在對某商業(yè)銀行的審計中,使用,有向圖的環(huán)查找算法,,有效地解決了多家企業(yè)循環(huán)擔保的分析和查找28.11.2024,2,審計署駐成都特派員辦事處,保險公司信息系統(tǒng)審計初步嘗試,遇到的問題:數(shù)據量大,關鍵是,每筆保單的金額偏小,,這與銀行的數(shù)據迥異這一特點就決定了保險公司的取證最好從“,面,”上而不是從“,點,”上取證。
根據這一特點,審計人員從前后臺同時著手,分析保險公司系統(tǒng)可能存在的漏洞以及該漏洞可能導致的問題這樣的好處是能達到較高的覆蓋率,發(fā)現(xiàn)普遍性的問題,對保險公司加強管理堵塞漏洞有好處28.11.2024,3,審計署駐成都特派員辦事處,保險公司信息系統(tǒng)基本架構,保單錄入子系統(tǒng),保單批改子系統(tǒng),保單注銷子系統(tǒng),保單理賠子系統(tǒng),業(yè)務系統(tǒng),收費子系統(tǒng),減退費子系統(tǒng),報表子系統(tǒng),統(tǒng)計子系統(tǒng),財務系統(tǒng),數(shù)據傳,輸接口,28.11.2024,4,審計署駐成都特派員辦事處,白盒測試,白盒測試,是軟件測試中最常用的方法之一,其基本思想是把待測試的模塊看做一個,能夠看到內部結構的“白盒子”,,設計測試用例覆蓋所有分支,測試模塊的功能性和健壯性正確數(shù)據一,正確輸出,正確數(shù)據二,正確輸出,錯誤數(shù)據,報錯返回,28.11.2024,5,審計署駐成都特派員辦事處,對保單批改子系統(tǒng)進行白盒測試,審計人員從,前臺,登錄系統(tǒng),錄入了若干張測試保單,然后嘗試對這些保單的各個要素進行各種類型的批改例一:,批改保單的費率,,隨意上下浮保單費率,尤其是,下浮到保監(jiān)會規(guī)定的最低費率之下,,看系統(tǒng)是否報錯例二:,批改保單的保額,針對一些費率和保額有關的保險,隨意增加或減少保額,看,保險費率是否隨之變化,,相應的保費是否會隨之改變。
28.11.2024,6,審計署駐成都特派員辦事處,發(fā)現(xiàn)漏洞!,我們在,批改終保日期,的環(huán)節(jié)發(fā)現(xiàn)了漏洞!,漏洞為:可以對一張保單的終保日期進行隨意批改,,將保單的終保日期提前到當前日期之前,!對此保險公司的系統(tǒng)竟然完全沒有控制!,例如:一張2007年1月1日至2007年12月31日的保單,竟然可以在2007年12月30日做批改,將保單的終保日期提前到2007年1月2日!,28.11.2024,7,審計署駐成都特派員辦事處,批改終保日期漏洞圖示,批改日期,終保,日期,起保,日期,如果簡單這樣退保,等于將終保日期提前到批改日期原終保,日期,能退出的保費,28.11.2024,8,審計署駐成都特派員辦事處,批改終保日期漏洞圖示,批改日期,起保,日期,終保日期,系統(tǒng)漏洞使得能把終保日期提前到批改生效日期之前,原終保日期,能退出的保費,28.11.2024,9,審計署駐成都特派員辦事處,到后臺數(shù)據庫中查詢,發(fā)現(xiàn)這一問題后,審計人員到白宣布公司后臺數(shù)據庫去查詢所有,終保日期早于批改生效日期,且有退保記錄,的保單發(fā)現(xiàn)可以保單后延伸審計,發(fā)現(xiàn)該公司某支公司存在使用這種手法違規(guī)退保,套取保費數(shù)百萬的犯罪事實,犯罪嫌疑人已被逮捕。
審計后,保險公司針對該漏洞打了,補丁,,及時堵塞了這一漏洞28.11.2024,10,審計署駐成都特派員辦事處,對保單錄入子系統(tǒng)進行白盒測試,我們在對保單錄入子系統(tǒng)進行白盒測試的時候發(fā)現(xiàn):車險保單在錄入時可以,將個人車輛的投保人錄入為單位,,從而享受更低的單位車團保險費率,對此系統(tǒng)無控制!,有了這一發(fā)現(xiàn)后,審計人員在后臺數(shù)據庫中查詢,發(fā)現(xiàn)了該公司在全國范圍內有60余萬份“個人用車”保單是以“單位用車”名義承保,直接導致少收保費約1.7億元延伸調查發(fā)現(xiàn):很多保險公司以這種方法,降低保費招攬客戶,,在保險市場上進行不正當競爭28.11.2024,11,審計署駐成都特派員辦事處,針對接口進行黑盒測試,保單錄入子系統(tǒng),保單批改子系統(tǒng),保單注銷子系統(tǒng),保單理賠子系統(tǒng),業(yè)務系統(tǒng),收費子系統(tǒng),減退費子系統(tǒng),報表子系統(tǒng),統(tǒng)計子系統(tǒng),財務系統(tǒng),數(shù)據傳,輸接口,28.11.2024,12,審計署駐成都特派員辦事處,對數(shù)據傳輸接口進行黑盒測試,審計人員對數(shù)據傳輸接口進行黑盒測試,首先在業(yè)務系統(tǒng)錄入若干測試保單,然后進行批改、注銷、退保等操作,,看數(shù)據是否能夠正確地傳入財務系統(tǒng),接下來審計人員在財務系統(tǒng)中對保單進行操作,比如刪除保單繳費記錄,注銷保單等,,看數(shù)據能否正確地傳回業(yè)務系統(tǒng),。
28.11.2024,13,審計署駐成都特派員辦事處,發(fā)現(xiàn)漏洞!,我們發(fā)現(xiàn)該系統(tǒng)的數(shù)據傳輸是,單向,的!,業(yè)務系統(tǒng)的數(shù)據可以從傳輸接口順利而準確地傳到財務系統(tǒng);但對財務系統(tǒng)進行的操作則不能反過來傳輸?shù)綐I(yè)務系統(tǒng)業(yè)務系統(tǒng),財務系統(tǒng),28.11.2024,14,審計署駐成都特派員辦事處,漏洞導致的問題,發(fā)現(xiàn)這一漏洞后,審計人員對業(yè)務系統(tǒng)和財務系統(tǒng)的保單進行了比對,發(fā)現(xiàn)了該公司的某分公司采用,在財務系統(tǒng)中修改保單保費或退保,的方式來實現(xiàn)“,暗折,”,2006年年共違規(guī)批退保費6000余萬元比如有一家單位來對10輛車進行投保,這家公司在業(yè)務系統(tǒng)不能打折的情況下,在財務系統(tǒng)中修改保費為應收保費的80%,實現(xiàn)八折的暗折!,審計后,保險公司已針對該問題打了,補丁,28.11.2024,15,審計署駐成都特派員辦事處,對分公司和總公司數(shù)據傳輸接口的黑盒測試,保險公司網絡拓撲結構,分公司前臺,省公司數(shù)據庫服務器,總公司數(shù)據庫服務器,28.11.2024,16,審計署駐成都特派員辦事處,發(fā)現(xiàn)漏洞!,我們抽查了三家省公司,將他們服務器上的數(shù)據與總公司的數(shù)據進行了比對,發(fā)現(xiàn)存在,不一致,的地方!,經過分析發(fā)現(xiàn):省公司和總公司之間的數(shù)據傳輸接口只有簡單的數(shù)據傳送功能,在大量的數(shù)據傳輸時,對于可能發(fā)生的,傳輸錯誤,沒有任何處理!,進一步延伸調查,發(fā)現(xiàn)2006年的所有保單中,由于數(shù)據傳輸出錯導致信息不符的保單有35045張,涉及金額4000余萬元。
28.11.2024,17,審計署駐成都特派員辦事處,我們的建議:加入校驗和錯誤重傳機制,數(shù)據,校驗碼,省公司數(shù)據庫服務器,總公司數(shù)據庫服務器,數(shù)據傳輸接口,校驗碼正確,數(shù)據,校驗碼錯誤,要求重傳,28.11.2024,18,審計署駐成都特派員辦事處,跳出SQL的局限,找出多重循環(huán)擔保,在數(shù)據審計領域,我們在整合利用已有專家經驗的同時,也擴寬思路,突破數(shù)據庫結構化查詢語言SQL的限制,積極嘗試使用程序設計語言,利用數(shù)據挖掘等先進的算法來進行更深度的數(shù)據分析比較典型的一個例子是我們利用有向圖的環(huán)查找算法解決了N家企業(yè)(N=2)之間循環(huán)擔保的問題28.11.2024,19,審計署駐成都特派員辦事處,循環(huán)擔保問題描述,循環(huán)擔保,常見的有,兩家企業(yè)之間相互擔保,(即A為B擔保,B又為A擔保)和,三家企業(yè)之間循環(huán)擔保,(A為B擔保,B為C擔保,C為A擔保)的情況循環(huán)擔保的最終結果是擔保落空,形成事實上的信用放款,企業(yè)一旦無力償還貸款,貸款風險全部由銀行承擔分析循環(huán)擔保的專家經驗最先由京津冀辦董永強同志提出,能很好地解決3家以內企業(yè)循環(huán)擔保的問題28.11.2024,20,審計署駐成都特派員辦事處,已有方法核心是基于SQL的表自連接,貸款人 擔保人,A B,A D,B C,C A,D A,兩家企業(yè)相互擔保,:,Select*,From 貸款表 as a,貸款表 as b,Where a.貸款人=b.擔保人 and,a.擔保人=b.貸款人,三家企業(yè)循環(huán)擔保,:,Select*,From 貸款表 as a,貸款表 as b,貸款表 as c,Where a.貸款人=b.擔保人 and,b.貸款人=c.擔保人 and,c.貸款人=a.擔保人,B E,28.11.2024,21,審計署駐成都特派員辦事處,已有方法存在的不足,已有的方法沒有相應的,數(shù)學模型,,導致其難以推廣到三家以上企業(yè)循環(huán)擔保的情況。
已有的方法是,基于SQL,的,由于SQL自身的不足也導致該方法難以推廣:兩家企業(yè)相互擔保要,寫一次代碼,,三家企業(yè)循環(huán)擔保要,重寫一次代碼,,四家企業(yè)循環(huán)擔保還要,重寫一次代碼,,且循環(huán)擔保的企業(yè)越多,代碼越,復雜,,出錯的可能也越大28.11.2024,22,審計署駐成都特派員辦事處,解決方案:跳出SQL,首先建模,針對已有方法存在的不足,我們對新方法的要求是:,有良好的數(shù)學模型,便于推廣到三家以上企業(yè)循環(huán)擔保的情況代碼簡單可復用只運行一次就可以找出從兩家相互擔保到任意多家循環(huán)擔保的所有記錄不用因為循環(huán)擔保的企業(yè)家數(shù)改變而修改代碼28.11.2024,23,審計署駐成都特派員辦事處,使用有向圖對擔保關系建模,圖分為,有向圖,和,無向圖,兩種,圖的邊是,有方向,的這種圖稱為有向圖,否則為無向圖節(jié)點A,節(jié)點B,節(jié)點C,節(jié)點A,節(jié)點B,節(jié)點C,28.11.2024,24,審計署駐成都特派員辦事處,使用有向圖對擔保關系建模,我們將,企業(yè)抽象為有向圖的節(jié)點,,每一家企業(yè),無論是貸款人還是擔保人,都用一個節(jié)點來表示我們將,擔保關系抽象為從擔保人指向貸款人的一條有向邊,28.11.2024,25,審計署駐成都特派員辦事處,有向圖建模演示,貸款人 擔保人,A B,A D,B C,C A,D A,B E,節(jié)點A,節(jié)點B,節(jié)點D,節(jié)點C,節(jié)點E,28.11.2024,26,審計署駐成都特派員辦事處,循環(huán)擔保問題轉化為求環(huán)的問題,查找循環(huán)擔保實際上就轉化為了在有向圖中查找環(huán)(回路或強連通子圖)。
節(jié)點A,節(jié)點B,節(jié)點D,節(jié)點C,節(jié)點E,該有向圖中存在兩個環(huán),A-B-C-A,A-D-A,28.11.2024,27,審計署駐成都特派員辦事處,有向圖中環(huán)的搜索算法,在有向圖中搜索環(huán)的算法常見的有兩種:一種是,深度優(yōu)先搜索算法,,一種是將圖轉換成矩陣后用,Warshall算法,深度優(yōu)先搜索算法是從圖的一個節(jié)點開始,進行深度優(yōu)先搜索,當回到開始的節(jié)點時就找到了環(huán),如果回來中間訪問過的節(jié)點,或沒有路徑可走,則結束本次搜索28.11.2024,28,審計署駐成都特派員辦事處,深度優(yōu)先搜索算法演示,節(jié)點A,節(jié)點B,節(jié)點D,節(jié)點C,節(jié)點E,此時回到出發(fā)的節(jié)點A,找到環(huán),A-B-C-A,從節(jié)點C出發(fā)已無其它路徑,退回到節(jié)點B,到達節(jié)點E后沒有其它路徑可走,退回到節(jié)點B,此時從節(jié)點B出發(fā)的所有路徑都走完,再退回節(jié)點A,本次搜索結束Warshall算法不再贅述,28.11.2024,29,審計署駐成都特派員辦事處,Thank You!,28.11.2024,30,演講完畢,謝謝觀看!,內容總結,軟件測試的系統(tǒng)審計方法和有向圖算法在金融審計中的應用4/16/2022這一特點就決定了保險公司的取證最好從“面”上而不是從“點”上取證。
如果簡單這樣退保,等于將終保日期提前到批改日期系統(tǒng)漏洞使得能把終保日期提前到批改生效日期之前業(yè)務系統(tǒng)的數(shù)據可以從傳輸接口順利而準確地傳到財務系統(tǒng)但對財務系統(tǒng)進行的操作則不能反過來傳輸?shù)綐I(yè)務系統(tǒng)貸款人 擔保人From 貸款表 as a,貸款表 as bWhere a.貸款人=b.擔保人 andWhere a.貸款人=b.擔保人 andb.貸款人=c.擔保人 andc.貸款人=a.擔保人。