Flash 安全:crossdomain.xml 設定不當風險

先讓我們來看個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 來說好了

  1. AAA.com 必須要有 crossdomain.xml 這個檔案
  2. crossdomain.xml 必須是有授權不當問題
    譬如沒有限制網域
<cross-domain-policy>
    <allow-access-from domain="*"/>
</cross-domain-policy>
  1. 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不做任何限制

發佈留言