聯想與 Superfish 的法律訴訟,以及後續的發展...

在「Download.com and Others Bundle Superfish-Style HTTPS Breaking Adware」這邊看到的 tweet,講的相當經典,把他找出來:

文章裡面提到,Superfish 這種插入 CA root certificate 的軟體攔截 HTTPS 內容,不僅僅是 Superfish,這根本是目前免費軟體的「趨勢」,包括了十大裡面的前兩名:

Two of the top ten downloads on CNET (KMPlayer and YTD) are bundling two different types of HTTPS-hijacking adware, and in our research we found that most other freeware sites are doing the same thing.

Facebook 的「Windows SSL Interception Gone Wild」提到了 Facebook 自己觀察到的情況:(SSL traffic 被 Superfish 換掉的百分比,中國地區因為廣為人知的原因,是沒有偵測到的...)

另外「Beyond Superfish: Turns out SSL-trashing spyware is widespread」也提到問題的嚴重性。

甚至有些也偽裝成遊戲:「'Superfish'-style vulnerability found in games and parental control software」:

Rogers cites products including parental control software and IP-cloaking technology as containing the weakness, while Richard says Facebook discovered the certificates being issued by a number of adware vendors disguised as games or search assistants.

實際用 Google Chrome 下載 CNET 上的 KMPlayer,發現直接擋了下來:

在之後的新版則會更明顯的顯示出來:「More Protection from Unwanted Software」。

然後是訴訟的問題,在美國已經有消費者決定對聯想與 Superfish 打集體訴訟了,後續的判賠與和解可以繼續追蹤:「Lenovo hit with lawsuit over Superfish snafu」。

CloudFlare 宣佈停用 RC4,並且支援 ChaCha20+Poly1305

CloudFlare 同時宣佈了停用 RC4 與支援 ChaCha20+Poly1305 的計畫:「End of the road for RC4」、「Do the ChaCha: better mobile performance with cryptography」。

2014 年年初的時候,CloudFlare 先把 RC4 從 TLS 1.1+ 的連線拿掉,而 2014 年五月時,再把 RC4 搬到 cipherlist 裡優先權最低的,成功的讓 99.9991% 的 request 改用 AES3DES (大約五個 9 ):

而九個月後的現在,CloudFlare 上 RC4 使用的比率則是降到了 0.000002%,反過來說也就是 99.999998% 的等級 (七個 9),也讓 CloudFlare 決定直接停用掉 RC4。

另外一個重大的新進展則是 ChaCha20+Poly1305,兩個都是 Daniel J. Bernstein 的作品。其中 ChaCha20 是 stream cipher,Poly1305 是 MAC。

由於 RC4 已經不夠安全,在行動平台上要夠安全必須使用 AES,但 AES 在 ARM 上面還沒有普及:在 Nexus 6 用的 ARMv7 不支援,是透過 Qualcomm Snapdragon 805 的加掛模組做的,而在低階手機支援度就更不用說了。

Google 大力推動 ChaCha20+Poly1305 的目的,是為了在行動平台上找到一個與 RC4 可以匹敵的速度,而且有著可以超越 AES-GCM 安全性的 cipher+MAC。

在 CloudFlare 採用 ChaCha20+Poly1305 前,Google 是唯一一個在 HTTPS 上大幅採用的單位,而瀏覽器的部份也只有 Google Chrome 有支援。雖然 Firefox 一直有喊著要支援,但這是個雞生蛋蛋生雞的問題,可以看到進度不怎麼快 (Bug 917571 - Support ChaCha20+Poly1305 cipher suites)。

CloudFlare 支援之後,使用 ChaCha20+Poly1305 的 pool 瞬間大了不少。可以看到一上線的使用率不算低,瞬間就有 10% 了:

希望可以推動 Firefox 快一點支援... (這是養大 pool 的下一步)

Percona XtraDB Cluster 5.6 與 GTIDs 的結合

Percona 的 Fernando Laudares 在「How to setup a PXC cluster with GTIDs (and have async slaves replicating from it!)」這篇裡提到了 Percona XtraDB Cluster 5.6 與 GTIDs 的配合方式。

傳統的 replication 的 binlog 的表示方式是 filename + position,這個是大家已經很熟悉的方式。

digraph {
    M1 [label="Master 1"];
    M2 [label="Master 2"];

    S1 [label="Slave 1"];
    S2 [label="Slave 2"];
    S3 [label="Slave 3"];
    S4 [label="Slave 4"];

    { rank=same; M1; M2; };

    { rank=same; S1; S2; S3; S4; };
    S1 -> S2 -> S3-> S4 [style=invis];

    M1 -> M2;
    M2 -> M1;

    M1 -> {S1, S2, S3, S4};
    M2 -> {S1, S2, S3, S4} [color=gray];
}

優點是很簡單 (很好理解,也很容易設定管理),但缺點是 Slave 的 Master 跳動時 (從 Master 1 跳到 Master 2),Slave 可能會漏資料。

原因是出自於 MMM 之類的工具無法知道 Master 1 最後一筆寫入的資料對應到 Master 2 的哪個 binlog 位置。

MySQL 5.6 之後多了新的模式,叫做 GTIDs (Global Transaction IDs),把本來 binlog 的 filename + position 改良一下,變成 source_id + transaction_id 的形式。

source_id 是每台機器固定的值,目前是用 UUID 代表,而 transaction_id 則是遞增的流水號。所以也很好理解:「source_id 這台機器的第 n 個 transaction」。

這樣就可以多出很多偵測機制,降低問題發生的機率。

