專利名稱:防止篡改ActiveX控件用途的方法和系統的制作方法
技術領域:
本申請涉及計算機網絡安全技術領域,特別是涉及一種防止篡改ActiveX控件用途的方法及系統。
背景技術:
ActiveX是一個用于定義與編程語言無關的組件重用的架構,由此,軟件就可以由這些與編程語言無關的組件所構成。ActiveX是微軟(Microsoft)于1996年提出的,它是對組建對象模型(Component Object Model, COM)和鏈接嵌入對象(Object Linking andEmbedding, OLE)技術的一個發展。ActiveX控件(ActiveX Controls)作為一個用于定義與編程語言無關的組件重用的架構,可用于創建可通過web瀏覽器工作在互聯網上的分布式應用程序。ActiveX控件日益成為開發應用于多種容器的可編程軟件組件(programmable software components)的主流架構。ActiveX控件可以在本地計算機中以當前用戶權限做任何的事情,比如讀寫注冊表、訪問文件系統等。另外,ActiveX控件可以嵌入到腳本容器中并且可被腳本驅動。在比如IE瀏覽器(Internet Explorer)中的宿主容器中,驅動控件的腳本的來源是未知的、不可信任的。因此,如果ActiveX控件被惡意來源的站點使用惡意腳本調用,惡意篡改其用途(Repurposing),而插件又具有無限制的運行權限,這將給用戶的計算機系統帶來極大的安全威脅。
發明內容
本申請所要解決的技術問題是提供一種防止篡改ActiveX控件用途的方法及系統,能夠識別惡意網頁,解決 ActiveX控件因為被惡意篡改用途而給用戶計算機帶來安全威脅的問題。為了解決上述問題,本申請公開了一種防止篡改ActiveX控件用途的方法,包括以下步驟ActiveX控件將接口的預置結果返回給宿主容器;ActiveX控件獲取宿主容器的當前頁面地址;ActiveX控件將獲取的當前頁面地址向驗證服務器發送驗證請求;驗證服務器驗證當前頁面是否可信,并將結果返回給ActiveX控件;ActiveX控件根據返回結果確定是否允許自己被當前頁面繼續使用,若當前頁面可信,則允許當前頁面繼續使用,反之,則不允許被當前頁面繼續使用。進一步地,所述ActiveX控件不允許被當前頁面繼續使用包括ActiveX控件中斷宿主容器創建ActiveX對象的操作;或ActiveX控件拒絕當前頁面訪問ActiveX控件提供的接口。進一步地,所述ActiveX控件根據返回結果確定是否允許自己被當前頁面繼續使用包括
ActiveX控件通過接口方法的返回值控制ActiveX對象的創建過程;若當前頁面可信,則接口方法返回預設的正確代碼,允許ActiveX對象完成創建;若當前頁面不可信,則接口方法返回預設的錯誤代碼,宿主容器根據接收到的接口方法返回值中斷創建ActiveX 對象。進一步地,所述ActiveX控件根據返回結果確定是否允許自己被當前頁面繼續使用包括ActiveX控件將結果存儲在ActiveX控件內部的成員變量中;在ActiveX的所有接口實現中首先檢查該成員變量,若當前頁面不可信,則ActiveX控件提供的接口拒絕當前頁面腳本對接口的調用。進一步地,所述ActiveX控件獲取宿主容器發送的當前頁面地址包括宿主容器調用ActiveX控件的IOb jectWithSite接口的SetSite方法將容器指針傳遞給ActiveX控件;ActiveX控件根據獲取的容器指針取得當前頁面的地址HostUrl。進一步地,所述ActiveX控件通過https向驗證服務器發送驗證請求。進一步地,所述驗證服務器驗證當前頁面是否可信包括驗證服務器將獲取的當前頁面地址根據一定的邏輯與預先存儲的可信列表中的地址進行查找,若包含在可信列表中,則認為當前頁面是可信的,反之,則認為當前頁面是不可信的,所述查找邏輯包括域匹配、站點匹配、地址參數匹配、整個頁面地址匹配。進一步地,所述方法還包括 自動或人工更新所述驗證服務器中預先存儲的可信列表。為了解決上述問題,本申請還公開了一種防止篡改ActiveX控件用途的系統,包括ActiveX控件,用于將IobjectSafety的預置結果返回給宿主容器,從而獲取當前頁面地址,并將當前頁面地址傳送給驗證服務器;驗證服務器,用于驗證ActiveX控件傳送的宿主容器的當前頁面地址,并將結果返回給ActiveX控件;所述ActiveX控件根據驗證服務器的結果確定是否允許自己被當前頁面繼續使用,若當前頁面可信,則允許被當前頁面繼續使用,反之,則不允許被當前頁面繼續使用。進一步地,所述ActiveX控件包括操作確定模塊,用于確定是否中斷宿主容器創建ActiveX對象的操作;或訪問確定模塊,用于確定是否允許當前頁面訪問ActiveX控件提供的接口。進一步地,所述ActiveX控件包括驗證模塊,用于根據宿主容器傳送的容器指針取得當前頁面的地址HostUrl。進一步地,所述驗證模塊包括發送單元,用于通過https向驗證服務器發送驗證請求。進一步地,所述系統還包括列表管理器,用于維護更新驗證服務器中存儲的可信列表,可信列表的記錄形式可以是以下所列中的一種或多種域名、站點、頁面地址、頁面地址的中參數、匹配模式。與現有技術相比,本申請包括以下優點
本申請的防止篡改ActiveX控件用途的方法及系統通過在ActiveX控件預設返回結果,當宿主容器(JavaScript和VBScript引擎)調用IobjectSafety接口時,ActiveX控件首先返回預置結果,使得ActiveX對象的創建過程能夠繼續進行;然后,在宿主容器調用IObjectSafety接口的SetSite方法時,ActiveX控件獲取當前頁面地址(HostUrl),并發送網頁到驗證服務器進行驗證,通過驗證服務器的返回結果判斷當前頁面是否合法,并采取相應的處理辦法。由于宿主容器(JavaScript和VBScript引擎)是在調用IObjectSafety接口并得到“本ActiveX控件安全”的回復后才會調用SetSite方法,因此,通過控制IObjectSafety接口的返回值的傳統驗證方法不能適用于這類宿主容器。通過本方法,一方面,預置的安全回復結果能使宿主容器創建ActiveX對象的過程繼續;另一方面,在后續的創建過程(即調用SetSite方法獲取到HostUrl后)會被截斷以驗證HostUrl的合法性,以此為憑據來決定創建過程是否中止,或者決定宿主容器是否可以使用控件接口提供的功能。以此來阻止惡意腳本對控件接口的非法調用,從而避免ActiveX控件被非法篡改用途。另外,通過將網頁地址發送給驗證服務器來進行驗證,可以只在服務器端維護可信列表,并可以及時的維護更新。這就突破了傳統方法中可信列表編譯在控件內部,當可信列表變化時必須重新發布插件的限制,也就省去了用戶端瀏覽器在可信站點變化時必須重新升級插件的步驟。進一步地,使用https進行ActiveX控件與驗證服務器的通信,保證了驗證過程的保密性和完整性。當然,實施本申請的任一產品不一定需要同時達到以上所述的所有優點。
圖1是本申請的 防止篡改ActiveX控件用途的方法實施例一的流程圖;圖2是本申請的防止篡改ActiveX控件用途的方法實例圖;圖3是本申請的防止篡改ActiveX控件用途的方法中ActiveX控件識別惡意網頁實例的流程圖;圖4是本申請的防止篡改ActiveX控件用途的系統實施例一的結構示意圖;圖5是本申請的防止篡改ActiveX控件用途的系統實施例二的結構示意圖。
具體實施例方式為使本申請的上述目的、特征和優點能夠更加明顯易懂,下面結合附圖和具體實施方式
對本申請作進一步詳細的說明。參照圖1,示出本申請的一種惡意網頁識別的方法實施例一,包括以下步驟步驟101,ActiveX控件將接口的預置結果返回給宿主容器。在一個頁面需要使用ActiveX控件時,宿主容器(如Javascript或Vbscript)首先會創建ActiveX對象,而在創建ActiveX對象的過程中,宿主容器會首先詢問ActiveX控件是否安全,只有ActiveX控件回復安全后才能繼續創建ActiveX對象。因此,通過預先設置ActiveX控件的回復,使宿主容器能夠繼續創建ActiveX對象,以便進行后續操作。參照圖2,其中,ActiveX控件實現了 IObjectSafety接口,宿主調用IObjectSafety接口來詢問ActiveX控件“是否可初始化”或“是否可以和腳本交互”。因為預先設置,ActiveX控件都會回答“是”,即直接返回IObjectSafety接口中的預置結果,從而繼續進行后續步驟。步驟102,ActiveX控件獲取宿主容器的當前頁面地址。宿主容器在得到預置回復后會繼續創建ActiveX對象,并調用ActiveX控件的IObjectWithSite接口的SetSite方法以將容器指針(IUnknown*pUnkSite)傳遞給ActiveX控件。ActiveX控件拿到容器指針后就可以取得當前頁面的地址HostUrl,然后向服務器發起驗證請求,例如,querylsValid(HostUrl)。步驟103,ActiveX控件將獲取的當前頁面地址向驗證服務器發送驗證請求。向驗證服務器發起的驗證請求通過https進行通信,可以防止參數被修改,保證通信過程的保密性和完整性。步驟104,驗證服務器驗證當前頁面是否可信,并將結果返回給ActiveX控件。驗證服務器中會預先存儲可信列表,當獲取到當前頁面地址之后,便會與可信列表中的地址進行查找,若包含在可信列表中,則認為當前頁面是可信的,反之,則認為當前頁面是不可信的,并將查詢結果返回給ActiveX控件。查找邏輯包括域(Domain)匹配、站點(Host)匹配、地址參數匹配、整個頁面地址匹配具體的,驗證服務器在收到HostUrl后,對HostUrl進行分析,通過服務器端的控制邏輯判斷該引用頁面是否是合法可信的,驗證服務器將查詢結果返回給ActiveX控件。
進一步地,服務器可對存儲的可信列表進行實時更新,保證可信站點的時效性,更靈活地滿足業務需求。步驟105,ActiveX控件根據驗證服務器的結果確定是否允許自己被當前頁面繼續使用,若當前頁面可信,則允許被當前頁面繼續使用,反之,則不允許被當前頁面繼續使用。其中,是否允許自己被當前頁面繼續使用有兩種處置方法一種為,ActiveX控件根據IObjectWithSite接口方法,如SetSite方法的返回值來控制ActiveX對象的創建過程;若當前頁面是可信站點,則SetSite方法返回預設的正確代碼,如S_0K ;若當前頁面是不可信站點,則SetSite方法返回預設的錯誤代碼,如E_FAIL或E_ACCESSDENIED。宿主容器根據接收的SetSite方法的返回值來確實是否允許繼續創建ActiveX對象。若SetSite方法的返回值為S_0K,則允許ActiveX對象完成創建,若SetSite方法的返回值為E_FAIL或E_ACCESSDENIED,會中斷創建ActiveX對象。另一種為,IObjectWithSite接口方法,如SetSite方法會始終返回預設的正確代碼,即會允許ActiveX對象完成創建,但是通過禁止調用接口的方式來禁止當前網頁對ActiveX控件的繼續使用,從而避免ActiveX控件用途被篡改。具體的,包括將驗證服務器的結果存儲在ActiveX對象內部的成員變量中以作為后續對接口訪問合法性判斷的依據(假設變量名為flag_isValid)。具體地,在所有接口實現的方法的開始部分檢查該成員變量flag_isValid便可以判斷當前頁面是否可信,如果當前頁面不可信,則接口立即返回預設的錯誤代碼,如E_ACCESSDENIED,來拒絕當前頁面腳本對接口的調用,這樣,惡意腳本就很難篡改控件用途。例如,參照圖3,以將驗證結果作為ActiveX控件內部的成員變量作為后續判定依據為例,宿主容器通過腳本調用創建完成ActiveX對象的過程中,都會檢查flag_isValid的狀態,如果是合法來源,則進入正常功能的執行流程,為宿主容器提供相應功能;如果是非法來源,則立即中斷執行,不再執行任何功能。采取這種方式,所有接口都被保護起來,具有較好的隱蔽性,使攻擊者無法利用ActiveX控件內部的潛在漏洞對用戶系統造成危害。參照圖4,示出本申請的惡意網頁識別的系統,包括ActiveX控件10和驗證服務器20。其中,ActiveX控件10用于將接口的預置結果返回給宿主容器,從而獲取當前頁面地址,并將當前頁面地址傳送給驗證服務器20,并根據驗證服務器20的返回結果確定是否允許自己被當前頁面繼續使用,若當前頁面可信,則允許被當前頁面繼續使用,反之,則不允許被當前頁面繼續使用。優選地,ActiveX控件包括操作確定模塊或訪問確定模塊。其中,操作確定模塊,用于確定是否中斷宿主容器創建ActiveX對象的操作。具體的,操作確定模塊通過IObjectWithSite接口方法,如SetSite方法的返回值控制ActiveX對象的創建過程;若當前頁面可信,則SetSite方法返回預設的正確代碼,如S_0K,允許ActiveX對象完成創建;若當前頁面不可信,則SetSite方法返回預設的錯誤代碼,如E_FAIL*E_ACCESSDENIED,宿主容器根據接收到的SetSite返回值中斷創建ActiveX對象。訪問確定模塊,用于確定是否允許當前頁面訪問ActiveX控件提供的接口。具體的,訪問確定模塊將結果存儲在ActiveX控件內部的成員變量中;在所有接口實現的方法的開始部分檢查該成員變量,若當前頁面不可信,則ActiveX控件提供的接口拒絕當前頁面腳本對接口的調用。驗證服務器20用于驗證ActiveX控件10傳送的頁面地址,并將結果返回給ActiveX控件10。其中,驗證服務器中存儲可信站點的可信列表(即白名單),并在收到ActiveX控件10請求后將驗證結果通過驗證模塊反饋給ActiveX控件10。可信列表的記錄形式可以是以下所列中的一種或多種域名(Domain)、站點(Host)、頁面地址(URL)、頁面地址的中參數、匹配模式。優選地,ActiveX控件10包括預置模塊和驗證模塊。預置模塊,用于預先設置IObjectSafety接口的返回結果,使宿主容器能夠繼續創建ActiveX對象,從而使驗證模塊能夠獲取宿主容器傳送的當前頁面地址HostUrl。驗證模塊,用于獲取當前頁面地址HostUrl,并將HostUrl傳送給驗證服務器20。優選地,驗證模塊根據宿主容器傳送的容器指針取得當前頁面的地址HostUrl。優選地,ActiveX控件10的驗證模塊包括發送單元,通過https與驗證服務器20鏈接,確保了通信的內容不易被篡改,使系統的整體安全性得到了較好地保證。參照圖5,優選地,系統還包括列表管理器30,用于維護驗證服務器20中的可信列表,可以由人工完成,也可以根據程序邏輯自動完成。本申請的防止篡改ActiveX控件用途的方法及系統通過在ActiveX控件預設返回結果,當宿主容器(JavaScript和VBScript引擎)調用IObjectSafety時,ActiveX控件首先返回預置結果,使得ActiveX對象的創建過程能夠繼續進行;然后,在宿主容器調用SetSite方法時,ActiveX控件獲取當前頁面地址(以下稱HostUrl),并發送網頁到驗證服務器進行驗證,通過驗證服務器的返回結果判斷當前頁面是否合法,并采取相應的處理辦法。由于宿主容器(JavaScript和VBScript引擎)是在調用10bjectSafety接口并得到“本ActiveX控件安全”的回復后才會調用SetSite獲取當前頁面地址,因此,先調用SetSite驗證后再返回IObjectSafety接口值的傳統驗證方法不能適用于這類宿主容器。通過本方法,一方面,預置的安全回復結果能使宿主容器創建ActiveX對象的過程繼續;另一方面,在后續的創建過程(即調用SetSite方法獲取到HostUrl后)會被截斷以驗證HostUrl的合法性,以此為憑據來決定創建過程是否中止,或者決定宿主容器是否可以使用控件接口提供的功能。以此來阻止惡意腳本對控件接口的非法調用,從而避免ActiveX控件被非法篡改用途。另外,通過將網頁地址發送給驗證服務器來進行驗證,可以只在服務器端維護可信列表,并可以及時的維護更新,從而使驗證結果更為及時準確。進一步地,這也突破了傳統方法中可信列表編譯在控件內部,當可信列表變化時必須重新發布插件的限制,也就省去了用戶端瀏覽器在可信站點變化時必須重新升級插件的步驟。進一步地,使用https進行ActiveX控件與驗證服務器的通信,保證了驗證過程的保密性和完整性。本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。對于系統實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。以上對本申請所提供的防止篡改ActiveX控件用途的方法及系統進行了詳細介紹,本文中應用了具體個例對本申請的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本申請的方法及其核心思想;同時,對于本領域的一般技術人員,依據本申請的思想,在具體實施方式
及應用范圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本申請的限制 。
權利要求
1.一種防止篡改ActiveX控件用途的方法,其特征在于,包括以下步驟 ActiveX控件將接口的預置結果返回給宿主容器; ActiveX控件獲取宿主容器的當前頁面地址; ActiveX控件將獲取的當前頁面地址向驗證服務器發送驗證請求; 驗證服務器驗證當前頁面是否可信,并將結果返回給ActiveX控件; ActiveX控件根據返回結果確定是否允許自己被當前頁面繼續使用,若當前頁面可信,則允許當前頁面繼續使用,反之,則不允許被當前頁面繼續使用。
2.如權利要求1所述的防止篡改ActiveX控件用途的方法,其特征在于,所述ActiveX控件不允許被當前頁面繼續使用包括 ActiveX控件中斷宿主容器創建ActiveX對象的操作;或 ActiveX控件拒絕當前頁面訪問ActiveX控件提供的接口。
3.如權利要求2所述的防止篡改ActiveX控件用途的方法,其特征在于,所述ActiveX控件根據返回結果確定是否允許自己被當前頁面繼續使用包括 ActiveX控件通過接口方法的返回值控制ActiveX對象的創建過程;若當前頁面可信,則接口方法返回預設的正確代碼,允許ActiveX對象完成創建;若當前頁面不可信,則接口方法返回預設的錯誤代碼,宿主容器根據接收到的接口方法返回值中斷創建ActiveX對象。
4.如權利要求2所述的防止篡改ActiveX控件用途的方法,其特征在于,所述ActiveX控件根據返回結果確定是否允許自己被當前頁面繼續使用包括 ActiveX控件將結果存儲在ActiveX控件內部的成員變量中;在ActiveX的所有接口實現中首先檢查該成員變量,若當前頁面不可信,則ActiveX控件提供的接口拒絕當前頁面腳本對接口的調用。
5.如權利要求1所述的防止篡改ActiveX控件用途的方法,其特征在于,所述ActiveX控件獲取宿主容器發送的當前頁面地址包括 宿主容器調用ActiveX控件的IObjectWithSite接口的SetSite方法將容器指針傳遞給ActiveX控件; ActiveX控件根據獲取的容器指針取得當前頁面的地址HostUrl。
6.如權利要求1所述的防止篡改ActiveX控件用途的方法,其特征在于,所述ActiveX控件通過https向驗證服務器發送驗證請求。
7.如權利要求1所述的防止篡改ActiveX控件用途的方法,其特征在于,所述驗證服務器驗證當前頁面是否可信包括 驗證服務器將獲取的當前頁面地址根據一定的邏輯與預先存儲的可信列表中的地址進行查找,若包含在可信列表中,則認為當前頁面是可信的,反之,則認為當前頁面是不可信的,所述查找邏輯包括域匹配、站點匹配、地址參數匹配、整個頁面地址匹配。
8.如權利要求7所述的防止篡改ActiveX控件用途的方法,其特征在于,所述方法還包括 自動或人工更新所述驗證服務器中預先存儲的可信列表。
9.一種防止篡改ActiveX控件用途的系統,其特征在于,包括 ActiveX控件,用于將接口的預置結果返回給宿主容器,從而獲取當前頁面地址,并將當前頁面地址傳送給驗證服務器; 驗證服務器,用于驗證ActiveX控件傳送的宿主容器的當前頁面地址,并將結果返回給ActiveX控件; 所述ActiveX控件根據驗證服務器的結果確定是否允許自己被當前頁面繼續使用,若當前頁面可信,則允許被當前頁面繼續使用,反之,則不允許被當前頁面繼續使用。
10.如權利要求9所述的防止篡改ActiveX控件用途的系統,其特征在于,所述ActiveX控件包括 操作確定模塊,用于確定是否中斷宿主容器創建ActiveX對象的操作;或 訪問確定模塊,用于確定是否允許當前頁面訪問ActiveX控件提供的接口。
11.如權利要求9所述的防止篡改ActiveX控件用途的系統,其特征在于,所述ActiveX控件包括 驗證模塊,用于根據宿主容器傳送的容器指針取得當前頁面的地址HostUrl。
12.如權利要求11所述的防止篡改ActiveX控件用途的系統,其特征在于,所述驗證模塊包括 發送單元,用于通過https向驗證服務器發送驗證請求。
13.如權利要求9所述的防止篡改ActiveX控件用途的系統,其特征在于,所述系統還包括 列表管理器,用于維護更新驗證服務器中存儲的可信列表,可信列表的記錄形式可以是以下所列中的一種或多種域名、站點、頁面地址、頁面地址的中參數、匹配模式。
全文摘要
本申請提供了一種防止篡改ActiveX控件用途的方法,包括以下步驟ActiveX控件將接口的預置結果返回給宿主容器;ActiveX控件獲取宿主容器的當前頁面地址;ActiveX控件將獲取的當前頁面地址向驗證服務器發送驗證請求;驗證服務器驗證當前頁面是否可信,并將結果返回給ActiveX控件;ActiveX控件根據返回結果確定是否允許自己被當前頁面繼續使用,若當前頁面可信,則允許當前頁面繼續使用,反之,則不允許被當前頁面繼續使用。本申請還提供了一種實現前述方法的防止篡改ActiveX控件用途的系統。本申請的防止篡改ActiveX控件用途的方法及系統,能夠識別惡意網頁,解決ActiveX控件因為被惡意篡改用途而給用戶計算機帶來安全威脅的問題。
文檔編號H04L29/06GK103067343SQ201110323998
公開日2013年4月24日 申請日期2011年10月21日 優先權日2011年10月21日
發明者邱武松 申請人:阿里巴巴集團控股有限公司