SSL 3.0 爆炸,CVE-2014-3566,POODLE

這次的慘案是由 Google 的人找到 SSL 3.0 的問題:「This POODLE bites: exploiting the SSL 3.0 fallback」。

Google 提供的解法有兩種。一種是關掉 SSL 3.0,另外一種是關掉 SSL 3.0 的 CBC-mode cipher,但兩種解法都還是會痛:

Disabling SSL 3.0 support, or CBC-mode ciphers with SSL 3.0, is sufficient to mitigate this issue, but presents significant compatibility problems, even today.

提到相容性問題的原因是 Windows XP + IE6 的組合,在預設安裝下是不支援 TLS 1.0 的 (需要另外打開選項啟用),而看到那個 11.1%:


出自「Internet Explorer - IE 6 Countdown | Modern.IE

另外是 SSL 3.0 如果不支援 CBC-mode cipher 的話,也只剩下 RC4,而這早就千窗百孔了:


出自「Transport Layer Security

也因此,在 CBC-mode cipher 與 RC4 都不能用的情況下,CloudFlare 決定直接關閉 SSL 3.0:「SSLv3 Support Disabled By Default Due to POODLE Vulnerability」。

而其他廠商提供的方案也都差不多,像是 AWS 的「CVE-2014-3566 Advisory」裡建議的解法也是關閉 SSL 3.0:

This includes disabling SSLv3 on both server and client implementations.

新推出的 security policy (ELBSecurityPolicy-2014-10) 裡也直接關掉 SSL 3.0,讓真的有需要的人再手動加上去,或是選擇一月的版本。

SSL 3.0 推出 18 年後總算要被殲滅了...

SNI 支援 (單一 IP 多個 SSL Certificate)

Twitter 上看到 yllan 提到 SSL certificate 的問題:

這是看 client 對 Server Name Indication 的支援程度而決定的。

在維基百科說明中「Browsers with support for TLS server name indication」這段裡面列出來的瀏覽器,可以看出來其實最大的問題就是 Windows XP 上的 IE{6,7,8} 不支援。(但 Windows Vista 以及 Windows 7 的 IE{7,8} 支援 SNI)

手上一時間找不到 Windows XP + IE{6,7,8} 的數量,但 gs.statcounter.com 上有幾個數字可以參考。

首先是台灣 IE8 的用戶數量:

再來是 Windows XP 數量:

以這兩個圖的資料來看,還是不太能用啊... :o

不支援 IE{6,7,8} 的 jQuery 2.0...

jQuery 2.0 的消息:「jQuery 2.0 Released」。2.0 版與 1.9 的功能相同,只差在支援度:停止對 IE{6,7,8} 的維護及 workaround。

如同半年前在「jQuery 2.0 將放棄 IE{6,7,8} 的事情...」講的,如果在 John Resig 還在的時候應該不會放棄 IE8...

這是 2012 年七月的數字:

這是 2013 年三月現在的數字:

仍然是超過 10% 而且不太往下掉的數字...

jQuery 2.0 將放棄 IE{6,7,8} 的事情...

這是 StatCounter 的統計數字,IE8 有 13.28%,IE7 有 1.33%,約 14.61%:

現在是 2012 年年中,在 IE7 + IE8 還有 14+% 的數字的情況下決定要在 2013 年年初推出不支援 IE{6,7,8} 的 jQuery 2.0,這在 John Resig 還「當政」的時代大概是不可思議的事情:「JQUERY CORE: VERSION 1.9 AND BEYOND」、「JQUERY 1.9 AND 2.0 — TL;DR EDITION」。

如果照著這個步調走,要不是 jQuery fork 崛起,不然就是其他的 Framework 幹掉 jQuery...

微軟推出 IE6 Countdown 網站

微軟推出了 IE6 Countdown 網站,希望可以把 IE6 的佔有率壓到 1% 以下。以目前網站上更新的數字,台灣是 10.7%...

不過上面的數字是以 2011/2/28 的數據產生出來的,這天雖然是星期一,但台灣剛好是國定假日,使用公司電腦的人少很多,這使得使用 IE 的人也少很多 (可以參考 StatCounter 的數據)。如果抓平常日的數字,大約在 14% 上下,超過印度的 12.3%。

IE6 是 2001 年 8 月 27 日出版,快要滿十年了,不知道有沒有機會在十週年生日前 (七月的報表) 看到他 5% 以下...

如果可以不用管 IE6 的話,有什麼好處呢?先不論 bug 的問題,光是網頁設計時的 css selector 就多出許多可以用:(圖片來自「CSS selectors and pseudo selectors browser compatibility」)



用 IE 的 conditional comments 建立 class

IE 的 Conditional comments 可以拿來建立對應的 class,可以減少 css 使用 IE hack 的情況 (有些 IE hack 會使得 css 的語法不正確,用工具壓縮後可能會出問題),以 IE6 為例,下面的例子可以把 IE6 與 IE7 分別標上 class="ie6" 或是 class="ie7"

<!--[if IE 6]><body class="ie6"><![endif]-->
<!--[if IE 7]><body class="ie7"><![endif]-->
<!--[if gt IE 7]><!--><body><!--<![endif]-->

這個方式不需要 javascript,而且是合法的 HTML (只有 IE 會看懂 comment 內的說明)...

企業不肯換到 Windows 7 的原因是...

因為不能跑 IE6:「IE6 Addiction Inhibits Windows 7 Migrations」(Slashdot)、「IE6 addiction throws monkey wrench into Windows 7 migration」(Computerworld)

主要是因為有很多企業內部網站已經年久失修,只能跑 IE6...

依據 StatCounter 的統計,台灣地區還是有 21% 的使用者用 IE6:「Top 12 Browser Versions in Taiwan from Oct 09 to Sep 10」。