專利名稱:軟件動(dòng)作模型化裝置、軟件動(dòng)作監(jiān)視裝置、軟件動(dòng)作模型化方法以及軟件動(dòng)作監(jiān)視方法
技術(shù)領(lǐng)域:
本發(fā)明涉及軟件動(dòng)作模型化裝置、軟件動(dòng)作監(jiān)視裝置、軟件動(dòng)作模型化方 法以及軟件動(dòng)作監(jiān)視方法。
背景技術(shù):
PC或工作站、服務(wù)器、路由器、移動(dòng)電話、PDA等全部的計(jì)算機(jī)被暴露 于來(lái)自外部或內(nèi)部的攻擊。代表性的攻擊是以在計(jì)算機(jī)上執(zhí)行的軟件的脆弱性 為踏板的攻擊。攻擊者向計(jì)算機(jī)送入利用了軟件的脆弱性的具有惡意的代碼, 爭(zhēng)奪運(yùn)行中的進(jìn)程的控制,利用該進(jìn)程的權(quán)限來(lái)進(jìn)行非法操作。
為了檢測(cè)利用脆弱性的攻擊,特別是為了檢測(cè)未知的攻擊,具有將軟件的 正常的動(dòng)作模型化,在軟件執(zhí)行過(guò)程中判定有無(wú)與模型的背離的異常檢測(cè)系 統(tǒng)。系統(tǒng)調(diào)用是進(jìn)程向內(nèi)核委托系統(tǒng)上重要的處理時(shí)進(jìn)行的命令,攻擊者使用 進(jìn)程委托的系統(tǒng)調(diào)用,使系統(tǒng)進(jìn)行任意的行動(dòng)。因此,在監(jiān)視軟件的動(dòng)作時(shí), 驗(yàn)證系統(tǒng)調(diào)用的正當(dāng)性(例如,參照特開2004-126854號(hào)公報(bào),H.Feng等, "Anomaly Detection Using Call Stack Information" , The proc.of IEEE Symposium on Security and Privacy 2003, pp.62.、阿部等,"靜的解析仁基O,〈 侵入検知少只歹厶O最適化",情報(bào)処理學(xué)會(huì)論文誌匕°-一亍4 乂夕'、> ^^厶,vol.45, No. SIG3 (ACS5), pp.11—202。)。
在特開2004-126854號(hào)公報(bào)中記載的攻擊對(duì)策裝置中,具備系統(tǒng)調(diào)用表, 其將系統(tǒng)調(diào)用發(fā)行源的函數(shù)存在于存儲(chǔ)器的代碼區(qū)域中的情況設(shè)為正常,輸入 從軟件(任務(wù))發(fā)行的系統(tǒng)調(diào)用請(qǐng)求,輸出向正當(dāng)性檢查功能的轉(zhuǎn)移地址;正 當(dāng)性檢查功能部,其在發(fā)行系統(tǒng)調(diào)用請(qǐng)求時(shí)根據(jù)由OS存儲(chǔ)在特定的存儲(chǔ)區(qū)域 中的系統(tǒng)調(diào)用調(diào)用源的返回地址,判定系統(tǒng)調(diào)用請(qǐng)求的正當(dāng)性并輸出判定結(jié) 果,而在判定為非法的系統(tǒng)調(diào)用請(qǐng)求時(shí),撤銷該系統(tǒng)調(diào)用;攻擊對(duì)策功能部, 其輸入正當(dāng)性^r查功能部的非法系統(tǒng)調(diào)用請(qǐng)求判定結(jié)果并采取對(duì)策;以及輸入正當(dāng)性檢查功能部的正當(dāng)系統(tǒng)調(diào)用請(qǐng)求判定結(jié)果后被調(diào)用的、執(zhí)行命令的系統(tǒng) 調(diào)用。
在"Anomaly Detection Using Call Stack Information"中記載的攻擊才企測(cè)系 統(tǒng)中,為了驗(yàn)證系統(tǒng)調(diào)用的正當(dāng)性,利用調(diào)用棧的狀況(調(diào)用棧中累積的返回 地址的列)。在該系統(tǒng)中,首先事先執(zhí)行軟件,根據(jù)得到的結(jié)果學(xué)習(xí)模型。在 程序執(zhí)行過(guò)程中,取得產(chǎn)生系統(tǒng)調(diào)用時(shí)的調(diào)用棧的狀況,生成與產(chǎn)生系統(tǒng)調(diào)用 時(shí)的程序計(jì)數(shù)器一同記錄的Virtual Stack List,此外,沖全測(cè)當(dāng)前的Virtual Stack List和前一個(gè)Virtual Stack List的差分信息,即從比較對(duì)象的調(diào)用棧的狀況的 棧最下位開始按順序進(jìn)行比較驗(yàn)證,在檢測(cè)出不同的返回地址之后生成以后的 返回地址的列(Virtual Path )。才艮據(jù)生成的Virtual Stack List和Virtual Path分 別生成散列表,將該表作為軟件的模型使用。在驗(yàn)證軟件的動(dòng)作時(shí),在軟件執(zhí) 行的過(guò)程中,生成Virtual Stack List和Virtual Path,進(jìn)行與作為模型的散列表 的匹配,如果一致則允許系統(tǒng)調(diào)用請(qǐng)求,如果不一致則判定為異常。
在"靜的解析仁基O'〈侵入検知i> X亍厶O最適化"中記載的攻擊檢測(cè)系 統(tǒng)中,為了驗(yàn)證系統(tǒng)調(diào)用的正當(dāng)性,利用調(diào)用棧的狀況(棧中累積的返回地址 的列)。在該系統(tǒng)中,通過(guò)解析監(jiān)^L對(duì)象軟件的二進(jìn)制編碼來(lái)生成函數(shù)定義和 函數(shù)定義的自動(dòng)機(jī)。對(duì)每個(gè)函數(shù)生成該自動(dòng)機(jī),用于監(jiān)視軟件的控制流程。節(jié) 點(diǎn)被定義為(1)函數(shù)的入口、 (2)函數(shù)的出口、 (3)函數(shù)的調(diào)用中的某一個(gè)。 在監(jiān)視對(duì)象軟件的執(zhí)行過(guò)程中,該系統(tǒng)在每次發(fā)行系統(tǒng)調(diào)用時(shí)停止該軟件,調(diào) 查該時(shí)刻的調(diào)用棧的狀況。并且,從返回地址列制作已調(diào)用的函數(shù)的列表(稱 為?;厮?。然后,當(dāng)把i設(shè)為自然數(shù)時(shí),比較第i-l棧回溯和第i?;厮?,驗(yàn) 證從前者到后者的控制流程是否存在于模型(自動(dòng)機(jī))中。
在以linux為首的OS中,通常經(jīng)由Wrapper函數(shù)發(fā)行系統(tǒng)調(diào)用。因?yàn)?Wrapper函數(shù)存在于編碼區(qū)域中,所以系統(tǒng)調(diào)用發(fā)行源的函數(shù)始終存在于編碼 區(qū)域中。此外,在攻擊為主流的Retum-to-libc攻擊時(shí),攻擊者向libc返回發(fā) 行任意的系統(tǒng)調(diào)用??紤]以上的狀況,在由于系統(tǒng)調(diào)用發(fā)行源的函數(shù)的地址位 于編碼區(qū)域中而視為正當(dāng)?shù)奶亻_2004-126854號(hào)公報(bào)中記載的攻擊對(duì)策裝置 中,存在無(wú)法檢測(cè)的攻擊。此外,在"Anomaly Detection Using Call Stack Information"、"靜的解析仁基O, <侵入検知少乂 r厶O最適化"中記載的攻擊檢測(cè)系統(tǒng),因?yàn)槭褂迷谡{(diào)用棧中累積的返回地址的列來(lái)進(jìn)行驗(yàn)證,所以相比在
特開2004-126854號(hào)公報(bào)中記載的攻擊對(duì)策裝置進(jìn)行更加詳細(xì)的模型化。因此,
與特開2004-126854號(hào)^H艮相比,減少了攻擊漏4全的情況。
發(fā)明內(nèi)容
特開2004-126854號(hào)乂>|艮、"Anomaly Detection Using Call Stack Information"都是以在程序執(zhí)行過(guò)程中驗(yàn)證軟件的動(dòng)作為前提的,但在移動(dòng)電 話等處理能力低的計(jì)算機(jī)中,為了搭載用于驗(yàn)證動(dòng)作的系統(tǒng),通過(guò)有限的資源 實(shí)現(xiàn)處理的高速化,并且抑制使用存儲(chǔ)量是重要的。
特另'J是在"Anomaly Detection Using Call Stack Information"中,為了提高 精度,在模型中包含有調(diào)用棧的狀況,需要在驗(yàn)證時(shí)在發(fā)行系統(tǒng)調(diào)用的定時(shí)每 次取得調(diào)用棧的狀況。為了取得調(diào)用棧的狀況,需要利用棧指針(SP)、基址 指針(BP)在調(diào)用棧內(nèi)進(jìn)行搜索,按順序取得識(shí)別棧幀的棧幀信息(位置、 返回地址、Canary等),但因?yàn)閷⒄{(diào)用棧在存儲(chǔ)器上展開,所以低速的存儲(chǔ)器 訪問(wèn)頻度地啟動(dòng),時(shí)間開銷高。
此外,特別是在"靜的解析仁基O、侵入検知〉7亍厶0最適化"中,為 了提高精度,監(jiān)視調(diào)用棧的狀況,但需要對(duì)?;厮葜辛谐龅拿總€(gè)函數(shù)讀入模型, 進(jìn)行控制流程的驗(yàn)證。為了使監(jiān)視速度成為高速,考慮通過(guò)LRU算法對(duì)讀入 的模型進(jìn)行高速緩存,但因?yàn)樵谒b入的設(shè)備中限制了存儲(chǔ)量,結(jié)果,在存儲(chǔ) 器中放置了可能不被使用的模型,這就壓迫了使用存儲(chǔ)量,可能會(huì)使監(jiān)視對(duì)象 軟件的處理顯著地惡化。
因此,本發(fā)明是鑒于上述問(wèn)題而提出的,其目的在于提供一種正確地檢測(cè) 攻擊,削減軟件監(jiān)視動(dòng)作中的時(shí)間以及空間開銷的軟件動(dòng)作模型化裝置、軟件 動(dòng)作監(jiān)纟見裝置、軟件動(dòng)作模型化方法以及軟件動(dòng)作監(jiān)視方法。
本發(fā)明的第l特征為提供一種軟件動(dòng)作模型化裝置,其具備(a)棧信 息記錄部,其在軟件的執(zhí)行環(huán)境中,在軟件執(zhí)行過(guò)程中,可以得知在調(diào)用棧中 累積的順序地取得對(duì)發(fā)生了特定事件的時(shí)刻的在調(diào)用棧中累積的棧幀進(jìn)行識(shí) 別的棧幀信息,并且按照特定事件的發(fā)生順序進(jìn)行記錄;(b )終端信息記錄部, 其將i設(shè)為自然數(shù),從調(diào)用棧的底部開始按照順序比較由棧信息記錄部記錄的 第i-1棧信息和第i棧信息,將調(diào)用棧的位置和棧幀信息一致的部分作為一致
8部分,并且在檢測(cè)到不同的棧幀信息后將以后的部分作為不一致部分,記錄作
為形成一致部分和不一致部分的邊界的棧幀信息的終端信息;(c)第l棧差分 信息生成部,其使用終端信息記錄部記錄的終端信息,作為棧差分信息生成將 從棧信息的棧上位開始到檢測(cè)出終端信息為止的信息相互聯(lián)結(jié)后的信息;以及 (d)模型生成部,其根據(jù)棧差分信息,生成該軟件的動(dòng)作模型。
根據(jù)第1特征的軟件動(dòng)作模型化裝置,可以對(duì)每個(gè)軟件記錄用于把在監(jiān)視 時(shí)中斷調(diào)用棧的搜索的位置設(shè)定為本來(lái)的終端信息的位置(有時(shí)是其附近)的 終端信息。此外,在進(jìn)行監(jiān)視時(shí),即使在使用終端信息中斷調(diào)用棧的搜索的情 況下,也可以生成可以利用的模型。因此,根據(jù)第l特征的軟件動(dòng)作模型化裝 置,可以正確地檢測(cè)攻擊,削減軟件動(dòng)作監(jiān)視中的時(shí)間以及空間開銷。
此外,在第一特征的軟件動(dòng)作模型化裝置中,終端信息記錄部將特定事件 的識(shí)別符和終端信息的同現(xiàn)頻率高的終端信息與特定事件的識(shí)別符一同進(jìn)行 記錄,棧差分信息生成部從終端信息記錄部記錄的終端信息中,使用特定的事 件的識(shí)別符取得用于生成棧差分信息的終端信息。
根據(jù)該軟件動(dòng)作^t型化裝置,通過(guò)記錄與特定事件(系統(tǒng)調(diào)用等)的同現(xiàn) 關(guān)系強(qiáng)的終端信息,在進(jìn)行監(jiān)視時(shí),可以對(duì)每個(gè)特定的事件使用特殊化的終端 信息。
此外,在第一特征的軟件動(dòng)作模型化裝置中,終端信息記錄部可以將按照 棧信息記錄部記錄的棧信息的時(shí)間序列,在任意的期間,從調(diào)用棧的底部看存 在于固定位置的棧幀信息作為終端信息進(jìn)行記錄。
根據(jù)該軟件動(dòng)作模型化裝置,可以一直較小地保持記錄的終端信息與本來(lái) 的終端信息的差(在調(diào)用棧內(nèi)的位置的不同),來(lái)減少記錄的終端信息的數(shù)量。
并且,終端信息記錄部可以掌握從調(diào)用棧的底部看棧幀信息位于固定位置 的期間的長(zhǎng)度,把期間長(zhǎng)的棧幀信息作為終端信息進(jìn)行記錄。
此外,在第一特征的軟件動(dòng)作模型化裝置中,還具備模型取得部,其取 得由模型生成部生成的、成為監(jiān)視對(duì)象的軟件的動(dòng)作模型;終端信息取得部, 其取得由終端信息記錄部記錄的終端信息;棧信息取得部,其在檢索調(diào)用棧時(shí), 在檢索到由終端信息取得部傳送的終端信息的時(shí)刻,中斷從調(diào)用棧取得棧幀信 息,按照特定事件的發(fā)生順序進(jìn)行記錄;第2棧差分信息生成部,其將把棧信息取得部取得的第i-l棧信息和第i棧信息相互聯(lián)結(jié)后的信息作為棧差分信息
來(lái)生成;以及動(dòng)作監(jiān)視部,其判定棧差分信息生成部生成的棧差分信息與模型
取得部取得的動(dòng)作模型的背離。
根據(jù)該軟件動(dòng)作模型化裝置,除了在同一終端上實(shí)現(xiàn)模型化、以及實(shí)現(xiàn)監(jiān)
視之外,還可以實(shí)現(xiàn)利用了終端信息的效率高的調(diào)用棧的搜索。
此外,在第一特征的軟件動(dòng)作模型化裝置中,棧幀信息可以是返回地址。 根據(jù)該軟件動(dòng)作模型化裝置,無(wú)需修正調(diào)用棧,就可以取得識(shí)別棧幀的信
臺(tái)
本發(fā)明的第2特征是一種軟件動(dòng)作監(jiān)視裝置,其具備(a)模型取得部, 其在將表示了與通過(guò)監(jiān)視對(duì)象軟件發(fā)行的特定事件期期間執(zhí)行的函數(shù)調(diào)用以 及任意的函數(shù)返回的發(fā)行順序的同現(xiàn)關(guān)系的動(dòng)作模型設(shè)為函數(shù)模型時(shí),對(duì)監(jiān)視 對(duì)象軟件發(fā)行的每個(gè)特定的事件取得所述函數(shù)模型;(b)終端信息取得部,其 在軟件的執(zhí)行環(huán)境中,取得適合于監(jiān)視對(duì)象軟件的終端信息;(c)棧信息取得 部,其在該軟件的執(zhí)行過(guò)程中,可以得知在調(diào)用棧中累積的順序地取得對(duì)發(fā)生 了特定事件的時(shí)刻的在調(diào)用棧中累積的棧幀進(jìn)行識(shí)別的棧幀信息,并且在搜索 調(diào)用棧時(shí),在檢測(cè)到由終端信息取得部傳送的終端信息的時(shí)刻,中斷從調(diào)用棧 取得棧幀信息,按照特定事件的發(fā)生順序進(jìn)行記錄;(d)棧差分信息生成部, 其將把棧信息取得部取得的第i-l棧信息和第i棧信息相互聯(lián)結(jié)后的信息作為
棧差分信息來(lái)生成;(e)動(dòng)作監(jiān)視部,其判定棧差分信息生成部生成的棧差分 信息和模型取得部取得的動(dòng)作模型的背離。
根據(jù)第2特征的軟件動(dòng)作監(jiān)視裝置,可以使用在學(xué)習(xí)時(shí)得到的終端信息來(lái) 中斷調(diào)用棧的搜索,可以減輕監(jiān)視的開銷。特別是終端信息取得部,其根據(jù)特 定事件的識(shí)別符,取得將事先取得的特定事件的識(shí)別符和終端信息的同現(xiàn)頻率 高的終端信息與特定事件的識(shí)別符一同進(jìn)行記錄的信息,由此在調(diào)用棧搜索的 中斷確認(rèn)中,可以使用與特定事件的同現(xiàn)關(guān)系強(qiáng)的終端信息,所以可以進(jìn)行適 合于特定事件的中斷。
此外,第2特征的軟件動(dòng)作監(jiān)視裝置還具備模型廢棄部,該模型廢棄部廢 棄由模型取得部記錄的函數(shù)模型,模型取得部取得事先根據(jù)監(jiān)視對(duì)象軟件的代 碼對(duì)每個(gè)函數(shù)生成的、表示函數(shù)相互的調(diào)用關(guān)系的函數(shù)模型,動(dòng)作監(jiān)視部判定由堆棧差分信息生成部生成的堆棧差分信息和模型取得部取得的函數(shù)模型的 背離,堆棧信息取得部在從調(diào)用堆棧中取得堆棧幀信息時(shí),在檢測(cè)到與終端信 息一致的堆棧幀信息的情況下,中斷堆棧幀信息的取得,此時(shí),模型廢棄部廢 棄模型取得部為了監(jiān)視以前的堆棧差分信息而記錄的函數(shù)模型。
根據(jù)該軟件動(dòng)作監(jiān)視裝置,可以從存儲(chǔ)器中刪除在存儲(chǔ)器中殘存的不需要 的函數(shù)模型,可以抑制使用存儲(chǔ)量。
函數(shù)模型廢棄有可能廢棄下次的系統(tǒng)調(diào)用時(shí)的堆棧差分信息的驗(yàn)證時(shí)所 需要的函數(shù)模型。因此,終端信息取得部通過(guò)才艮據(jù)事先取得的堆棧信息的時(shí)間 序列,在某個(gè)期間,取得作為終端信息記錄了從調(diào)用堆棧的底部看存在于固定 位置的堆棧幀信息的信息,由此在進(jìn)行驗(yàn)證時(shí),可以只廢棄某個(gè)期間不利用的 函數(shù)模型,所以可以降低伴隨基于終端信息的函數(shù)模型廢棄而產(chǎn)生的風(fēng)險(xiǎn)。
此外,在第二特征的軟件動(dòng)作監(jiān)視裝置中,終端信息取得部也可以通過(guò)才艮 據(jù)棧信息記錄部的棧信息的時(shí)間序列,在任意期間,取得作為終端信息記錄了 從調(diào)用堆棧的底部看存在于固定位置的堆棧幀信息的信息。
沖艮據(jù)該軟件動(dòng)作監(jiān)視裝置,將終端信息的確認(rèn)結(jié)果保存在高速緩沖存儲(chǔ)器 中,可以實(shí)現(xiàn)高效化。
而且,終端信息記錄部可以取得作為終端信息記錄了堆棧幀信息從調(diào)用堆 棧的底部看存在于固定位置的期間長(zhǎng)的堆棧幀信息的信息。
此外,在第二特征的軟件動(dòng)作監(jiān)視裝置中,模型廢棄部可以掌握系統(tǒng)當(dāng)前 的使用存儲(chǔ)量,對(duì)是否進(jìn)行基于終端信息的函數(shù)模型的廢棄進(jìn)行切換。
根據(jù)存儲(chǔ)器的空閑狀況,不廢棄函數(shù)模型而按照LRU算法等進(jìn)行緩存有
可能可以減輕時(shí)間開銷。根據(jù)該軟件動(dòng)作監(jiān)視裝置,模型廢棄部掌握當(dāng)前的使 用存儲(chǔ)量,對(duì)是否進(jìn)行基于終端信息的函數(shù)模型的廢棄進(jìn)行切換,由此可以只 在需要的情況下廢棄模型函數(shù),因此可以降低風(fēng)險(xiǎn)。
此外,第2特征的軟件動(dòng)作監(jiān)視裝置還具備存儲(chǔ)函數(shù)模型的模型存儲(chǔ)部, 模型取得部對(duì)取得的函數(shù)模型附加識(shí)別符然后記錄在模型存儲(chǔ)部中,模型廢棄 部也可以向模型存儲(chǔ)部傳送通過(guò)識(shí)別符指定要廢棄的函數(shù)模型的廢棄命令。 根據(jù)該軟件動(dòng)作監(jiān)視裝置,可以確定要廢棄的函數(shù)模型。 本發(fā)明的第3特征為是一種軟件動(dòng)作模型化方法,其包含以下的步驟(a)在軟件的執(zhí)行環(huán)境中,在軟件執(zhí)行過(guò)程中,可以得知在調(diào)用堆棧中累積 的順序地取得對(duì)發(fā)生了特定事件的時(shí)刻的在調(diào)用堆棧中累積的堆棧幀進(jìn)行識(shí) 別的堆棧幀信息,并且按照特定事件的發(fā)生順序進(jìn)行記錄;(b)將i設(shè)為自然 數(shù),從調(diào)用堆棧的底部開始按照順序比較由堆棧信息記錄部記錄的第i-l堆棧 信息和第i堆棧信息,將調(diào)用堆棧的位置和堆棧幀信息一致的部分作為一致部 分,在檢測(cè)到不同的堆棧幀信息后將以后的部分作為不一致部分,記錄作為形 成一致部分和不一致部分的邊界的堆棧幀信息的終端信息;(c)使用終端信息 記錄部記錄的終端信息,將把從堆棧信息的堆棧上位開始到檢測(cè)出終端信息為 止的信息相互聯(lián)結(jié)后的信息作為堆棧差分信息來(lái)生成;以及(d)根據(jù)堆棧差
分信息,生成該軟件的動(dòng)作模型。
此外,本發(fā)明的第4特征是一種軟件動(dòng)作監(jiān)視方法,其包含以下的步驟
(a)取得表示了監(jiān)視對(duì)象軟件發(fā)行的特定事件與對(duì)每個(gè)特定的事件在特定的 事件期間執(zhí)行的函數(shù)調(diào)用以及任意的函數(shù)返回的發(fā)行順序的同現(xiàn)關(guān)系的動(dòng)作 模型;(b)在軟件的執(zhí)行環(huán)境中,取得適合于監(jiān)視對(duì)象軟件的終端信息;(c) 在該軟件的執(zhí)行過(guò)程中,可以得知在調(diào)用堆棧中累積的順序地取得對(duì)發(fā)生了特 定事件的時(shí)刻的在調(diào)用堆棧中累積的堆棧幀進(jìn)行識(shí)別的堆棧幀信息,并且在搜 索調(diào)用堆棧時(shí),在檢測(cè)到由終端信息取得部傳送的終端信息的時(shí)刻,中斷從調(diào) 用堆棧取得堆棧幀信息,按照特定事件的發(fā)生順序進(jìn)行記錄;(d)將把堆棧信 息取得部取得的第i-l堆棧信息和第i堆棧信息相互聯(lián)結(jié)后的信息作為堆棧差 分信息來(lái)生成;(e )判定堆棧差分信息生成部生成的堆棧差分信息和模型取得 部取得的動(dòng)作模型的背離。
圖1是第一實(shí)施方式的軟件動(dòng)作模型化裝置的結(jié)構(gòu)方框圖。
圖2是第一實(shí)施方式的堆棧信息、堆棧差分信息以及終端信息的例子。
圖3是第一實(shí)施方式的堆棧信息以及終端信息的例子。
圖4是第一實(shí)施方式的堆棧信息以及終端信息的例子。
圖5是表示第 一 實(shí)施方式的軟件動(dòng)作模型化方法的流程圖。
圖6是詳細(xì)表示圖5的S12的流程圖。
圖7是第一實(shí)施方式的終端信息記錄部使用的列表的例子。圖8是詳細(xì)表示圖5的S13的流程圖。
圖9是第一實(shí)施方式的軟件動(dòng)作監(jiān)視裝置的結(jié)構(gòu)方框圖。
圖IO是利用第一實(shí)施方式的終端信息中斷堆棧信息取得的例子。
圖11是利用第一實(shí)施方式的終端信息中斷堆棧信息取得的例子。
圖12是表示第 一 實(shí)施方式的軟件動(dòng)作監(jiān)視方法的流程圖。
圖13是詳細(xì)表示圖12的步驟S22的流程圖。
圖14是第二實(shí)施方式的軟件動(dòng)作模型化裝置以及軟件動(dòng)作監(jiān)視裝置的結(jié) 構(gòu)方框圖。
圖15是第三實(shí)施方式的軟件動(dòng)作監(jiān)^L裝置的結(jié)構(gòu)方框圖。 圖16是第三實(shí)施方式的函數(shù)模型的例子。 圖17是第三實(shí)施方式的函數(shù)模型的例子。 圖18是第三實(shí)施方式的函數(shù)模型和廢棄命令的例子。 圖19是利用第三實(shí)施方式的函數(shù)模型的動(dòng)作監(jiān)視的例子。 圖20是第三實(shí)施方式的堆棧信息以及終端信息的例子。 圖21是使用第三實(shí)施方式的終端信息中斷堆棧信息取得的例子。 圖22是第三實(shí)施方式的函數(shù)模型的廢棄例子。 圖23是第三實(shí)施方式的廢棄策略的例子。 圖24是表示第三實(shí)施方式的軟件監(jiān)視方法的流程圖。 圖25是表示第三實(shí)施方式的軟件監(jiān)視方法的流程圖。
具體實(shí)施例方式
然后,參照
本發(fā)明的實(shí)施方式。在以下附圖的記載中,對(duì)于相同 或者類似的部分附加相同或者類似的符號(hào)。但是,應(yīng)該注意到附圖為示意圖。 (第一實(shí)施方式) (軟件動(dòng)作模型化裝置)
如圖1所示,第一實(shí)施方式的軟件動(dòng)作模型化裝置IOO使用監(jiān)視對(duì)象進(jìn)程 10、監(jiān)視對(duì)象進(jìn)程使用的存儲(chǔ)空間20、以及任意使用閾值30,生成并輸出表 示監(jiān)視對(duì)象進(jìn)程10的正常動(dòng)作的模型信息50、終端信息40。在此,所謂"監(jiān) 視對(duì)象進(jìn)程10"是指應(yīng)該監(jiān)視軟件動(dòng)作的軟件的執(zhí)行形式。該監(jiān)視對(duì)象進(jìn)程 10的監(jiān)視指示可以通過(guò)用戶從外部給予,也可以通過(guò)軟件發(fā)送者對(duì)軟件附加的元信息來(lái)給予。
軟件動(dòng)作模型化裝置100具備系統(tǒng)調(diào)用信息取得部110、堆棧信息記錄部 120、堆棧差分信息生成部130、模型生成部140、終端信息記錄部150。
系統(tǒng)調(diào)用信息取得部110檢測(cè)監(jiān)視對(duì)象進(jìn)程IO發(fā)行的系統(tǒng)調(diào)用,從該時(shí) 刻到堆棧信息記錄部120記錄堆棧信息為止,使監(jiān)^L對(duì)象進(jìn)程為等待狀態(tài)。并 且,從系統(tǒng)調(diào)用15取得包含系統(tǒng)調(diào)用號(hào)碼等的系統(tǒng)調(diào)用信息115。系統(tǒng)調(diào)用 信息取得部110可以通過(guò)調(diào)試工具來(lái)實(shí)現(xiàn),但例如通過(guò)Linux中安裝的ptrace 可以容易地實(shí)現(xiàn)。
此外,在第一實(shí)施方式的軟件動(dòng)作模型化裝置100中,作為特定的事件設(shè) 為監(jiān)視對(duì)象進(jìn)程10發(fā)行的系統(tǒng)調(diào)用,但本發(fā)明并不局限于此。所謂系統(tǒng)調(diào)用 以外的特定事件,例如可以舉出jmp命令等。例如使用linux中安裝的ptrace, 通過(guò)進(jìn)行單步執(zhí)行,可以取得指令,所以軟件動(dòng)作模型化裝置可以檢測(cè)jmp 命令。
堆棧信息記錄部120從監(jiān)視對(duì)象進(jìn)程使用的存儲(chǔ)空間20取得系統(tǒng)調(diào)用信 息取得部110檢測(cè)到系統(tǒng)調(diào)用時(shí)刻的調(diào)用堆棧的狀況25。在此,所謂"調(diào)用 堆棧的狀況"是指堆棧幀的累積狀態(tài)。根據(jù)調(diào)用堆棧的狀況取得識(shí)別堆棧幀的 信息。在此,"識(shí)別堆棧幀的信息,,例如可以舉出返回地址或Canary等。Canary
在每個(gè)堆棧幀中插入的值的意思。Canary在與生成了堆棧幀的時(shí)刻比較表示 不同的值時(shí),可以檢測(cè)為堆棧幀由于堆棧溢出攻擊而被破壞了。該Canary當(dāng) 可以推定攻擊者時(shí)不構(gòu)成意思,所以很多時(shí)候使用隨機(jī)數(shù),但在該Canary中 還可以包含可以識(shí)別堆棧幀的信息。通過(guò)如此設(shè)置Canary,如果取得Canary, 則可以識(shí)別堆棧幀。
在第一實(shí)施方式中,詳細(xì)說(shuō)明使用返回地址識(shí)別堆棧幀。即,從調(diào)用堆棧 的狀況中僅提取返回地址,作為堆棧信息進(jìn)行輸出。提取的方式多種多樣,在 x86或ARM等調(diào)用堆棧中,因?yàn)榉祷氐刂反嬖谟诙褩淖钌衔?底部的相 反),所以例如使用在寄存器中保存的堆棧指針和基址指針,通過(guò)取得緊接基 址指針下方的值來(lái)實(shí)現(xiàn)。堆棧信息通過(guò)堆棧信息記錄部120在發(fā)行了系統(tǒng)調(diào)用 的時(shí)刻,按照時(shí)間序列順序進(jìn)行記錄。
14終端信息記錄部150從底部開始按照順序比較由堆棧信息記錄部120記錄 的第i-l堆棧信息和第i堆棧信息,將調(diào)用堆棧的位置和返回地址一致的部分 作為一致部分,將在檢測(cè)到不同的返回地址之后以后的部分作為不一致部分, 作成一致部分和不一致部分的邊界。將位于該不一致部分的端部的返回地址稱 為"終端信息"。
圖2表示堆棧信息、 一致部分、不一致部分、堆棧差分信息、終端信息的 例子。如圖2(A)所示,當(dāng)把第i-l堆棧信息和第i堆棧信息進(jìn)行比較時(shí),一 致部分如圖2(B)所示,不一致部分如圖2(C)所示。分割一致部分和不一 致部分的返回地址為"x",所以如圖2(E)所示,終端信息成為x。此外, 所謂在模型化中使用的堆棧差分信息如圖2(D)所示,是聯(lián)結(jié)不一致部分的 信息。在生成堆棧差分信息時(shí),進(jìn)行從堆棧信息中刪除一致部分,提取不一致 部分的處理。此時(shí),堆棧信息需要從底部開始進(jìn)行驗(yàn)證,但在調(diào)用堆棧的搜索 中,因?yàn)槎褩V羔槾嬖谟诙褩I衔?與底部相反),所以從堆棧上位開始向底 部進(jìn)行搜索。因此,可以說(shuō)需要取得在調(diào)用堆棧中累積的全部返回地址。但是, 因?yàn)樵摻K端信息存在于"應(yīng)該刪除的信息"和"應(yīng)該提取的信息"的邊界上, 所以事先列出該終端信息,在調(diào)用堆棧的搜索時(shí)使用,由此不需要取得全部的 返回地址即可中斷。
終端信息記錄部150從堆棧信息記錄部120記錄的堆棧信息125A中,任 意使用閾值30記錄終端信息40。終端信息因?yàn)樵谟涗浀亩褩P畔⒅写嬖谳^多, 所以雖然可以列出全部的終端信息,但也可以在搜索調(diào)用堆棧時(shí)提取有用的信 息。例如,可以舉出以下情況堆棧信息因?yàn)樵谙到y(tǒng)調(diào)用時(shí)生成,所以掌握系 統(tǒng)調(diào)用識(shí)別符和終端信息的同現(xiàn)關(guān)系,記錄同現(xiàn)頻率高的終端信息。圖3(A) 是堆棧信息記錄部120記錄的堆棧信息的例子。調(diào)查系統(tǒng)調(diào)用識(shí)別符和終端信 息的同現(xiàn)頻率,對(duì)每個(gè)系統(tǒng)調(diào)用提取同現(xiàn)頻率高的終端信息。圖3 (B)是如 此提取的終端信息的例子。
在第一實(shí)施方式中,詳細(xì)說(shuō)明以下的例子提取在具有任意閾值以上的長(zhǎng) 度的期間,從調(diào)用堆棧的底部看存在于固定位置的終端信息。綜合了以main 函數(shù)為代表的程序(或者模塊)的函數(shù)等存在于調(diào)用堆棧的固定位置的期間長(zhǎng), 位于該位置下位的返回地址很多時(shí)候?yàn)榈趇堆棧信息和第i-l堆棧信息并且一致。因此,長(zhǎng)時(shí)間存在于固定位置的返回地址是本來(lái)的終端信息的可能性高。 所以,終端信息可以不是存在于一致部分和不一致部分的邊界的返回地址,作 為終端信息可以提取在調(diào)用堆棧的固定位置存在期間長(zhǎng)的返回地址。
圖4 (A)是堆棧信息記錄部120記錄的堆棧信息的例子。在堆棧信息中, main、 X、 a是長(zhǎng)時(shí)間存在于固定位置的返回地址。如上所述,作為終端信息 提取在固定位置連續(xù)存在的返回地址。在此,給予閾值,作為終端信息可以提 取具有閾值以上長(zhǎng)度的返回地址。在圖4 (B)中,在闊值為3時(shí),作為終端 信息提取main和X。
軟件動(dòng)作模型化裝置IOO輸出由終端信息記錄部150得到的終端信息40, 并且使用終端信息155生成堆棧差分信息。
堆棧差分信息生成部130將堆棧信息、終端信息40、系統(tǒng)調(diào)用信息115 作為輸入,生成堆棧差分信息135。在堆棧差分信息生成部130中,從第i-l 堆棧信息和第i堆棧信息中提取不一致部分,連接所取得的不一致的部分來(lái)生 成堆棧差分信息。
模型生成部140根據(jù)堆棧差分信息135生成監(jiān)視對(duì)象進(jìn)程10的動(dòng)作模型。 例如,像非專利文獻(xiàn)l那樣,導(dǎo)出取得堆棧差分信息135的散列值的、系統(tǒng)調(diào) 用識(shí)別符和堆棧差分信息的相關(guān)規(guī)則。 (軟件動(dòng)作模型化方法)
然后,參照?qǐng)D5對(duì)第一實(shí)施方式的軟件動(dòng)作模型化方法進(jìn)行說(shuō)明。 首先,系統(tǒng)調(diào)用信息取得部UO檢測(cè)監(jiān)視對(duì)象進(jìn)程IO發(fā)行的系統(tǒng)調(diào)用15,
從該時(shí)刻開始到堆棧信息記錄部120記錄堆棧信息為止,使監(jiān)視對(duì)象進(jìn)程10
為等待狀態(tài)。并且,從系統(tǒng)調(diào)用15中取得包含系統(tǒng)調(diào)用號(hào)碼等的系統(tǒng)調(diào)用信
息115 (步驟SIO)。
然后,堆棧信息記錄部120從監(jiān)視對(duì)象進(jìn)程使用的存儲(chǔ)空間20取得在系
統(tǒng)調(diào)用信息取得部110檢測(cè)到系統(tǒng)調(diào)用的時(shí)刻的調(diào)用堆棧的狀況25 (步驟
Sll)。
然后,終端信息記錄部150從堆棧信息記錄部120記錄的堆棧125A中, 任意地利用閾值30來(lái)記錄終端信息40(步驟S12)。此外,將在后面對(duì)于終端 信息存儲(chǔ)部150的動(dòng)作例子進(jìn)行詳細(xì)說(shuō)明。然后,堆棧差分信息生成部130將堆棧信息125、終端信息40、系統(tǒng)調(diào)用 信息115作為輸入,生成堆棧差分信息135 (步驟S13)。此外,將在后面對(duì)堆 棧差分信息生成部130的動(dòng)作例子進(jìn)行說(shuō)明。
然后,模型生成部140根據(jù)堆棧差分信息135生成監(jiān)視對(duì)象進(jìn)程10的動(dòng) 作模型(步驟S14)。
然后,參照?qǐng)D6對(duì)部分S12的動(dòng)作例子進(jìn)行詳細(xì)it明。
首先,終端信息記錄部150使用對(duì)各個(gè)終端信息存在于固定位置的期間的 長(zhǎng)度(以下稱為"連續(xù)數(shù)")進(jìn)行計(jì)數(shù)的ListA,以及用于保存具有連續(xù)數(shù)的終 端信息的ListB。圖7 (A)、 (B)分別是ListA、 ListB的例子。ListA由以下 構(gòu)成終端信息、從調(diào)用堆棧底部開始數(shù)的位置、連續(xù)數(shù)、在檢查了堆棧信息 之后用于判定是否對(duì)該終端信息增加計(jì)數(shù)的flag。 ListB由終端信息和連續(xù)數(shù) 構(gòu)成。
如圖6那樣,終端信息記錄部150首先對(duì)ListA和ListB進(jìn)行初始化,即, 使其成為幾乎沒有項(xiàng)目的狀態(tài)(步驟S100 )。然后,讀入堆棧信息(步驟S110 )。 然后,從讀入的堆棧信息中,從調(diào)用堆棧底部開始按順序讀入返回地址(步驟 S120)。在該讀入中,因?yàn)橹筮M(jìn)行與上次取得的堆棧信息的比較,所以通過(guò) 上次取得的堆棧信息,讀入在與本次讀入的返回地址的位置相同的位置存在的 返回地址。
然后,在讀入的返回地址之間進(jìn)行比較,驗(yàn)證是否為不一致(步驟S130)。 在不一致時(shí),把在上次的循環(huán)中讀入的返回地址作為終端信息,并更新ListA (步驟S140)。在List的更新中,驗(yàn)證在ListA中是否存在終端信息,如果不 存在則在ListA中追加該終端信息、位置、連續(xù)數(shù)=0、 flag=0。
在步驟S130中,在一致時(shí),或者在步驟S140后,驗(yàn)證在ListA中是否存 在返回地址或者終端信息并且相同位置的終端信息(步驟S150)。如果存在, 則使該終端信息的連續(xù)數(shù)+1 (步驟S160),并且使flag為1 (步驟S170)。
直到堆棧信息結(jié)束為止繼續(xù)進(jìn)行從該步驟S120到S170。然后,按順序讀 入ListA的項(xiàng)目(步驟S180 )。驗(yàn)證讀入的項(xiàng)目的flag是否為1 (步驟S190 )。 在不是l時(shí),因?yàn)檫B續(xù)停止所以該終端信息的連續(xù)^:已確定。才艮據(jù)已確定的連 續(xù)數(shù)和終端信息,更新ListB (步驟S220 )。此外,清除該終端信息的連續(xù)數(shù)(步驟S230)。在步驟S190中為1時(shí),或者在步驟S230之后,使flag為O(步 驟S200 )。
直到ListA結(jié)束位置繼續(xù)進(jìn)行該步驟S180至S200。并且,直到堆棧信息 讀入結(jié)束為止,繼續(xù)進(jìn)行步驟S110到步驟S200。
根據(jù)連續(xù)數(shù)重新排列如此得到的ListB(步驟S210 )。然后,依次讀入ListB 的項(xiàng)目(步驟S240 )。比較閾值和連續(xù)數(shù)(步驟S250 ),在連續(xù)數(shù)大于閾值時(shí), 記錄終端信息(步驟S260 )。直到ListB結(jié)束為止,繼續(xù)該步驟S240到S260。
此外,將如此得到的終端信息與劃分一致部分、不一致部分的終端信息的 位置的差作為誤差信息,例如可以與終端信息一同記錄在外部記錄中。
然后,參照?qǐng)D8詳細(xì)說(shuō)明步驟S13中的不一致部分提取步驟的動(dòng)作例子。
首先,堆棧差分信息生成部130取得終端信息(步驟S300)。然后,根據(jù) 堆棧信息取得返回地址(步驟S310)。然后,驗(yàn)證終端信息和返回地址是否一 致(步驟S320),在一致時(shí),結(jié)束不一致部分提取步驟。在不一致時(shí),直到終 端信息結(jié)束為止繼續(xù)步驟S320。在終端信息結(jié)束時(shí),判斷為在步驟S310中取 得的返回地址是不一致部分的項(xiàng)目,并進(jìn)行記錄(步驟S330 )。在堆棧信息結(jié) 束之前繼續(xù)步驟S310 S330。
堆棧差分信息生成部130將如此取得的第i不一致部分和上次取得的第i-l 不一致部分結(jié)合。關(guān)于結(jié)合的方法在例子中表示。圖3 (D)表示的堆棧差分 信息在結(jié)合圖3 (C)的不一致部分時(shí),使從系統(tǒng)調(diào)用第i堆棧信息得到的不 一致部分的順序相反地結(jié)合。這是仿照非專利文獻(xiàn)l那樣進(jìn)行的,但也可以不 使順序相反。原因在于,在通過(guò)堆棧差分信息上的返回地址和系統(tǒng)調(diào)用識(shí)別符 的相關(guān)規(guī)則生成模型的情況下,順序沒有意義。堆棧差分信息與系統(tǒng)調(diào)用識(shí)別 符一起被輸出,并傳送給模型生成部140。
此外,在通過(guò)終端信息記錄部150記錄了誤差信息時(shí),在圖7的步驟S320 中為一致的情況下,可以不立即結(jié)束,而通過(guò)追加取得誤差信息量的返回地址 并進(jìn)行檢查。如此,與本來(lái)的終端信息的背離的距離變短,所以可以生成精度 高的模型。
(軟件動(dòng)作監(jiān)視裝置)
然后,使用圖9對(duì)第一實(shí)施方式的、進(jìn)行監(jiān)視對(duì)象進(jìn)程10的動(dòng)作正常異常判定的軟件動(dòng)作監(jiān)視裝置進(jìn)行說(shuō)明。
如圖9所示,第一實(shí)施方式的軟件動(dòng)作監(jiān)視裝置500利用監(jiān)^L對(duì)象進(jìn)程利 用的存儲(chǔ)空間20、終端信息40、模型信息50、軟件識(shí)別符70,來(lái)輸出判定結(jié) 果。
軟件動(dòng)作監(jiān)視裝置500具備系統(tǒng)調(diào)用信息取得部510、堆棧信息取得部 520、終端信息取得部550、堆棧差分信息生成部530、動(dòng)作監(jiān)視部540以及模 型取得部560。
軟件動(dòng)作監(jiān)視裝置500當(dāng)裝載軟件時(shí),根據(jù)軟件識(shí)別符7和;f莫型信息50, 使取得適合對(duì)監(jiān)視對(duì)象進(jìn)程10進(jìn)行監(jiān)視的模型565的模型取得部560啟動(dòng)。
系統(tǒng)調(diào)用信息取得部510檢測(cè)監(jiān)視對(duì)象進(jìn)程IO發(fā)行的系統(tǒng)調(diào)用15,從該 時(shí)刻開始直到堆棧信息取得部520結(jié)束取得堆棧信息為止,使監(jiān)視對(duì)象進(jìn)程 IO為等待狀態(tài)。并且,從系統(tǒng)調(diào)用15取得系統(tǒng)調(diào)用信息。通過(guò)利用在Linux 中安裝的Ptrace,可以容易地實(shí)現(xiàn)系統(tǒng)調(diào)用信息取得部510。
終端信息取得部550,根據(jù)軟件識(shí)別符70和終端信息40取得適合于監(jiān)視 對(duì)象進(jìn)程的終端信息555,并傳送給堆棧信息取得部520。在對(duì)每個(gè)系統(tǒng)調(diào)用 識(shí)別符記錄了終端信息時(shí),還對(duì)終端信息取得部550輸入系統(tǒng)調(diào)用信息515A, 對(duì)由監(jiān)視對(duì)象進(jìn)程10發(fā)行的每個(gè)系統(tǒng)調(diào)用選擇終端信息。
堆棧信息取得部520,從監(jiān)視對(duì)象進(jìn)程利用的存儲(chǔ)空間20取得調(diào)用堆棧 的狀況25,并且利用終端信息555生成堆棧信息525。堆棧信息取得部520 從調(diào)用堆棧的狀況中取得識(shí)別堆棧幀的信息。
在第一實(shí)施方式中,詳細(xì)說(shuō)明使用多個(gè)返回地址識(shí)別堆棧幀。即,堆棧信 息取得部520從調(diào)用堆棧的狀況25取得返回地址。并且,堆棧信息取得部520 利用終端信息555中斷取得識(shí)別堆棧幀的信息(在第一實(shí)施方式中為返回地 址)。
圖IO表示利用終端信息中斷堆棧信息取得的例子。圖10 (A)是終端信 息取得部550取得的終端信息的例子。此外,圖10 (B)是某個(gè)時(shí)刻的調(diào)用堆 棧的狀況的例子。考慮發(fā)行系統(tǒng)調(diào)用,產(chǎn)生從圖10 (B)上面所示的調(diào)用堆棧 的狀況遷移到圖10 (B)下面表示的調(diào)用堆棧的狀況的情況。此外,在調(diào)用堆 棧的狀況中不僅有返回地址,還存在被轉(zhuǎn)交給函數(shù)的自變量,但為了說(shuō)明方便,
19僅表示了返回地址。從圖10 (B)上部表示的調(diào)用堆棧的狀況,從堆棧上位開 始按照順序取得返回地址。當(dāng)一邊取得一邊與終端信息進(jìn)行比較時(shí),檢測(cè)與終 端信息一致的x。在該時(shí)刻,中斷返回地址的取得,作為堆棧信息輸出記錄的 返回地址(圖中s、 r、 p、 q)。從圖10 (B)下部表示的調(diào)用堆棧的狀況也同 樣地檢測(cè)到與終端信息一致的x的時(shí)刻,中斷返回地址的取得,作為堆棧信息 輸出所記錄的返回地址(圖中的h、 g、 f)。如此得到的堆棧信息由下一個(gè)步驟 的堆棧差分信息生成部530結(jié)合,從而成為堆棧差分信息(圖IO(B)右側(cè))。 此外,圖ll表示利用終端信息中斷堆棧信息的取得的其他的例子。圖11
(A)是終端信息取得部550取得的終端信息的例子。與圖IO不同,與系統(tǒng) 調(diào)用識(shí)別符成為配對(duì)。堆棧信息取得部520使用系統(tǒng)調(diào)用信息取得部510取得 的系統(tǒng)調(diào)用號(hào)碼,按照系統(tǒng)調(diào)用來(lái)切換終端信息。圖11 (B)是某時(shí)刻的調(diào)用 堆棧的狀況的例子??紤]發(fā)行系統(tǒng)調(diào)用,產(chǎn)生從圖11 (B)上面所示的調(diào)用堆 棧的狀況遷移到圖11 (B)下面表示的調(diào)用堆棧的狀況的情況。此外,在調(diào)用 堆棧的狀況中不僅有返回地址,還存在被轉(zhuǎn)交給函數(shù)的自變量,但為了說(shuō)明方 便,僅表示了返回地址。從圖11 (B)上部的調(diào)用堆棧的狀況,是發(fā)行系統(tǒng)調(diào) 用號(hào)碼4得到的信息,所以終端信息成為x。從調(diào)用堆棧的上位開始按順序取 得返回地址,并與終端信息進(jìn)行比較,在檢測(cè)到與終端信息x—致的返回地址 時(shí),中斷返回地址的取得,作為堆棧信息輸出所記錄的返回地址(圖中的s、 r、 p、 q)。同樣地,在為圖11 (B)下部的調(diào)用堆棧的狀況時(shí),因?yàn)槭前l(fā)行系 統(tǒng)調(diào)用號(hào)碼6得到的信息,所以main成為終端信息。從調(diào)用堆棧的上位開始 按順序取得返回地址,并與終端信息進(jìn)行比較,在檢測(cè)到與終端信息main — 致的返回地址時(shí),中斷返回地址的取得,作為堆棧信息輸出所記錄的返回地址
(圖中的h、 g、 f、 x、 y)。如此得到的堆棧信息由下一個(gè)步驟的堆棧差分信息 生成部530結(jié)合,從而成為堆棧差分信息(圖11 (B)右側(cè))。
堆棧差分信息生成部530,將堆棧信息525和系統(tǒng)調(diào)用信息515B作為輸 入,輸出堆棧差分信息335。在堆棧差分信息生成部530中,從第i-l堆棧信 息和第i堆棧信息中提取不一致部分,聯(lián)結(jié)所取得的不一致部分來(lái)生成堆棧差
分信息。
模型取得部560,在將表示了與通過(guò)監(jiān)視對(duì)象進(jìn)程IO發(fā)行的特定事件期間執(zhí)行的函數(shù)調(diào)用以及任意的函數(shù)返回的發(fā)行順序的同現(xiàn)關(guān)系的動(dòng)作模型設(shè) 為函數(shù)模型時(shí),對(duì)監(jiān)視對(duì)象進(jìn)程IO發(fā)行的每個(gè)系統(tǒng)調(diào)用取得函數(shù)模型。
動(dòng)作監(jiān)視部540判定堆棧差分信息生成部520生成的堆棧差分信息535 和模型取得部560取得的動(dòng)作模型530的背離,并作為判定結(jié)果進(jìn)行輸出。 (軟件動(dòng)作監(jiān)視方法)
然后,參照?qǐng)D12對(duì)第一實(shí)施方式的軟件動(dòng)作監(jiān)視方法進(jìn)行說(shuō)明。
首先,系統(tǒng)調(diào)用信息取得部510檢測(cè)監(jiān)視對(duì)象進(jìn)程IO發(fā)行的系統(tǒng)調(diào)用15, 在從該時(shí)刻開始到堆棧信息取得部520結(jié)束堆棧信息的取得為止,使監(jiān)視對(duì)象 進(jìn)程10為等待狀態(tài)。而且,從系統(tǒng)調(diào)用15取得系統(tǒng)調(diào)用信息(步驟S20)。
然后,終端信息取得部550根據(jù)軟件識(shí)別符70和終端信息40取得適合于 監(jiān)視對(duì)象進(jìn)程的終端信息555,并將其傳送給堆棧信息取得部520(步驟S21 )。
然后,堆棧信息取得部530從監(jiān)視對(duì)象進(jìn)程使用的存儲(chǔ)空間20取得調(diào)用 堆棧的狀況25。并且,使用終端信息555i取得堆棧信息525 (步驟S22)。此 外,將在后面對(duì)堆棧差分信息取得部520的動(dòng)作例子進(jìn)行詳細(xì)地說(shuō)明。
然后,堆棧差分信息生成部530將堆棧信息525和系統(tǒng)調(diào)用信息515B作 為輸入,生成堆棧差分信息335 (步驟S23)。
另一方面,當(dāng)裝載了軟件時(shí),模型取得部560根據(jù)軟件識(shí)別符70和模型 信息50取得適合于對(duì)監(jiān)視對(duì)象進(jìn)程10進(jìn)行監(jiān)視的模型565 (步驟S24 )。
然后,動(dòng)作監(jiān)^L部540判定堆棧差分信息生成部520生成的堆棧差分信息 535和模型取得部560取得的動(dòng)作模型530的背離,并作為判定結(jié)果60進(jìn)行 輸出(步驟S25)。
然后,參照?qǐng)D13對(duì)步驟S22的動(dòng)作例子進(jìn)行詳細(xì)說(shuō)明。
首先,堆棧信息取得部520從終端信息取得部550取得終端信息(步驟 S500)。然后,根據(jù)調(diào)用堆棧的狀況25,按順序取得堆棧幀(步驟S510),并 取得該堆棧幀的返回地址(步驟S520 )。
然后,堆棧信息取得部520按順序讀入終端信息,比較在步驟S520中取 得的返回地址和終端信息(步驟S530)。直到終端信息結(jié)束為止,或者到確認(rèn) 返回地址和終端信息一致為止,繼續(xù)進(jìn)行步驟S530。在直到終端信息結(jié)束沒 有確認(rèn)出一致時(shí),將返回地址作為堆棧信息進(jìn)行記錄(步驟S540),直到堆棧幀結(jié)束為止,重復(fù)步驟S510至步驟S540。
當(dāng)在步驟S5300中確認(rèn)了一致時(shí),跳出循環(huán)結(jié)束堆棧信息取得處理。此外, 在對(duì)終端信息附加了誤差信息時(shí),在步驟S530中確認(rèn)了一致之后,可以追加 以下的步驟亦即,直到誤差信息表示的量為止取得返回地址。 (作用以及效果)
第 一實(shí)施方式的軟件動(dòng)作模型化裝置提取已記錄的終端信息,根據(jù)終端信 息,從堆棧信息生成軟件的動(dòng)作模型。
因此,根據(jù)第一實(shí)施方式的軟件動(dòng)作模型化裝置,可以對(duì)每個(gè)軟件記錄用 于把在監(jiān)視時(shí)中斷調(diào)用堆棧的搜索的位置設(shè)定為本來(lái)的終端信息的位置(有時(shí) 是其附近)的終端信息。此外,在進(jìn)行監(jiān)視時(shí),即使在使用終端信息中斷調(diào)用 堆棧的搜索的情況下,也可以生成可以利用的模型。
特別是通過(guò)記錄與特定事件(系統(tǒng)調(diào)用等)的同現(xiàn)關(guān)系強(qiáng)的終端信息,在 進(jìn)行監(jiān)視時(shí),可以使用對(duì)每個(gè)特定的事件特化的終端信息。
此外,特別是作為終端信息記錄按照堆棧信息記錄部記錄的堆棧信息的時(shí) 間序列,在某個(gè)期間內(nèi)從調(diào)用堆棧的底部看存在于固定位置的堆棧幀信息,由 此,可以在較小地保持記錄的終端信息與本來(lái)的終端信息的差(在調(diào)用堆棧內(nèi) 的位置的不同)的狀況下,減少記錄的終端信息的數(shù)量。
此外,堆棧幀信息的特征在于其是返回地址,由此無(wú)需修正調(diào)用堆棧就可 以取得識(shí)別堆棧幀的信息。
此外,第一實(shí)施方式的軟件監(jiān)視裝置在檢索調(diào)用堆棧時(shí),以檢測(cè)到與終端 信息相匹配的返回地址為契機(jī),中斷調(diào)用堆棧的搜索,通過(guò)直到該時(shí)刻取得的 堆棧信息進(jìn)行動(dòng)作驗(yàn)證。
因此,根據(jù)第一實(shí)施方式的軟件監(jiān)視裝置,在軟件執(zhí)行過(guò)程中監(jiān)視監(jiān)視對(duì) 象軟件的動(dòng)作時(shí),可以使用在學(xué)習(xí)時(shí)得到的終端信息來(lái)中斷調(diào)用堆棧的搜索, 可以減輕監(jiān)視的開銷。
特別是終端信息取得部,其根據(jù)特定事件的識(shí)別符,取得將事先取得的特 定事件的識(shí)別符和終端信息的同現(xiàn)頻率高的終端信息與特定事件的識(shí)別符一 同進(jìn)行了記錄的信息,由此在調(diào)用堆棧搜索的中斷確認(rèn)中,可以使用與特定事 件的同現(xiàn)關(guān)系強(qiáng)的終端信息,可以進(jìn)行適合于特定事件的中斷。此外,特別是終端信息取得部取得作為終端信息記錄了按照事先取得的堆 棧信息的時(shí)間序列,在某個(gè)期間從調(diào)用堆棧的底部看存在于固定位置的堆棧幀 信息的信息,由此,例如可以將終端信息的確認(rèn)結(jié)果保存在緩沖存儲(chǔ)器中來(lái)實(shí) 現(xiàn)高效化。
(第二實(shí)施方式)
(軟件動(dòng)作模型化以及軟件動(dòng)作監(jiān)視裝置)
圖14是表示第二實(shí)施方式的軟件動(dòng)作模型化以及軟件動(dòng)作監(jiān)視裝置1000 的結(jié)構(gòu)例子的方框圖。
軟件動(dòng)作模型化以及軟件動(dòng)作監(jiān)視裝置1000是,在模型信息DB50中存 儲(chǔ)表示監(jiān)視對(duì)象進(jìn)程10的動(dòng)作的模型信息1055,并且在終端信息DB30中存 儲(chǔ)終端信息1085的裝置。并且,軟件動(dòng)作監(jiān)視裝置1000是,分別從模型信息 DB50、終端信息DB30取得適合對(duì)監(jiān)視對(duì)象進(jìn)程10的動(dòng)作進(jìn)行監(jiān)視的模型信 息55、終端信息35,進(jìn)行監(jiān)視對(duì)象進(jìn)程10的動(dòng)作的馬全證、輸出-瞼證結(jié)果60 的裝置。
軟件動(dòng)作模型化以及軟件動(dòng)作監(jiān)視裝置1000具備系統(tǒng)調(diào)用信息取得部 1010、堆棧信息記錄部1020、堆棧信息取得部1030、堆棧差分信息生成部1040、 模型生成部1050、模型取得部1060、動(dòng)作監(jiān)視部1070、終端信息記錄部1080、 和終端信息取得部1090。
在對(duì)監(jiān)視對(duì)象進(jìn)程10的動(dòng)作進(jìn)行模型化時(shí),軟件動(dòng)作監(jiān)^L裝置1000啟動(dòng) 系統(tǒng)調(diào)用信息取得部1010、堆棧信息記錄部1020、堆棧差分信息生成部1040、 模型生成部1050、終端信息記錄部1080。各個(gè)構(gòu)成要素可以與第一實(shí)施方式 中記載的軟件動(dòng)作模型化裝置100中的系統(tǒng)調(diào)用信息取得部110、堆棧信息記 錄部120、堆棧差分信息生成部130、模型生成部140、終端信息記錄部150 相同。詳細(xì)情況請(qǐng)參照第一實(shí)施方式。
在對(duì)監(jiān)視對(duì)象進(jìn)程10的動(dòng)作進(jìn)行監(jiān)視時(shí),軟件動(dòng)作監(jiān)視裝置1000啟動(dòng)系 統(tǒng)調(diào)用取得部IOIO、堆棧信息取得部1030、堆棧差分信息生成部1040、模型 取得部1060、動(dòng)作監(jiān)視部1070、終端信息取得部1090。各個(gè)構(gòu)成要素可以與 第一實(shí)施方式中記載的軟件動(dòng)作監(jiān)視裝置500中的系統(tǒng)調(diào)用信息取得部510、 堆棧信息取得部520、堆棧差分信息生成部530、模型取得部560、動(dòng)作監(jiān)視
23部540、終端信息取得部550相同。詳細(xì)的情況請(qǐng)參照第一實(shí)施方式。 (作用以及效果)
通過(guò)第二實(shí)施方式的軟件動(dòng)作模型化以及軟件動(dòng)作監(jiān)視裝置,除了實(shí)現(xiàn)同 一終端上的;f莫型化和監(jiān)視之外,還可以實(shí)現(xiàn)利用終端信息的高效的調(diào)用堆棧的 搜索。
(第三實(shí)施方式)
圖15是表示第三實(shí)施方式的軟件動(dòng)作監(jiān)視裝置5100的構(gòu)成例子的方框圖。
軟件動(dòng)作監(jiān)視裝置5100是,與在某個(gè)期間存儲(chǔ)函數(shù)模型的模型存儲(chǔ)部 5180、存儲(chǔ)了終端信息的終端信息DB30、以及存儲(chǔ)了函數(shù)模型的函數(shù)模型 DB50連接,進(jìn)行監(jiān)視對(duì)象進(jìn)程10的動(dòng)作的正常/異常判定的裝置,并利用監(jiān) 視對(duì)象進(jìn)程使用的存儲(chǔ)空間20、軟件識(shí)別符60、終端信息35、函數(shù)模型55 輸出判定后的結(jié)果40。此外,將函數(shù)模型5175記錄在模型存儲(chǔ)部5180中, 取得在模型存儲(chǔ)部5180中記錄的函數(shù)模型5185,輸出廢棄命令5155從模型 存儲(chǔ)部5180中刪除在模型存儲(chǔ)部5180中記錄的函數(shù)模型。
軟件動(dòng)作監(jiān)視裝置5100,具備系統(tǒng)調(diào)用發(fā)行檢測(cè)部5110、堆棧信息取得 部5120、堆棧差分信息生成部5130、動(dòng)作監(jiān)視部5140、模型廢棄部5150、終 端信息取得部5160 、以及模型取得部5170。
系統(tǒng)調(diào)用發(fā)行檢測(cè)部5110檢測(cè)監(jiān)視對(duì)象進(jìn)程IO發(fā)行了系統(tǒng)調(diào)用15,直 到動(dòng)作的驗(yàn)證完成為止使監(jiān)視對(duì)象進(jìn)程IO停止,將檢測(cè)信息5115傳送給堆棧 信息取得部5120。檢測(cè)信息5115因?yàn)榭梢杂米魇苟褩P畔⑷〉貌?120啟動(dòng) 的觸發(fā)器,所以例如可以作為具有對(duì)堆棧信息取得部5120的動(dòng)作進(jìn)行管理的 標(biāo)志,建立該標(biāo)志的位。系統(tǒng)調(diào)用發(fā)行才企測(cè)部5110例如可以通過(guò)4吏用作為 Linux上的調(diào)試工具的pteace來(lái)容易地實(shí)現(xiàn)。
堆棧信息取得部5120當(dāng)接收到檢測(cè)信息5115時(shí),從監(jiān)視對(duì)象進(jìn)程使用的 存儲(chǔ)空間20取得調(diào)用堆棧的狀況25,并且利用終端信息5165,來(lái)生成堆棧信 息5125A。將生成的堆棧信息5125A傳送給堆棧差分信息生成部5130。堆棧 信息取得部5120從調(diào)用堆棧的狀況25中搜索堆棧幀,按順序取得識(shí)別堆棧幀 的堆棧幀信息。所謂堆棧幀信息,例如可以舉出返回地址或Canary等。在第三實(shí)施方式中詳細(xì)說(shuō)明使用返回地址識(shí)別堆棧幀。即,堆棧信息取得
方式多種多樣,在x86或ARM等的調(diào)用堆棧中,因?yàn)榉祷氐刂反嬖谟诙褩?的最上位(底部的相反),所以例如使用在寄存器中保存的堆棧指針和基址指 針,通過(guò)取得緊接基址指針下方的值來(lái)實(shí)現(xiàn)。堆棧信息通過(guò)堆棧信息記錄部 5120在發(fā)行了系統(tǒng)調(diào)用的時(shí)刻,按照時(shí)間序列順序進(jìn)行記錄。此外,堆棧信 息取得部5120的特征為根據(jù)終端信息5156 (以后說(shuō)明)中斷取得返回地址, 將終端到達(dá)信息5125B傳送給模型廢棄部5150。
堆棧差分信息生成部5130將堆棧信息5125作為輸入,生成堆棧差分信息, 即p叩信息5135A、 push信息5135B。在堆棧差分信息生成部5130中,從系 統(tǒng)調(diào)用第i-l堆棧信息和系統(tǒng)調(diào)用第i堆棧信息中提取不一致部分,將得到的 不一致部分作為p叩信息、push信息進(jìn)行輸出。
終端信息取得部5160從調(diào)用堆棧的底部開始按順序比較在終端信息 DB30中記錄的第i-l堆棧信息和第i堆棧信息,將調(diào)用堆棧的位置和返回地址 一致的部分作為一致部分,將檢測(cè)到不同的返回地址之后以后的部分作為不一 致部分,取得作為一致部分和不一致部分的邊界的終端信息。圖2表示堆棧信 息、 一致部分、不一致部分、堆棧差分信息、終端信息的例子。當(dāng)比較在圖2 (A)中表示的堆棧信息時(shí), 一致部分為圖2(B),不一致部分為圖2 (C)。 因?yàn)閯澐忠恢虏糠趾筒灰恢虏糠值姆祷氐刂窞?x",所以如圖2(E)那樣, 終端信息成為x。此外,關(guān)于在驗(yàn)證中使用的堆棧差分信息,如圖2 (D)那 樣,在系統(tǒng)調(diào)用第i的不一致部分中,當(dāng)把對(duì)系統(tǒng)調(diào)用第i-l堆棧信息中存在 的信息附加了終端信息后的信息設(shè)為pop信息,而4巴對(duì)系統(tǒng)調(diào)用第i堆棧信息 中存在的信息附加了終端信息后的信息設(shè)為push信息時(shí),是對(duì)pop信息、push 信息統(tǒng)稱的信息。在生成堆棧差分信息時(shí),進(jìn)行從堆棧信息中除去一致部分, 提取不一致部分的處理。此時(shí),堆棧信息需要從底部開始進(jìn)行驗(yàn)證,但在調(diào)用 堆棧的搜索中,因?yàn)槎褩V羔槾嬖谟诙褩I衔?與底部相反),所以從堆棧上 位向底部進(jìn)行搜索。因此,可以說(shuō)需要取得在調(diào)用堆棧中累積的全部返回地址。 但是,因?yàn)樵摻K端信息存在于"應(yīng)該刪除的信息"和"應(yīng)該提取的信息"的邊 界上,所以事先列出該終端信息,在調(diào)用堆棧的搜索時(shí)使用,由此不需要取得全部的返回地址即可中斷。
圖16是函數(shù)模型的例子。第三實(shí)施方式的函數(shù)模型是根據(jù)源代碼,提取 函數(shù)調(diào)用的關(guān)系來(lái)生成的自動(dòng)機(jī)。該自動(dòng)機(jī)是,函數(shù)模型是針對(duì)每個(gè)函數(shù)而存
在的,節(jié)點(diǎn)是(1)函數(shù)的入口 ( Entry )、 (2)函數(shù)的出口 (Exit)、以及(3) 函數(shù)名稱這三個(gè)種類中的某一種,將向節(jié)點(diǎn)的進(jìn)線定義為函數(shù)調(diào)用,此外將從 節(jié)點(diǎn)的出線定義為函數(shù)返回的自動(dòng)機(jī)。圖16(A)是源代碼的例子,圖16(B) 是對(duì)源代碼進(jìn)行分析后作成的函數(shù)模型的例子。
此外,因?yàn)楹瘮?shù)模型只要能進(jìn)行push、 pop的驗(yàn)證即可,所以函數(shù)模型的 表現(xiàn)也可以不是自動(dòng)機(jī)。例如,在針對(duì)自動(dòng)機(jī)的各節(jié)點(diǎn),將某個(gè)節(jié)點(diǎn)作為開始, 將某個(gè)節(jié)點(diǎn)作為目的點(diǎn)時(shí),可以通過(guò)表來(lái)表現(xiàn)對(duì)是否存在從開始點(diǎn)到目的點(diǎn)的 路徑進(jìn)行分析后的結(jié)果。圖17是根據(jù)圖16 (A)表示的源代碼生成的、用表 的形式表現(xiàn)的函數(shù)模型的例子。"O"表示存在路徑,"x"表示不存在路徑。
模型取得部5170從函數(shù)模型DB50中取得適合于監(jiān)視對(duì)象進(jìn)程10的動(dòng)作 驗(yàn)證的函數(shù)模型,然后記錄在模型記錄部5180中。將在后面進(jìn)行敘述,動(dòng)作 監(jiān)視部5140因?yàn)橐筮m合于對(duì)pop信息、push信息的每個(gè)幀進(jìn)行檢查的函數(shù) 模型,所以在模型存儲(chǔ)部5180中沒有所需要的函數(shù)模型時(shí),從函數(shù)模型DB50 取得函數(shù)模型。此外,模型存儲(chǔ)部5180如果容量很多則可以使用LRU算法等 進(jìn)行管理,由此可以進(jìn)行高效的動(dòng)作監(jiān)視。但是,在移動(dòng)電話等裝載設(shè)備中,
成為模型存儲(chǔ)部的存儲(chǔ)器的容量有限,所以通過(guò)較少的容量進(jìn)行模型管理是重 要的。此外,在模型存儲(chǔ)部5180中進(jìn)行記錄時(shí),可以對(duì)函數(shù)模型附加識(shí)別符。 將在后面進(jìn)行敘述,在模型存儲(chǔ)部5180中存儲(chǔ)的函數(shù)模型有可能被模型廢棄 部5150廢棄。此時(shí),為了可以確定廢棄對(duì)象的函數(shù)模型,可以對(duì)函數(shù)模型附 加識(shí)別符。圖18 (A)是附加了識(shí)別符的函數(shù)模型的例子。在該例子中,對(duì)作 為函數(shù)模型的自動(dòng)機(jī)附加了函數(shù)名"foo"。
動(dòng)作監(jiān)視部5140將堆棧差分信息生成部5130生成的pop信息5135A、push 信息5135B、在模型存儲(chǔ)部中存儲(chǔ)的函數(shù)模型5185作為輸入,來(lái)判定有無(wú)pop 信息、push信息與函凄^莫型的背離。
圖19是動(dòng)作監(jiān)視部5140的動(dòng)作的例子。當(dāng)輸入了成為驗(yàn)證對(duì)象的pop 信息、push信息(圖19 (A))時(shí),動(dòng)作監(jiān)視部5140驗(yàn)證是否在函數(shù)模型上存在有pop信息、push信息表示的、可以實(shí)現(xiàn)調(diào)用堆棧的狀況的控制流程。 例如,關(guān)于pop信息(圖19 (A)的(l))的"q",驗(yàn)證是否可以從r返回結(jié) 束q。圖19 (B)是q的函數(shù)模型。在此,驗(yàn)證是否存在從節(jié)點(diǎn)r到Exit的路 徑。如圖19(B)所示,因?yàn)樵趒的函數(shù)模型中存在r—Exit的路徑,所以設(shè) q的驗(yàn)證結(jié)果為正常。如果沒有r—Exit的路徑,則設(shè)驗(yàn)證結(jié)果為異常。如此, 從s到x按順序進(jìn)行驗(yàn)證。在pop的動(dòng)作正常時(shí),驗(yàn)證push的動(dòng)作。該驗(yàn)證 例如關(guān)于push信息(圖19 (A)的(2))的"f,,驗(yàn)證是否可以向f進(jìn)入并到 達(dá)g。圖19 (C)是f的函數(shù)模型。在此,驗(yàn)證是否存在從節(jié)點(diǎn)Entry到下一 幀的g的路徑。如圖19 (c)所示,在f的函數(shù)模型中存在Entry—g的路徑, 所以設(shè)f的驗(yàn)證結(jié)果為正常。如果不存在Entry—g的路徑,則設(shè)驗(yàn)證結(jié)果為異 常。如此,從push信息的x到h按順序進(jìn)行驗(yàn)證。僅在所有的驗(yàn)證中判定為 正常時(shí),動(dòng)作監(jiān)視部140作為結(jié)果40輸出正常。
如此,在動(dòng)作監(jiān)視部5149中,在pop信息、push信息的各幀中,讀入需 要的函數(shù)模型,驗(yàn)證路徑。圖19 (D)是驗(yàn)證了 push信息"h"時(shí)的模型存儲(chǔ) 部5180的狀況。其中,假設(shè)模型存儲(chǔ)部5180的管理是按照LRU算法。在該 時(shí)刻,在模型存儲(chǔ)部5180中除了在本次的驗(yàn)證中使用的函數(shù)模型以外,還保 存有以前的驗(yàn)證中使用的函數(shù)模型。
終端信息取得部5160根據(jù)軟件識(shí)別符60和終端信息35取得適合于對(duì)監(jiān) 視對(duì)象進(jìn)程10的終端信息5165,并將其傳送給堆棧信息取得部5120。終端信 息的概念在前面已經(jīng)進(jìn)行了敘述,是區(qū)分一致部分和不一致部分的返回地址, 并且已經(jīng)敘述了通過(guò)事先執(zhí)行監(jiān)視對(duì)象軟件得到的終端信息的列表(將生成該 列表稱為"事先學(xué)習(xí)")作為中斷調(diào)用堆棧的搜索的信息是有用的。并且,與 終端信息相比存在于底部方向的幀是一致部分,是基于動(dòng)作監(jiān)視的驗(yàn)證不會(huì)涉 及到的幀。利用這種情況,在堆棧取得部搜索調(diào)用堆棧時(shí)檢測(cè)到終端信息的情 況下,以此為契機(jī),刪除在模型存儲(chǔ)部5180中存在的、在以前的驗(yàn)證中利用 過(guò)的函數(shù)模型,由此可以增加模型存儲(chǔ)的剩余容量。特別是,軟件動(dòng)作監(jiān)視裝 置5100利用的終端信息,在事先學(xué)習(xí)時(shí),當(dāng)考慮到該終端信息是在具有通過(guò) 用戶給予等方式設(shè)定的閾值以上的長(zhǎng)度的期間,從調(diào)用堆棧的底部看存在于固 定位置上的終端信息的情況時(shí),其效果會(huì)更加顯著。綜合了以main函數(shù)為代表的程序(或者模塊)的函數(shù)等,很多時(shí)候存在于調(diào)用堆棧的固定位置的期間 長(zhǎng),并且位于比該位置更下位的返回地址為第i堆棧信息和第i-l堆棧信息一 致。因此,長(zhǎng)時(shí)間存在于固定位置的返回地址是本來(lái)的終端信息的可能性高。 所以,終端信息可以不是存在于一致部分和不一致部分的邊界的返回地址,可 以將在調(diào)用堆棧的固定位置存在期間長(zhǎng)的返回地址作為終端信息來(lái)提取。 圖20是通過(guò)事先學(xué)習(xí)得到的堆棧信息的時(shí)間序列的例子。
在堆棧信息中,main、 X、 a是長(zhǎng)時(shí)間存在于固定位置的返回地址。這樣, 有時(shí)作為終端信息使用,將連續(xù)存在固定位置的返回地址作為終端信息來(lái)提 取。如此得到的終端信息,并未必一定存在于區(qū)分一致部分和不一致部分的位 置,但在與終端信息相比位于更底部方向的幀中包含較多的一致部分。即,與 終端信息相比位于更底部方向的幀不是驗(yàn)證對(duì)象的可能性非常高。并且,因?yàn)?該終端信息是在一定期間內(nèi)存在于同一調(diào)用堆棧位置的返回地址,所以在某個(gè) 一定期間內(nèi)從驗(yàn)證對(duì)象中排除與終端信息相比位于更底部方向的幀。當(dāng)考慮了 以上情況時(shí),即使從模型存儲(chǔ)中除去與終端信息相比位于更底部方向的幀的函 數(shù)-漠型,也不會(huì)成為大的問(wèn)題。
圖21表示利用終端信息中斷堆棧信息取得,輸出終端到達(dá)信息的例子。 圖21 (A)是終端信息取得部5160取得的終端信息的例子。此外,圖21 (B) 是在某個(gè)時(shí)刻的調(diào)用堆棧的狀況??紤]發(fā)行系統(tǒng)調(diào)用,產(chǎn)生從圖21(B)上面 所示的調(diào)用堆棧的狀況遷移到圖21 (B)下面表示的調(diào)用堆棧的狀況的情況。 此外,在調(diào)用堆棧的狀況中不僅有返回地址,還存在被賦予給函數(shù)的自變量, 但為了說(shuō)明方便,僅表示了返回地址。從圖21 (B)上部表示的調(diào)用堆棧的狀 況,從堆棧上位開始按照順序取得返回地址。當(dāng)一邊取得一邊與終端信息進(jìn)行 比較時(shí),;險(xiǎn)測(cè)與終端信息一致的x。在該時(shí)刻,中斷返回地址的取得,將所記 錄的返回地址包含x作為堆棧信息進(jìn)行輸出,并且輸出終端到達(dá)信息(圖中s、 r、 q、 p 、 x)。在從圖21 (B)下部表示的調(diào)用堆棧的狀況也同樣地檢測(cè)到與 終端信息一致的x的時(shí)刻,中斷返回地址的取得,將所記錄的返回地址包含x 作為堆棧信息進(jìn)行輸出,并且輸出終端到達(dá)信息(圖中的h、 g、 f、 x)。如此 得到的堆棧信息通過(guò)下一步驟的堆棧差分信息生成部5130,成為堆棧差分信 息(pop信息、push信息)(圖21 (B)右側(cè))。模型廢棄部5160當(dāng)作為輸入收到終端到達(dá)信息5125B時(shí),輸出對(duì)模型存 儲(chǔ)部5180中存儲(chǔ)的函數(shù)模型進(jìn)行刪除的命令(廢棄命令5155),刪除在模型 存儲(chǔ)部5180中存儲(chǔ)的函數(shù)模型。刪除對(duì)象的函數(shù)模型可以是模型存儲(chǔ)部5180 中存儲(chǔ)的函數(shù)模型的全部,例如,可以像通過(guò)臨時(shí)變更LRU算法的闊值等被 判定為使用頻度較少的函數(shù)模型那樣,來(lái)選擇。決定該刪除對(duì)象的函數(shù)模型可 以預(yù)先在設(shè)計(jì)階段進(jìn)行設(shè)定。也可以通過(guò)使用策略文件等從外部輸入。此外, 取得當(dāng)前的存儲(chǔ)器使用量200,根據(jù)存儲(chǔ)器使用量可以切換是否輸出廢棄命 令。此外,在對(duì)函數(shù)模型附加了識(shí)別符時(shí),通過(guò)在廢棄命令5155中包含廢棄 對(duì)象的函數(shù)模型的識(shí)別符,可以確定廢棄對(duì)象。圖18 (B)是廢棄命令5155 的例子。表示了在廢棄命令中傳送廢棄對(duì)象的函數(shù)模型識(shí)別符為"foo"、 "foo2"的例子(圖18 (B)下方),以及傳達(dá)表示全部為廢棄對(duì)象的含義的 "all"的例子(圖18 (B)上方)。"foo"、 "foo2"可以取散列值。此時(shí),"all" 可以取與函數(shù)模型識(shí)別符不發(fā)生沖突的值。
圖22是由模型廢棄部進(jìn)行的函數(shù)模型廢棄的例子。在此,將刪除對(duì)象設(shè) 為在模型存儲(chǔ)部中存儲(chǔ)的全部模型。圖22 (A)是來(lái)自堆棧信息取得部的輸出 的例子。圖18 (A)的(1)、 (2)分別為第i-l堆棧信息、第i堆棧信息。設(shè) 這些堆棧信息是通過(guò)^f全測(cè)終端信息"x",得到了調(diào)用堆棧的搜索已中斷的結(jié)果 的信息。即,收到終端達(dá)到信息,終端達(dá)到標(biāo)志的狀態(tài)成為ON (圖18 (A) 的(3))。在該狀態(tài)下的模型廢棄部的處理根據(jù)終端到達(dá)標(biāo)志,把在以前的驗(yàn) 證中使用的函數(shù)模型"y"、 "main"(圖22 ( B )左側(cè))從模型存儲(chǔ)中廢棄(圖 22(B)中部)。以后,通過(guò)由動(dòng)作監(jiān)視部請(qǐng)求函數(shù)模型,由模型取得部在模 型存儲(chǔ)中存儲(chǔ)在驗(yàn)證中需要的函數(shù)模型"s"到"h"(圖22 (B)右側(cè))。
圖23是模型廢棄部使用的廢棄策略的例子。廢棄策略是由軟件識(shí)別符、 廢棄對(duì)象的列構(gòu)成的表,對(duì)每個(gè)軟件指定廢棄對(duì)象。即,由軟件識(shí)別符"10" 表示的軟件將廢棄對(duì)象設(shè)為在模型存儲(chǔ)中存儲(chǔ)的全部函數(shù)模型,軟件識(shí)別符 70、 30臨時(shí)變更LRU算法的閾值,將使用頻度低的函數(shù)模型作為對(duì)象。閾值, 可以根據(jù)通過(guò)事先動(dòng)作所得到的軟件的函數(shù)調(diào)用的頻度分布來(lái)決定。在分布中 沒有辨認(rèn)出局部性時(shí),將廢棄對(duì)象設(shè)為全部。 (軟件動(dòng)作監(jiān)視方法)然后,使用圖24以及圖25對(duì)第三實(shí)施方式的軟件動(dòng)作監(jiān)視方法進(jìn)行說(shuō)明。 首先,堆棧信息取得部5120從終端信息取得部5160取得終端信息(步驟 S5500)。根據(jù)調(diào)用堆棧的狀況25按順序取得堆棧幀(步驟S5510),并取得該 堆棧幀的返回地址(步驟S5520)。
然后,堆棧信息取得部5120按順序讀入終端信息,在步驟S5520中將取 得的返回地址與終端信息進(jìn)行比較(步驟S5530)。直到終端信息結(jié)束為止, 或者直到確認(rèn)了返回地址與終端信息的一致為止,繼續(xù)進(jìn)行步驟S5530。若在 直到終端信息結(jié)束還沒有確認(rèn)出 一致時(shí),將返回地址作為堆棧信息進(jìn)行記錄 (步驟S5540),直到堆棧幀結(jié)束為止,重復(fù)步驟S5510至步驟S5540。當(dāng)在 步驟S5530中確認(rèn)了一致時(shí),跳出循環(huán),輸出表示^f企測(cè)到終端信息的終端到達(dá) 信息(步驟S5550 ),并結(jié)束堆棧信息取得。終端到達(dá)信息傳達(dá)在搜索調(diào)用堆 棧時(shí)^r測(cè)到終端信息的旨意,可以用作使^t型廢棄部5150啟動(dòng)的觸發(fā)器,所 以例如可以作為具有對(duì)模型廢棄部5150的動(dòng)作啟動(dòng)進(jìn)行管理的標(biāo)志,建立該 標(biāo)志的位。
然后,參照?qǐng)D25對(duì)模型廢棄部5160的動(dòng)作例子進(jìn)行說(shuō)明。
首先,模型廢棄部5160取得在收到終端到達(dá)信息5160時(shí)用于理解作為刪 除對(duì)象的函數(shù)模型的廢棄策略(步驟S5100)。然后,進(jìn)行監(jiān)一見對(duì)象進(jìn)程已結(jié) 束的驗(yàn)證、和已收到終端到達(dá)信息的驗(yàn)證(分別為步驟S5120、 S5130),在無(wú) 論哪個(gè)事項(xiàng)都沒有檢測(cè)到時(shí),重復(fù)S5110到S5130。
在步驟S5120中檢測(cè)到事項(xiàng)時(shí),結(jié)束模型廢棄處理。此外,在步驟S5130 中檢測(cè)到事項(xiàng)時(shí),取得當(dāng)前的進(jìn)程存儲(chǔ)器使用量(步驟S5140),驗(yàn)證存儲(chǔ)器 使用量是否超過(guò)了某個(gè)閾值(步驟S5150)。在存儲(chǔ)器使用量沒有超過(guò)閾值時(shí), 返回步驟S5110,在超過(guò)了閾值時(shí),按照廢棄策略刪除模型函數(shù)存儲(chǔ)部?jī)?nèi)的函 數(shù)模型(步驟S5160),返回步驟S5110。
在第三實(shí)施方式中,為了決定刪除對(duì)象函數(shù)模型使用了策略,但在預(yù)先已 決定了時(shí)不需要策略。此時(shí),可以刪除步驟S5100。此外,在第三實(shí)施方式中, 根據(jù)存儲(chǔ)器使用量來(lái)判定是否刪除,但在不根據(jù)存儲(chǔ)器使用量時(shí),也可以刪除 步驟S5140至步驟S5150。 (作用以及效果)
30當(dāng)考慮非專利文獻(xiàn)1的方法時(shí),由終端信息以后出現(xiàn)的堆棧幀信息表示的 函數(shù)從-瞼證對(duì)象中刪除。即,在存儲(chǔ)器上可以不存在在該一致部分中存在的函 數(shù)的函數(shù)模型。因此,第三實(shí)施方式的軟件動(dòng)作監(jiān)視裝置在搜索調(diào)用堆棧時(shí), 以檢測(cè)到與終端信息匹配的返回地址為契機(jī),中斷調(diào)用堆棧的搜索,并且廢棄 在緩沖存儲(chǔ)器中記錄的函數(shù)模型。
因此,根據(jù)第三實(shí)施方式的軟件動(dòng)作監(jiān)視裝置,在軟件執(zhí)行過(guò)程中監(jiān)視監(jiān) 視對(duì)象軟件的動(dòng)作時(shí),可以從存儲(chǔ)器中排除不需要的函數(shù)模型,因此可以在抑 制時(shí)間開銷的狀況下削減整個(gè)監(jiān)視裝置的空間開銷。此外,可以從存儲(chǔ)器中排 除在存儲(chǔ)器中剩余的不需要的函數(shù)模型,可以抑制使用存儲(chǔ)量。
函數(shù)模型廢棄有可能廢棄在產(chǎn)生下次系統(tǒng)調(diào)用時(shí),在驗(yàn)證堆棧差分信息時(shí) 所需要的函數(shù)才莫型。因此,終端信息取得部通過(guò)取得作為終端信息記錄了根據(jù) 事先取得的堆棧信息的時(shí)間序列,在任意的期間從調(diào)用堆棧的底部看存在于固 定位置的堆棧幀信息的信息,由此在進(jìn)行驗(yàn)證時(shí),可以只廢棄在某個(gè)期間不使 用的函數(shù)模型,所以可以降低與基于終端信息的函數(shù)模型的廢棄相伴的風(fēng)險(xiǎn)。
此外,根據(jù)存儲(chǔ)器的空閑狀況,不廢棄函數(shù)模型而按照LRU算法等進(jìn)行
高速緩存可以減輕時(shí)間開銷。因此,模型廢棄部掌握當(dāng)前的使用存儲(chǔ)量,對(duì)是 否進(jìn)行基于終端信息的函數(shù)模型的廢棄進(jìn)行切換,由此可以只在需要的情況下 廢棄模型函數(shù),因此可以降低風(fēng)險(xiǎn)。
此外,特別是,堆棧幀信息的特征在于其是返回地址,由此無(wú)需修正調(diào)用 堆棧可以取得識(shí)別堆棧幀的信息。
此外,與在某個(gè)期間存儲(chǔ)函數(shù)模型的模型存儲(chǔ)(存儲(chǔ)器、緩沖存儲(chǔ)器等) 連接,模型取得部對(duì)取得的函數(shù)模型附加識(shí)別符來(lái)存儲(chǔ)在模型存儲(chǔ)中,模型廢 棄部的特征為對(duì)模型存儲(chǔ)部傳送通過(guò)識(shí)別符指定要廢棄的函數(shù)模型的廢棄命 令,由此可以確定要廢棄的函數(shù)模型。
根據(jù)本發(fā)明,可提供正確地檢測(cè)攻擊,削減軟件監(jiān)視動(dòng)作中的時(shí)間以及空 間開銷的軟件動(dòng)作模型化裝置、軟件動(dòng)作監(jiān)視裝置、軟件動(dòng)作模型化方法以及 軟件動(dòng)作監(jiān)視方法。
權(quán)利要求
1. 一種軟件動(dòng)作模型化裝置,其特征在于,具備堆棧信息記錄部,其在軟件的執(zhí)行環(huán)境中,在軟件執(zhí)行過(guò)程中,可得知在調(diào)用堆棧中累積的順序地取得對(duì)發(fā)生了特定事件的時(shí)刻的調(diào)用堆棧中累積的堆棧幀進(jìn)行識(shí)別的堆棧幀信息,并且按照特定事件的發(fā)生順序進(jìn)行記錄;終端信息記錄部,其將i設(shè)為自然數(shù),從調(diào)用堆棧的底部開始按照順序比較由所述堆棧信息記錄部記錄的第i-1堆棧信息和第i堆棧信息,將調(diào)用堆棧的位置和堆棧幀信息一致的部分作為一致部分,將檢測(cè)到不同的堆棧幀信息后以后的部分作為不一致部分,記錄作為形成一致部分和不一致部分的邊界的堆棧幀信息的終端信息;第1堆棧差分信息生成部,其使用所述終端信息記錄部記錄的終端信息,將從堆棧信息的堆棧上位開始到檢測(cè)出終端信息為止的信息相互聯(lián)結(jié)的信息生成為堆棧差分信息;以及模型生成部,其根據(jù)堆棧差分信息,生成該軟件的動(dòng)作模型。
2. 根據(jù)權(quán)利要求1所述的軟件動(dòng)作模型化裝置,其特征在于, 所述終端信息記錄部將所述特定事件的識(shí)別符和終端信息的同現(xiàn)頻率高的終端信息與所述特定事件的識(shí)別符一同進(jìn)行記錄,所述堆棧差分信息生成部,從所述終端信息記錄部記錄的終端信息中,使 用特定事件的識(shí)別符取得用于生成堆棧差分信息的終端信息。
3. 權(quán)利要求要求1或2所述的軟件動(dòng)作模型化裝置,其特征在于, 所述終端信息記錄部將根據(jù)所述堆棧信息記錄部記錄的堆棧信息的時(shí)間序列,在任意的期間內(nèi)從調(diào)用堆棧的底部看存在于固定位置的堆棧幀信息作為 終端信息進(jìn)行記錄。
4. 權(quán)利要求要求3所述的軟件動(dòng)作模型化裝置,其特征在于, 所述終端信息記錄部可以掌握從調(diào)用堆棧的底部看堆棧幀信息位于固定位置的期間的長(zhǎng)度,將所述期間長(zhǎng)的堆棧幀信息作為終端信息進(jìn)行記錄。
5. 權(quán)利要求要求1~4的任意一項(xiàng)所述的軟件動(dòng)作模型化裝置,其特征在于,還具備模型取得部,其取得由所述模型生成部生成的、成為監(jiān)視對(duì)象的軟件的動(dòng) 作模型;終端信息取得部,其取得由所述終端信息記錄部記錄的終端信息; 堆棧信息取得部,其在檢索調(diào)用堆棧時(shí),在檢索到由所述終端信息取得部傳送的終端信息的時(shí)刻,中斷從調(diào)用堆棧取得堆棧幀信息,按照特定事件的發(fā)生順序進(jìn)行記錄;第2堆棧差分信息生成部,將把所述堆棧信息取得部取得的第i-l堆棧信 息和第i堆棧信息相互聯(lián)結(jié)后的信息生成為堆棧差分信息;以及動(dòng)作監(jiān)^l部,其判定所述堆棧差分信息生成部生成的所述堆棧差分信息和 所述模型取得部取得的所述動(dòng)作模型的背離。
6. 權(quán)利要求要求1~5的任意一項(xiàng)所述的軟件動(dòng)作模型化裝置,其特征在于,所述堆棧幀信息是返回地址。
7. —種軟件動(dòng)作監(jiān)視裝置,其特征在于, 具備模型取得部,在將表示了與通過(guò)監(jiān)視對(duì)象軟件發(fā)行的特定事件期期間執(zhí)行 的函數(shù)調(diào)用以及任意的函數(shù)返回的發(fā)行順序的同現(xiàn)關(guān)系的動(dòng)作模型設(shè)為函數(shù) 模型時(shí),對(duì)監(jiān)視對(duì)象軟件發(fā)行的每個(gè)特定的事件取得所述函數(shù)模型;終端信息取得部,其在軟件的執(zhí)行環(huán)境中,取得適合于所述監(jiān)視對(duì)象軟件 的終端信息;堆棧信息取得部,其在該軟件的執(zhí)行過(guò)程中,可以得知在調(diào)用堆棧中累積 的順序地取得對(duì)發(fā)生了特定事件的時(shí)刻的調(diào)用堆棧中累積的堆棧幀進(jìn)行識(shí)別 的堆棧幀信息,并且在搜索調(diào)用堆棧時(shí),在檢測(cè)到由所述終端信息取得部傳送 的終端信息的時(shí)刻,中斷從調(diào)用堆棧取得堆棧幀信息,按照特定事件的發(fā)生順 序進(jìn)行記錄;堆棧差分信息生成部,將把所述堆棧信息取得部取得的第i-l堆棧信息和 第i堆棧信息相互聯(lián)結(jié)后的信息生成為堆棧差分信息;以及動(dòng)作監(jiān)^L部,其判定所述堆棧差分信息生成部生成的所述堆棧差分信息和 所述模型取得部取得的所述動(dòng)作模型的背離。
8. 根據(jù)權(quán)利要求7所述的軟件動(dòng)作監(jiān)視裝置,其特征在于, 還具備廢棄由所述模型取得部記錄的函數(shù)模型的模型廢棄部, 所述模型取得部取得事先根據(jù)監(jiān)視對(duì)象軟件的代碼對(duì)每個(gè)函數(shù)生成的、表示函數(shù)相互的調(diào)用關(guān)系的函數(shù)模型,所述動(dòng)作監(jiān)視部判定由所述堆棧差分信息生成部生成的堆棧差分信息和 所述模型取得部取得的所述函數(shù)模型的背離,所述堆棧信息取得部在從調(diào)用堆棧中取得堆棧幀信息時(shí),在檢測(cè)到與終端 信息一致的堆棧幀信息的情況下,中斷堆棧幀信息的取得,此時(shí),所述4莫型廢 棄部廢棄所述模型取得部為了以前的堆棧差分信息的監(jiān)視而記錄的函數(shù)模型。
9. 根據(jù)權(quán)利要求7或8所述的軟件動(dòng)作監(jiān)視裝置,其特征在于, 所述終端信息取J尋部,取得將根據(jù)所述堆棧信息記錄部記錄的堆棧信息的時(shí)間序列,在任意的期間從調(diào)用堆棧的底部看存在于固定位置的堆棧幀信息作 為終端信息記錄了的信息。
10. 根據(jù)權(quán)利要求9所述的軟件動(dòng)作監(jiān)視裝置,其特征在于, 所述終端信息記錄部,取得將從調(diào)用堆棧的底部看堆棧幀信息存在于固定位置的期間長(zhǎng)的堆棧幀信息作為終端信息記錄了的信息。
11. 根據(jù)權(quán)利要求7 10的任意一項(xiàng)所述的軟件動(dòng)作監(jiān)視裝置,其特征在于,所述模型廢棄部掌握系統(tǒng)當(dāng)前的使用存儲(chǔ)量,對(duì)是否進(jìn)行基于終端信息的 函數(shù)模型的廢棄進(jìn)行切換。
12. 根據(jù)權(quán)利要求7~11的任意一項(xiàng)所述的軟件動(dòng)作監(jiān)視裝置,其特征在于,還具備存儲(chǔ)函數(shù)模型的模型存儲(chǔ)部,所述模型取得部對(duì)取得的函數(shù)模型附加識(shí)別符后記錄在所述模型存儲(chǔ)中, 所述模型廢棄部向所述模型存儲(chǔ)部傳送通過(guò)所述識(shí)別符指定要廢棄的函 數(shù)模型的廢棄命令。
13. —種軟件動(dòng)作模型化方法,其特征在于,包含以下的步驟在軟件的執(zhí)行環(huán)境中,在軟件執(zhí)行過(guò)程中,可以得知在調(diào)用堆棧中累積的 順序地取得對(duì)發(fā)生了特定事件的時(shí)刻的調(diào)用堆棧中累積的堆棧幀進(jìn)行識(shí)別的 堆棧幀信息,并且按照特定事件的發(fā)生順序進(jìn)行記錄;將i設(shè)為自然數(shù),從調(diào)用堆棧的底部開始按照順序比較由所述堆棧信息記 錄部記錄的第i-l堆棧信息和第i堆棧信息,將調(diào)用堆棧的位置和堆棧幀信息 一致的部分作為一致部分,將在檢測(cè)到不同的堆棧幀信息后以后的部分作為不一致部分,記錄作為形成一致部分和不一致部分的邊界的堆棧幀信息的終端信臺(tái) ,&,使用所述終端信息記錄部記錄的終端信息,將把從所述堆棧信息的堆棧上 位開始到檢測(cè)出終端信息為止的信息相互聯(lián)結(jié)后的信息生成為堆棧差分信息; 以及根據(jù)堆棧差分信息,生成該軟件的動(dòng)作模型。
14. 一種軟件動(dòng)作監(jiān)^L方法,其特征在于, 包含以下的步驟取得表示了監(jiān)視對(duì)象軟件發(fā)行的特定事件與對(duì)每個(gè)特定的事件在特定的 事件期間執(zhí)行的函數(shù)調(diào)用以及任意的函數(shù)返回的發(fā)行順序的同現(xiàn)關(guān)系的動(dòng)作模型;在軟件的執(zhí)行環(huán)境中,取得適合于所述監(jiān)視對(duì)象軟件的終端信息;在該軟件的執(zhí)行過(guò)程中,可以得知在調(diào)用堆棧中累積的順序地取得對(duì)發(fā)生 了特定事件的時(shí)刻的調(diào)用堆棧中累積的堆棧幀進(jìn)行識(shí)別的堆棧幀信息,并且在 搜索調(diào)用堆棧時(shí),在檢測(cè)到由所述終端信息取得部傳送的終端信息的時(shí)刻,中 斷從調(diào)用堆棧取得堆棧幀信息,按照特定事件的發(fā)生順序進(jìn)行記錄;將把所述堆棧信息取得部取得的第i-l堆棧信息和第i堆棧信息相互聯(lián)結(jié) 后的信息生成為堆棧差分信息;判定所述堆棧差分信息生成部生成的所述堆棧差分信息和所述模型取得 部取得的所述動(dòng)作模型的背離。
全文摘要
軟件動(dòng)作模型化裝置(100)具備堆棧信息記錄部(120);終端信息記錄部(150);使用終端信息記錄部(150)記錄的終端信息,作為堆棧差分信息生成將從堆棧信息的調(diào)用堆棧上位開始到檢測(cè)到終端信息為止的信息相互聯(lián)結(jié)后的信息的堆棧差分信息生成部(130);以及根據(jù)堆棧差分信息,生成該軟件的動(dòng)作模型的模型生成部(140)。
文檔編號(hào)G06F11/30GK101432754SQ20078001327
公開日2009年5月13日 申請(qǐng)日期2007年4月12日 優(yōu)先權(quán)日2006年4月12日
發(fā)明者中山雄大, 加藤和彥, 竹下敦, 金野晃, 鈴木勝博, 阿部洋丈 申請(qǐng)人:株式會(huì)社Ntt都科摩;國(guó)立大學(xué)法人筑波大學(xué)