而 PXC 5.6 在這個領域則是因為已經有了自己的 cluster 機制,所以整個 cluster 會共用一組 UUID。這樣就可以避免混用機制而產生複雜的問題。

所以就變成三台 Master 互相切換 (通常 PXC 都是三台以上的奇數機器):

或是其中兩台互相切換 (第三台只跑 garbd 而沒有實際資料時):

我們家只剩下一組 cluster 是 PXC 5.5 (最大的一組),其他都是 PXC 5.6 了。應該要找人 deploy 這個機制降低 Master 跳機時的人力操作成本了...

聯想對 Superfish 的新聞稿、反安裝說明,以及影響的機器列表

Update:參考「聯想與 Superfish 的法律訴訟,以及後續的發展...」。

上一篇「聯想在筆電上安裝 Adware」由於被證實每一台機器都是一樣的 CA key,所以這把 key 將可以拿來攻擊這些電腦。

各家的 Spyware/Adware/Malware 清除軟體都把 Superfish 納入了:

聯想官方的新聞稿中裡面有受到影響的機器列表:「LENOVO STATEMENT ON SUPERFISH」。

  • G Series: G410, G510, G710, G40-70, G50-70, G40-30, G50-30, G40-45, G50-45
  • U Series: U330P, U430P, U330Touch, U430Touch, U530Touch
  • Y Series: Y430P, Y40-70, Y50-70
  • Z Series: Z40-75, Z50-75, Z40-70, Z50-70
  • S Series: S310, S410, S40-70, S415, S415Touch, S20-30, S20-30Touch
  • Flex Series: Flex2 14D, Flex2 15D, Flex2 14, Flex2 15, Flex2 14(BTM), Flex2 15(BTM), Flex 10
  • MIIX Series: MIIX2-8, MIIX2-10, MIIX2-11
  • YOGA Series: YOGA2Pro-13, YOGA2-13, YOGA2-11BTM, YOGA2-11HSW
  • E Series: E10-30

另外聯想提供了反安裝說明,除了可以用自動化程式處理外,也可以用手動刪除,第一步是先反安裝 Superfish,移除完成後要清除所有 CA root 資料,包括 Windows 系統內 (IE、Chrome、... 使用系統的 CA 資料) 以及 Firefox 的:「Superfish Uninstall Instructions」。

用自動化移除的人,建議做完以後還是手動檢查。

Oracle 對 MySQL HA 方案的介紹

Oracle 的 Andrew Morgan 前幾天辦了場 Webinar,投影片以及一些說明有放出來讓大家事後可以參考:「Choosing the right MySQL High Availability Solution – webinar replay」。

其中第七頁的開頭「Don’t assume 99.999% HA needed for all apps」這句帶出了一個重點:99.999% 的每一個九都是成本,而且不是可以簡單帶過去的成本。

第八頁與第九頁給出了不同 HA 層級中的每個方案 (要注意到這是以 Oracle 的觀點來看),至於最後面將近五十頁的產品介紹看看就好... XD

聯想在筆電上安裝 Adware

Update:參考「聯想與 Superfish 的法律訴訟,以及後續的發展...」。

Update:後續參考「聯想對 Superfish 的新聞稿、反安裝說明,以及影響的機器列表」。

今天的大條新聞,不少傳統媒體也都有報導:

另外「Lenovo installs adware on customer laptops and compromises ALL SSL.」這篇講得還蠻完整的。

這次的 adware 還被更歸類到 malware 就是因為他會在本機上安裝自己的 CA root,解開所有的 HTTPS traffic 並且插入廣告。而這包括了銀行網站、醫療網站、各種極度隱私的加密服務。

Is Superfish malware?

Lenovo won’t want anyone to call it that, but Superfish has been described as a piece of malware, or an adware pusher, that the Chinese firm pre-installs on consumer laptops.

在「Extracting the SuperFish certificate」這邊有告訴你方法,教你取得 SuperFish 的 protected private key & key password。不過不確定每一台機器是不是都一樣,作者把取出來的 pem 檔放在「test.pem」這邊。

Google 將之前買下 Skybox 公司的工具放出來 (MapReduce for C)

Zite 上看到的,Google 把之前買下的 Skybox 所開發的工具 MapReduce for C (MR4C) 放出來:「Google open sources a MapReduce framework for C/C++」。

MR4C 的程式碼放在 GitHub 上,以 Apache License Version 2.0 授權放出來:「google/mr4c」。

Windows 10 的 IE 將會有 asm.js 支援

Twitter 上看到的:「Bringing asm.js to the Chakra JavaScript engine in Windows 10」。

這樣只剩下 Safari 還沒支援,其他幾個主流瀏覽器都支援了:(出自維基百科「asm.js」條目)

Mozilla Firefox was the first web browser to implement asm.js-specific optimizations, starting with Firefox 22. The optimizations of Google Chrome's V8 JavaScript engine in Chrome 28 made asm.js benchmarks more than twice as fast as prior versions of Chrome.

用 Google Analytics 偵測有多少使用者使用 Adblock

在「Find How Many Visitors Are Not Seeing Ads on your Website」這篇介紹了如何用 Google Analytics_trackEvent 偵測網站上有多少使用者使用 Adblock 類的軟體。

不過這完全會低估啊,會在意廣告而裝 Adblock 類的人之中,不少人還會順便擋掉 Google Analytics 啊 XD

不過這篇有提到一份報告,說 2014 整個 internet 使用 Adblock 的比率大約是 5%,而科技類網站會高出更多:(不過我抓不動這份 PDF...)

It is estimated that ~5% of website visitors are blocking ads (PDF report) and the situation could be far worse for websites that have a more tech-savvy audience.