天天看點

google chrome extension 安全機制小記

轉載請注明出處:http://blog.csdn.net/awebkit

最近看了《Protecting Browsers from Extension Vulnerabilities》,裡面講解了google chrome extension所采用的安全機制,記錄如下。

文章主要讨論針對那些沒有惡意但是有缺陷,而缺陷會被利用的擴充,浏覽器應該提供什麼樣的保護措施。

首先給出了Firefox擴充存在的一些問題:擴充具有和浏覽器同等的權限。擴充有完全的權限通路浏覽器内部和使用者的作業系統。擴充可以改變浏覽器的功能,修改網頁的行為,執行任意代碼,通路檔案系統。

Firefox擴充具有這樣兩個危險的性質:高權限和不可信網頁内容的豐富的操作。這導緻可能會有如下的攻擊:

1. cross-site scripting (跨頁面腳本)。比如擴充在執行eval或者document.write的時候沒有檢查輸入,而輸入可能是一段惡意腳本。Firefox現在的做法是提供了沙漏技術的API:evalInSandbox。這時執行的腳本就不會擷取擴充的權限。這有用,但并非總是有用。

2. Replacing Native APIs(替換原始API)。大意是說網頁可以定義DOM API,然後引導擴充來使用這些API。

3. JavaScript Capability Leaks(JavaScript能力洩漏)。大意是說JavaScript洩漏了一個對象,會被攻擊者利用,控制擴充。

4. 綜合内容。如擴充需要調用HTTP傳回的響應,攻擊者就可以通過僞造HTTP響應,控制擴充。

然後文章對25個最流行的擴充進行了測試,發現大部分的擴充都存在權限被給的過高了,很多是用不上的。

最後就推出google chrome的extension機制。

1. 最低權限。

google chrome extension需要在manifest裡面聲明權限。如下

{
"name": "Google Mail Checker",
"description": "Displays the number of unread
messages...",
"version": "1.2",
"background_page": "background.html",
"permissions": [
"tabs",
"http://*.google.com/",
"https://*.google.com/"
],
"browser_action": {
"default_title": ""
},
"icons": {
"128": "icon_128.png"
}
           

聲明的權限有:

A. 需要執行的任意代碼。

B. 需要通路的網頁。

C. 需要用到的擴充API。

但是開發人員更喜歡最大化權限,是以需要在使用者體驗上進行一些鼓勵。當extension需要最大化的權限的話,需要和google簽約,否則這些擴充不能出現在google控制的gallary裡面。mozilla使用人工檢查擴充。最小權限的擴充會縮短檢查時間。

從任意網站下載下傳的擴充的安裝同執行本地可執行程式是一樣的機制。

2. 權限分離。

這裡主要就是把一個擴充分成了好幾層:content scripts, extension core, native binary

google chrome extension 安全機制小記

3. 分離機制。

這裡的分離我看主要是多程序模型,擴充運作在自己的程序空間,和浏覽器分離。

從文章來看,google chrome extension安全機制确實做的比Firefox等牛啊!

繼續閱讀