先讓我們來看個Adobe Flash的官方公告
https://www.adobe.com/tw/products/flashplayer/end-of-life.html
曾經擁有無數的小遊戲與動畫的Flash,也終於走到了生命的盡頭,
Flash其實一值陸陸續續出現過各種風險與漏洞,那目前是真的停止支援,
各大瀏覽器也不能使用了~
這篇純粹是紀錄一下當時研究Flash安全相關中crossdomain.xml 設定不當風險。
首先要知道 crossdomain.xml 這個檔案的用途是用來決定:
你的網站內容是否可以被flash存取
crossdomain.xml 設定檔
例子
1、www.a.com 網站下不存在 crossdomain.xml 時,
則不允許除了 www.a.com 之外的其他任何網域下的Flash進行跨域請求。
2、www.a.com 網站下存在 crossdomain.xml 文件,
如若配置 allow-access-from 為 www.b.com,
則只允許 www.b.com 網域下的Flash進行跨域請求,
以及來自自身域 www.a.com 的請求。
然後 crossdomain.xml 需要嚴謹遵守 xml 語法
只有一個根節點 cross-domain-policy
且 cross-domain-policy 不包含任何屬性
在此節點下面只會有下列幾個子節點
site-control
allow-access-from
allow-access-from-identity
allow-http-request-headers-from
更白話一點的解釋例子
你的網站的內容
如果打算要讓flash可以存取的話
你要在你的網站新增一個crossdomain.xml在document root位置
並且要設定哪一個網站的flash可以去存取你的內容
假設你自己的網站是 www.AAA.com
有一個swf放在 www.BBB.com/showPhoto.swf
當這個 showPhoto.swf 要去存取你的網站的圖片
www.AAA.com/xxx.jpg 的時候
你就必須要設定
www.AAA.com/crossdomain.xml
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="www.BBB.com" secure="true" />
</cross-domain-policy>
存在風險條件
一般來說 crossdomain.xml 設定不當風險
要存在要滿足以下三個條件
以網站 AAA.com 來說好了
- AAA.com 必須要有 crossdomain.xml 這個檔案
- crossdomain.xml 必須是有授權不當問題
譬如沒有限制網域
<cross-domain-policy>
<allow-access-from domain="*"/>
</cross-domain-policy>
- AAA.com 的網站中有儲存一些機敏訊息或是可執行敏感性操作
如果滿足以上條件
表示目標網站可允許任意網域的 Flash 對自己的網站進行存取操作
攻擊者可能利用撰寫特定的 Flash 檔案來對目標網站進行攻擊
導致目標網站的資訊洩漏或是內容竄改等等
參考來源:
https://www.itdaan.com/tw/4876872c7224bb0610395127c446660
CWE-942 Permissive Cross-domain Policy with Untrusted Domains
https://cwe.mitre.org/data/definitions/942.html
crossdomain.xml 設定不當風險
風險是在於其他網站的Flash可以存取目標網站的資源
Flash 參數 AllowScriptAccess 設為 always
風險是在於目標網站存取Flash資源時對於Javascript不做任何限制