[發明專利]一種針對虛擬化超級調用函數的漏洞熱修復方法有效
| 申請號: | 201710233167.6 | 申請日: | 2017-04-11 |
| 公開(公告)號: | CN107239696B | 公開(公告)日: | 2019-07-19 |
| 發明(設計)人: | 賈曉啟;鄭小妹;白璐;杜海超;唐靜;武希耀;黃慶佳 | 申請(專利權)人: | 中國科學院信息工程研究所 |
| 主分類號: | G06F21/53 | 分類號: | G06F21/53;G06F21/57 |
| 代理公司: | 北京君尚知識產權代理事務所(普通合伙) 11200 | 代理人: | 邱曉鋒 |
| 地址: | 100093 *** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 超級調用 處理函數 物理地址 熱修復 漏洞 虛擬化平臺 起始地址 物理內存 特權域 虛擬化 修復 補丁 內存 補丁函數 虛擬地址 機器碼 虛擬機 映射 重啟 寫入 更新 記錄 保證 | ||
1.一種針對虛擬化超級調用函數的漏洞熱修復方法,其步驟包括:
1)根據Xen系統的e820表計算Xen物理內存起始地址;
2)根據計算出的Xen物理內存起始地址及Xen內存分布,計算超級調用表的虛擬地址所映射到的物理地址;
3)通過特權域Domain0獲取補丁機器碼,并將補丁寫入內存,記錄補丁函數的物理地址;
4)根據待修復的超級調用處理函數對應的超級調用號,計算待修復的超級調用處理函數在超級調用表中對應的物理地址;
5)通過特權域Domain0更新超級調用表,將超級調用表中待修復的的超級調用處理函數的物理地址更改為步驟3)中記錄的補丁函數的物理地址,從而實現對超級調用處理函數的漏洞熱修復。
2.如權利要求1所述的方法,其特征在于:步驟1)所述Xen物理內存起始地址是指Xen啟動后內核函數的首地址,Xen啟動后將內核動態重映射到一個高端的物理地址;所述高端的物理地址通過以下公式確定:
xen_phys_start=end-reloc_size,
其中,xen_phys_start即所述高端的物理地址,end代表物理地址空間中4G之內最大可用內存首地址;reloc_size為Xen的代碼和數據段所占的內存空間的大小。
3.如權利要求2所述的方法,其特征在于,步驟2)通過查看Xen內存分布獲得Xen內存虛擬起始地址xen_virt_start,并通過查看Xen-syms文件獲得超級調用表虛擬地址VA,然后根據所述Xen物理內存起始地址推算出超級調用表的物理地址PA的計算公式:
PA=xen_phys_start+VA-xen_virt_start。
4.如權利要求1所述的方法,其特征在于,步驟3)結合已有的Linux下內核修復方法kpatch和kgraft的實現原理,在同一主機上修復超級調用處理函數源碼,并重新編譯Xen源碼,最后通過特權域Domain0讀取新的Xen二進制文件以獲取補丁函數的機器碼;然后特權域Domain0通過執行DMA寫操作將補丁機器碼寫入內存。
5.如權利要求1所述的方法,其特征在于,步驟3)通過在另一主機上修復內核函數源碼,重新編譯安裝Xen,最后通過特權域Domain0的DMA操作讀取補丁函數的機器碼;補丁的寫入通過特權域Domain0的讀操作將機器碼寫入kmalloc操作申請到的內核空間。
6.如權利要求1所述的方法,其特征在于,步驟4)通過以下公式計算待修復的超級調用處理函數的入口地址MA:
MA=PA+%eax*4,或者MA=PA+%eax*8,
其中,eax為超級調用號,PA為超級調用表所在內存物理地址,4表示32位系統下每個超級調用表項大小為4字節,8表示64位系統下每個超級調用表項大小為8字節。
7.如權利要求1所述的方法,其特征在于,步驟5)通過特權域Domain0的一次DMA讀操作,將超級調用表中指定的超級調用處理函數地址更改為新超級調用處理函數的入口地址;正在執行的超級調用處理函數仍使用原超級調用處理函數,修復完成后,替換到新超級調用處理函數執行。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中國科學院信息工程研究所,未經中國科學院信息工程研究所許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710233167.6/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種多功能鋼板表面自動化噴膠機
- 下一篇:一種具備升降功能的粉筆盒





