最新火爆遊戲鉅獻——談Flash Player的安全機制

話說在世界的盡頭,太陽落下彩虹升起的地方,有一個神祕的部落。在這個部落裏,房子是用金子蓋的,路是用鮮花鋪的,女孩子都很漂亮,男孩子都很帥。山上的叢林裏,山下的小河中,都蘊含着豐饒的物產。自古以來,部落裏善良勤勞的人們與世隔絕,自給自足,過着幸福的生活。 
1969年發生了一件大事,ARPAnet正式啓用並在稍後被稱做INTERNET,從此大地風雲變色,風起雲湧,滄海桑田,換了人間。40年過去,彈指一揮間,當年的神祕部落也在潮漲潮落間悄悄有了改變…… 
外界的奸商看着這片豐饒的土地流下了口水,普通的民衆也對也對它神祕的一面充滿了新奇。我們不禁要關注這個可愛部落的前途命運,在迎接世界的過程中,它將得到還是失去…… 

OK, 以上是年度遊戲大作《Flash Player安全機制》的片花介紹,現在我們來詳細解釋遊戲規則。 

總體說明: 
1. 與部落打交道的外界的人和資源集中在外界的“商場”裏,也就是部落對外交流的接口是一個個的商場,每個商場裏面有外界的資源和外界的人。 
2. 遊戲任務是保護部落裏的資源不被外界濫用,這種保護是通過制定規則來做到的 

遊戲構成: 
1. 機構:(資源在機構之間流通) 
a. 外界的商場:包括商場A,商場B,...,商場N 
b. 部落土著的工廠:收購部落本身的物產進行生產 
c. 外界人員組成的神祕部落探險隊:對部落小心刺探,與外界聯繫緊密 
d. 部落土著組成的學習外界先進科學文化知識小組:由血統純正,忠誠無比的部落先進分子組成,代表部落先進生產力,先進文化,先進…… 
2. 資源:(包括人和物產) 
a. 人:二十一世紀什麼最貴?人才!人是第一位的,是具有主觀能動性的資源 
b. 金礦石 
c. 金子 
d. 千年雪蓮 
3. 老闆:(管理資源在機構間的流通) 
a. 外界商場老闆:每個商場一位老闆 
b. 部落的頭領:部落最高領導人,僅有一位,擁有至高無上的權利(在部落中) 
c. 人的思想:這個不太好描述,俗話說解放思想實事求是,可見思想可以控制人的行爲。因此思想也算是老闆,它可以控制人做什麼或不做什麼 
4. 通行證:(資源流經各個機構時,老闆是否允許其通行的憑證) 
a. 商場通行證:可以用來說服商場老闆開放資源 
b. 部落頭領通行證:可以用來說服頭領把資源分配到土著學習小組去 
c. 解放思想通行證:此證可以解放人的思想,堪稱魔力無窮,相當犀利 

遊戲規則:(重點來了啊) 
1. 外界的商場不允許直接訪問土著的工廠、探險隊、學習小組的一切資源。因爲外界是不受部落信任的,它的一舉一動都被嚴密監視,它不能主動對部落做任何刺探 
2. 外界的商場之間可以互相溝通往來資源,前提是商場老闆間有通行證隨同 
3. 土著的工廠收集本部落的一切資源,也可以徵用本部落的一切人員 
4. 土著的工廠不能與外界的探險隊有任何往來。這個很重要,因爲探險隊可能是外界派來的偵查兵,或潛伏人員 
5. 土著的工廠可以與學習小組交換一般的資源,但是隻有提供解放思想通行證,才能與學習小組的人員交流(這個交流可以是簡單的語言交流,也可能是通婚,程度不限,因此要慎重) 
6. 土著的工廠不允許使用外界商場的一切資源。這也合情理,土著嘛,都相信自然是最美的,非自然是危險的 
7. 外界探險隊可以收集部落內的金礦石,進行研究 
8. 外界探險隊不可以直接收集部落內的金子,這不是研究了,而是掠奪 
9. 外界探險隊不可以收集千年雪蓮,因爲這個對部落來說也很珍貴 
10. 外界探險隊不可以使用土著工廠的任何資源。與規則4保持一致 
11. 外界探險隊可以與學習小組的人員交流,只要能提供解放思想通行證(這是非常危險的行爲,萬一學習小組內部有潛伏人員……) 
12. 外界探險隊使用外界商場的資源,只要有商場通行證。外界的人還是用外界的東西比較舒服 
13. 學習小組可以使用所有的資源。這個概括是有力的,因爲學習小組得到了頭領或分片領導的信任,它可以內外通喫,想喫就喫,想拿東西就拿東西,想用人就用人,不需要任何通行證 

好了,針對上面的規則,有辦法讓部落的資源外泄嗎?需要注意的是,通行證可不是好搞的啊,特別是部落內的通行證,合理的才能發,因爲部落裏的人可不懂走後門這一說。 




真相還原 

總體說明: 
1. 部落是指電腦主機,裏面有各種各樣隱祕的資源。商場是指各個website,上面有外界的靜態資源和flash SWF文件資源 。 
2. Flash安全機制的目的主機的資源不被外界濫用,這種保護是通過制定規則來做到的。 

