Google 在 Chrome 內的 PGP:End-to-End

Google 前天發表了 Chrome 裡面的 PGP 實做套件:「Making end-to-end encryption easier to use」。

目前只放出了 source code,並沒有在 Chrome Web Store 上架,這點在網站上就直接說明了,他們目前認為目前沒有被足夠的人檢查過,所以請不要傳到 Chrome Web Store 上:

Since this is source, I could just build this and submit it to the Chrome Web Store

Please don’t do this.

The End-To-End team takes its responsibility to provide solid crypto very seriously, and we don’t want at-risk groups that may not be technically sophisticated — journalists, human-rights workers, et al — to rely on End-To-End until we feel it’s ready. Prematurely making End-To-End available could have very serious real world ramifications.

One of the reasons we are doing this source code release is precisely so that the community as a whole can help us make sure that we haven’t overlooked anything in our implementation of End-To-End.

Once we feel that End-To-End is ready, we will release it via the Chrome Web Store ourselves.

而為了鼓勵大家去找問題,雖然這是很新的軟體,但已經將 End-to-End 直接納入 Vulnerability Reward Program 裡:

And we mean it: our Vulnerability Reward Program offers financial awards for finding security bugs in Google code, including End-to-End.

不過傳統的方法還是會更可靠一些,畢竟 JavaScript 沒辦法很仔細控制記憶體內容,在放掉的記憶體空間內可能會包含某些未加密的資訊,甚至是 private key 的資訊。

OpenSSL 安全漏洞 (CVE-2014-0160)

CVE-2014-0160,又稱 Heartbleed Bug,是 OpenSSL 在 TLS 與 DTLS 協定裡的 Heartbeat Extension (RFC 6520) 的錯誤實作。

OpenSSL 官方的 security advisory 在這:「OpenSSL Security Advisory [07 Apr 2014]」,影響的範圍是:

Only 1.0.1 and 1.0.2-beta releases of OpenSSL are affected including 1.0.1f and 1.0.2-beta1.

實務上爆炸的程度則是:

A missing bounds check in the handling of the TLS heartbeat extension can be used to reveal up to 64k of memory to a connected client or server.

比較有描述性的說明可以參考「The Heartbleed Bug」這個站的敘述:

We have tested some of our own services from attacker's perspective. We attacked ourselves from outside, without leaving a trace. Without using any privileged information or credentials we were able steal from ourselves the secret keys used for our X.509 certificates, user names and passwords, instant messages, emails and business critical documents and communication.

由於 untraceable,這代表我們必須假設所有受影響機器上的 SSL private key 都已經被洩漏出去了,所有的 key 都必須 revoke 並且重新產生 (& 重新簽)。這兩天讓所有 SA 爆炸的超大新聞...

Google Chrome 上自動驗證 Ptt 十八歲年齡的工具

Ptt 有年齡限制的看板總算是開放 Web 存取了,但有個確認畫面要點總是頗麻煩 XD

前幾天寫了一個 Google Chrome 套件「Ptt Over18」可以自動幫你點確認按鈕:

暫時沒想到要用什麼 icon & 抓什麼畫面,回台灣再說,在日本只想睡覺吃東西... XD

Gmail.js

前幾天看到的「Gmail.js - JavaScript API for Gmail」,這並不是 Google 官方的 JavaScript API,而是給開發瀏覽器套件的人用的 JavaScript API。

甚至有給範例,讓你可以透過 Chrome Console 嘗鮮:

看文件發現比較特別的是提供了 Observe 的功能,可以抓到 Gmail 的事件 :p

移除 Remove Facebook Redirections...

Google Chrome 裝上 Remove Facebook Redirections 可以避免 Facebook 重導,加減提高些隱私性...

不過最近發現當 Facebook 捲頁捲很長時會變得爆慢,但網路上好像沒有人提到這個問題?看起來應該是我的某個 extension 造成的,測了老半天發現是這個 extension 的問題 :o 然後身為工程師的直覺,這八成是每次增加元素後直接對整個 document 全掃一次造成的...

翻 source code 後 (直接到 Default/Extensions/onhdomkbnapoacbialllfpbcckckidck/1.2_0/ 裡的 RemoveFacebookRedirections.js 翻) 可以發現 huntForLinks() 果然就是這樣做...

先移除掉再說 @_@

Chrome 的 webRequest...

在變成標準前又改了一次...

Google Chrome 17 後,「Web Requests」從 Experimental API 變成正式的 API,有不少地方在這次轉成正式 API 後需要修改:

  • 本來 chrome.experimental.webRequest 都改成 chrome.webRequest
  • 需要加上 webRequest permission,如果有 blocking 行為則要再加上 webRequestBlocking permission。
  • API 呼叫的參數可能會不一樣,參考官方的文件的說明比較清楚。我遇到的是使用 onBeforeRequest.addListener 時需要多加上 urls 參數。
  • 不再需要 expiermental permission,不過沒拿掉不影響運作。

Chrome Web Store 上面已經可以看到一些跟控制 Referrer 有關的延伸套件了...

Google Chrome Extension 內攔截所有的 url request...

之前寫了一個處理 Referer header 的 extension,使用 chrome.experimental.webRequest.onBeforeSendHeaders.addListener 攔截所有的 url 然後處理 Referer header。

之前只需要在 manifest.json 裡面加上 experimental 就可以使用,但是前陣子發現失效。剛剛在「onBeforeSendHeaders listeners aren't triggering」這個 issue 裡面找到解法:現在需要多加上 <all_urls> 這組權限。

Google Chrome 的 Cookie 隱私功能...

Firefox 裡,我們可以藉由「預設所有的 cookie 都只能是 session only」加上「例外名單」,做出「關閉瀏覽器就把白名單以外的 cookie 清掉」的功能,但在 Google Chrome 裡面,用內建的功能做不到這件事情。(他只能做到關閉時全部清除,沒辦法把白名單清除在外)

剛剛找到一個 extension 實做了這個功能:「Vanilla Cookie Manager」,在每次打開 Google Chrome 時會清除所有白名單以外的 cookie,也算是做到這個功能了... (雖然我比較喜歡在關掉的時候處理)

繼續找 Google Chrome 上對應的套件...

Mozilla 官方的 Firefox 套件相容性回報程式

順便可以拿來取消版本檢查...

我桌機的 Firefox 雖然是跑 3.6 系列,但筆電上還是跑 Minefield。之前一直都是靠 Nightly Tester Tools 強制套件不要檢查版本,但在 4.0 beta 後一直沒更新,於是 Nightly Tester Tools 就失效了... XD

後來在 comment 的地方看到有人說 Mozilla 官方自己跳出來弄了一個「Add-on Compatibility Reporter」,一樣可以做到這件事情,除此之外還可以回報套件在新版上是否正常...

於是 Minefield 的套件就都跑起來了,測了一下,果然一堆套件在 4.0b3 上爛掉... XD