安全機制構成: 
1. 安全沙箱(sandboxes): 
a. 遠程沙箱(Remote sandbox): 不同的website屬於不同的遠程沙箱,例如sitea.com和siteb.com都屬於遠程沙箱,但是屬於不同的遠程沙箱 
b. 本地文件系統沙箱(local-with-filesystem sandbox):對本地文件系統比對遠程有更多的訪問權 
c. 本地網絡沙箱(local-with-networking sandbox):對遠程範圍比對本地有更多的訪問權 
d. 本地信任沙箱(local-trusted sandbox):本地受信任沙箱,對本地資源和遠程資源都有絕對的訪問權 
2. 資源:(包括swf文件和靜態資源) 
a. Swf文件:是唯一的主動資源,因爲它可以訪問其他資源,它自身也可以作爲資源被load,或者被cross-script訪問 
b. Load 資源文件:比如load一個圖片,或者音頻、視頻等 
c. 訪問資源文件的內容:比如查看圖片的像素,音頻中的ID3屬性等。這屬於在資源中提取有價值的屬性,恰似在金礦石中提取金子,因此它受限多一些 
d. Load數據:比如load一個XML文件或者二進制文件。基本上b、d很難用語言區分,區分它們的最好辦法是通過API的調用,一些API劃分爲b,另一些劃分爲d,具體參看文檔~ 
3. stakeholder: 
a. 網站管理員 
b. 本地主機管理員:事實上還有本地主機普通用戶也是作爲一個stakeholder,但與主機管理員職責相似,只是主機管理員決定整個系統的配置,而用戶負責自己賬戶的配置 
c. Swf文件創建者:創建swf文件者可以決定此文件是否允許被交叉腳本訪問,即cross-script,即開放接口和數據供另一個swf文件調用 
4. Policy file: 
a. 發佈者許可(政策文件):是一個簡單的xml文檔,給予其信任來源的swf文件訪問資源的權利 
b. 管理員控制文件:用於管理員啓用或限制用戶對各種功能的訪問,其形式有使用mms.cfg文件、全局Flash player信任目錄、設置UI和設置管理器等 
c. 創建者許可:通過在創建swf文件時調用“Security.allowDomain()”方法,來允許其他swf文件對其進行交叉腳本訪問。見3(c) 

規則: 
1. Remote sandbox 中的swf不允許直接訪問本地主機資源 
2. Remote 範圍內的各個sandbox域可以互相訪問,但除了2(b)外一般需提供4(a),交叉腳本控制時需提供4(c) 
3. Local-with-filesystem sandbox可以訪問本地文件系統的一切資源,也可以交叉腳本訪問本地文件系統的swf文件 
4. Local-with-filesystem sandbox不允許訪問local-with-networking的一切資源 
5. Local-with-filesystem sandbox只有提供4(c)纔可以交叉腳本控制local-trusted sandbox中的swf文件 
6. Local-with-filesystem sandbox不允許訪問remote sandboxes 中的一切資源 
7. Local-with-networking sandbox可以進行2(b) 
8. Local-with-networking sandbox不可以進行2(c) 
9. Local-with-networking sandbox不可以進行2(d) 
10. Local-with-networking sandbox 不允許訪問local-with-filesystem的一切資源 
11. Local-with-networking sandbox可以對local-trusted進行2(b),但只有提供4(c)纔可以交叉腳本控制local-trusted sandbox中的swf文件。 
12. Local-with-networking sandbox可以對remote sandboxes進行2(b),但只有提供4(c)纔可以交叉腳本控制local-trusted sandbox中的swf文件,而且只有提供4(a)才允許進行2(c)和2(d) 
13. Local-trusted可以對任何sandbox域的資源進行訪問和交叉腳本控制 


場景虛擬: 
1. 本地主機有一個私密文件,上面有用戶銀行賬號,在C:/Program Files/Adobe/bankaccount.txt中 
2. Hacker給主機用戶發送一個Email,裏面有個動畫hack.swf作爲附件 
3. 主機用戶運行hack.swf,hack.swf在播放一些防止人多擁擠,電梯故障處理等視頻的同時,偷偷使用URLLoader(C:/Program Files/Adobe/bankaccount.txt)裝載文件,並且通過net.sendToURL()把它傳到Hacker的網站 
4. Hacker發財了 
這裏注意,步驟3是不可能的,因爲hack.swf在本地被打開,它可能位於local-with-filesystem sandbox或位於local-with-networking sandbox(這由編譯時”-use-network”選項決定)。假設: 
1. 位於local-with-filesystem sandbox:net.sendToURL()是與remote sandbox打交道的API,因此會被阻止 
2. 位於local-with-networking sandbox:URLLoader()本地文件系統的內容會被阻止 
所以,由於flash player安全機制的保護,本地用戶是安全的,這就是爲什麼Hacker裏沒有太富的人的原因。 



宗旨: 
爲了幫助剛剛接觸安全機制的同學理清思路,明白概念,這裏只大概描述了一些最主要的枝幹,具體的細節請參看官方文檔:http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7d23.html 


--球狀閃電

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章