CertAlert 與 CA Untrustworthy

二月初發表了在 Linux 上移除 CNNIC 憑證一文後,受到相當多的文章引用與關注。

原文中,提到移除高風險憑證的作法,但其實我相信很多人弄不懂不同平台的作法,也不清楚所謂 NSS 的機制,沒有清除系統憑證,只是試圖移掉 Firefox 中的驗證。所以很多使用者不知道自己是否真的移除,或是以為移除,重新開啟 Firefox 後,因為 NSS 的設計,憑證又自動建入資料庫中。

依照目前的討論 (#542689, #476766),Mozilla 應該採無罪推論原則。也就是說雖然 CNNIC 的風評不佳,但在它實際作惡前,我們理因相信它無罪。雖然有一些技術上的提議,希望可以降低憑證管理的問題跟風險,但是這些功能恐怕需要點時間才會實踐。

所以,短時間內,使用者還是得自己做一些設定來自保。但是前文步驟又十分繁雜,我們需要給使用者一個比較簡單的操作措施。

在香港朋友 Benlau小兔黑黑倡議與支持下,我們寫了一個小 Firefox 附加元件,稱為 Cert Alert,這個元件的功能是「自動提醒」使用者,網頁中使用了特定 SSL Root CA 的內容。

這個附加元件採 MPL 1.1 授權釋出。你可以於 Firefox 附加元件網站下載安裝。開發者可於 Github 取得完整程式碼或提供建議。

另外一個值得推薦的是 timdream 所開發的 CA Untrustworthy。這個附加元件的功用是每次開啟 Firefox 時,自動移除或關閉高風險憑證。如此,若瀏覽使用高風險憑證網站時,Firefox 就會提醒你這是未受信任網站,你可以依照 Firefox 的憑證驗證機制來允許或關閉網頁。所以你就不用擔心,是否因為沒有完成移除系統憑證而造成安全問題啦。Tim 的 CA Untrustworthy 亦擺於 Github.

銘謝: Littlebtc 提醒 CertAlert 0.0.4 版前之 MITM 問題
備註: 中國朋友亦開發一 NoCNNIC 工具,可移除 Windows 平台的 NSS database 中 CNNIC 憑證。惟只支持 Windows 平台,且必須手動執行才可移除。僅供參考。

February 22nd, 2010 at 20:00 | Comments & Trackbacks (1) | Permalink


現在是哪一週?

為了某些專案的進度追蹤,改成逐周方式確認。在溝通過程中,發現週數老是對不上,原來大家的週數計算方式都不太一樣。我的紙本行事曆跟電腦行事曆也不太一樣。

原來,計算一週之始有好幾種方法,例如

  • 1/1 日開始一定算第一周。
  • 不管 1/1,從一年的第一個星期天開始算第一周。
  • 不管 1/1,從一年的第一個星期一開始算第一周。

像是波斯灣阿拉伯國家是週六開始算第一周,巴基斯坦跟愛沙尼亞是把 1/7 當作一年開始來計算。即便是上述的幾種方式,在同一個國家內也有不同的偏好阿。像我的行事曆就是 1/1 開始當作第一周,而我的電腦則是把週日開始算為第一周。兩個相較起來就差了一週。

在 Linux 上,其實 en_US 跟 zh_TW 兩種不同的語系設定,開始週數是不同的。en_US 使用的是 1/1 開始那周算第一周,而 zh_TW 則是設定成第一個週一是第一周。用 ncal 看起來像是這樣

$ LC_TIME=en_US.UTF8 ncal -w  1 2009
    January 2009
Mo     5 12 19 26
Tu     6 13 20 27
We     7 14 21 28
Th  1  8 15 22 29
Fr  2  9 16 23 30
Sa  3 10 17 24 31
Su  4 11 18 25
    1  2  3  4  5
$ LC_TIME=zh_TW.UTF8 ncal -w  1 2009
    一月 2009
一     5 12 19 26
二     6 13 20 27
三     7 14 21 28
四  1  8 15 22 29
五  2  9 16 23 30
六  3 10 17 24 31
日  4 11 18 25
   52  1  2  3  4

上述的算法,時常造成同一周被定義兩次,他可能是去年的 53 周,又是今年的第 1 周。這樣很容易造成困擾。

為了避免這種糾紛產生,其實有一份 ISO 8601 定義了週數的算法。ISO 8601 除了制定時間字串的格式之外,也定義了週數的計算方式。規則稍微複雜一點,但是是為了避免一個周被計算兩次。

ISO 8601 的計算方式是

  • 包含第一個週四的算第一周。
  • 包含 1/4 的那一週。
  • 第一週超過四天以上。
  • 12/29 後的第一個週一。

詳細算法請見 ISO Week Date。你在 Linux 上,可以用 date 指令查到以下依照週一、週日、ISO 算法的週數

$ date +"Sunday %U Monday %W ISO %V" -d '2010-01-01'
Sunday 00 Monday 00 ISO 53
$ date +"Sunday %U Monday %W ISO %V" -d '2010-01-03'
Sunday 01 Monday 00 ISO 53
$ date +"Sunday %U Monday %W ISO %V" -d '2010-01-04'
Sunday 01 Monday 01 ISO 01
February 9th, 2010 at 20:00 | Comments & Trackbacks (0) | Permalink


在 Google Groups/GMail 找交叉引用連結

很多時候,我們常常在 Google Groups、線上論壇或 Gmail 引用另外一封電子郵件的發言作 Cross-referencing,為了讓後來才參與討論的人快速的找到相關的背景資料。

但是很多時候,要求人家去爬文其實是很難實踐的,因為論壇流量極大,即便告知了標題、作者,很多時候可能還是要翻找很久。另外一個問題是,如果你想引用特定 E-Mail, 只能要別人回去翻閱你以前寄出的信件,這樣對方很難找到原始引據信件。即便你想讓人參閱,你也無法把特定的信變成 hyperlink,公開在網路上讓人點閱。

其實,根據 RFC2392 的定義,每一封電子郵件標頭裡,都藏有一個單一的 Message-ID。每一封信都有,而一些線上郵件軟體如 Gmail,支援搜尋 Message ID,你可以把 Message ID 輸入搜尋欄位,就可以快速找到原始的討論串。在應用上,你也可以代入搜尋網址,如 Gmail 則為

https://mail.google.com/mail/?shva=1#search/[MessageID]

只要給對方這樣的網址,他就可以找到原始的郵件。無論是藏在那一個目錄/標籤中。新式的電子郵件軟體,也可以讓你跨目錄的搜尋 Message Id,有了參照,要找到原始郵件應該比透過標題找來的快。

另外一個在網路上嘴砲溝通時常用的功能,是引用開放論壇的存檔。若你打開郵件翻閱 Header 的話,會看到一些隱藏的資訊。以 Google Groups 為例子,你會看到 X-Thread-Url, X-Message-Url 等。這兩個網址,就是線上網頁版本的存檔。你可利用這兩筆資訊提供給其他人作為引據連結。

其他的一些郵遞論壇工具,也有自己的 Archive URL,不妨開啟來翻閱。現雖有 RFC5064 之定義,但是大家似乎還是各作各的。:-/

Happy Flame War!

這是一篇 Tips.

February 7th, 2010 at 20:00 | Comments & Trackbacks (0) | Permalink


Thinkpad 小紅點設定

Thinkpad 的小紅點在 Linux 上似乎一直沒有完善圖形化介面的設定工具。若要設定的話,常得參考一些指令設定

驅動程式預設的速度、靈敏度都太低,推一陣子手指就累了,也無法按著中鍵移動小紅點來捲動視窗。不甚好用,稍做一些設定的筆記,作為未來參考。

在 GNU/Linux Debian/Ubuntu 上有數種機制可以更改小紅點設定,若是新手使用,大概會被 sysfs, udev, hal, DeviceKit, pm-utils, xorg.conf, xinput 等術語搞得一頭霧水。你若不想弄懂這些難解術語,也不想更改 xorg.conf,最快的作法是以 sudo 在虛擬終端機執行以下指令

#!/bin/sh
# 游標速度,可調整數值。大為快,小為幔
echo -n 120 > /sys/devices/platform/i8042/serio1/speed
# 靈敏度,最高應為 255
echo -n 250 > /sys/devices/platform/i8042/serio1/sensitivity
# 按小紅點為選取,1 為啟用,0 為關閉。
echo -n 0 > /sys/devices/platform/i8042/serio1/press_to_select

xinput list-props '"TPPS/2 IBM TrackPoint"'
xinput set-int-prop '"TPPS/2 IBM TrackPoint"' 'Evdev Wheel Emulation' 8 1
xinput set-int-prop '"TPPS/2 IBM TrackPoint"' 'Evdev Wheel Emulation Button' 8 2
xinput set-int-prop '"TPPS/2 IBM TrackPoint"' "Evdev Wheel Emulation X Axis" 8 6 7
xinput set-int-prop '"TPPS/2 IBM TrackPoint"' "Evdev Wheel Emulation Y Axis" 8 4 5
xinput set-int-prop '"TPPS/2 IBM TrackPoint"' "Evdev Wheel Emulation Axes" 8 6 7 4 5
xinput list-props '"TPPS/2 IBM TrackPoint"'

這些指令可以幫你把 TrackPoint 的速度、靈敏度調高,並驅動中鍵模擬滾輪功能。頭三行 echo 指令需以 root 權限執行,你可自行調整偏好的數值。後面幾行 xinput 指令,必須在 X 視窗下執行。(意即,你不能拿到 console 下面來跑)

這些指令每次重開機或休眠後都需重新執行一次。你若嫌麻煩,目前最簡易的設定機制應該是寫成 udev rules,作法以 root 執行指令如下

# cat > /etc/udev/rules.d/90-trackpoint.rules <<EOF
# SUBSYSTEM=="serio", DRIVERS=="psmouse", ATTR{press_to_select}="0", ATTR{sensitivity}="250", ATTR{speed}="120"
DEVPATH=="/devices/platform/i8042/serio1", ATTR{press_to_select}="0", ATTR{sensitivity}="250", ATTR{speed}="120"

ACTION!="add|change", GOTO="xorg_trackpoint_end"
KERNEL!="event*", GOTO="xorg_trackpoint_end"

ENV{ID_PATH}!="platform-i8042-serio-1", GOTO="xorg_trackpoint_end"

ENV{x11_options.EmulateWheel}="1"
ENV{x11_options.EmulateWheelButton}="2"
ENV{x11_options.XAxisMapping}="6 7"
ENV{x11_options.Emulate3Buttons}="0"

LABEL="xorg_trackpoint_end"
EOF

這段程式碼,參考 ThinkWiki 網站理論上,會在你開機以及重休眠模式啟動時,自動套用小紅點速度設定與模擬滾輪設定。

實際上,因為一個已知的 #549379 udev/kernel 問題,滑鼠的速度設定無法自動套用。暫時可以先用前段的 echo/sysfs 方式解決。

這是一篇 Tip.

February 6th, 2010 at 20:00 | Comments & Trackbacks (3) | Permalink


Browser Exploitation Framework

先前提到關於 Firefox 瀏覽器的擴展套件安全問題,你或者認為這種系統入侵方式很少見,畢竟可以被破解的瀏覽器為少數。事實上,已經有些工具可以拿來養木馬,像是 BindShell 開發的 BeEF (Browser Exploitation Framework)。

BeEF 整合 Metasploit 等知識庫與工具來查找各種瀏覽器的漏洞,只要你將代碼塞到受害者可能讀取的網頁,就可以即時看到對方瀏覽器版本,以及可能的入侵方法,甚至可以利用 BeEF 線上即時送出一些指令,直接侵入對方主機。;-)

February 5th, 2010 at 20:00 | Comments & Trackbacks (0) | Permalink


Linux 上試用 TECOM WiMAX 網路卡

上個月 (2010/01) VMAX/崴邁司 在台北開台期間,舉辦了一場體驗活動。雖然興致勃勃的去申請了,不過顯然重度使用者不在 VMAX 的規劃範圍之內,因此我並沒有被選到試用。幾位朋友倒是幸運的取得試用資格。

目前 VMAX 提供的 USB WiMAX 網路卡是 TECOM 的 WM5123M-2G5. 網頁上註明只支援 Windows 作業系統。基於好奇的心理,也跟朋友借了網路卡來玩一個禮拜,在北市的古亭、公館一帶試用,上下傳速度都還不錯。

不過自己比較感興趣的是否有 Linux 的驅動程式。稍早的測試是在 Linux 上,透過 VirtualBox 跑 Windows 來連線。實際上並未能在 Linux 上直接使用該網路卡連線。

查了一下知道這款設備使用 GCT 的解決方案,應該是 GDM7205,日本的 MODACOM 也利用此晶片開發了 UD01SS/UD03SS/MW-U2510/BDSS01 等產品。其中 UD01SS 也是日本 UQ WiMAX 搭售的產品之一,在 UQ WiMAX 的產品網頁上,其實也提供 Mac OS 的驅動程式。所以你若使用 Mac OS, 或許可以在此找到可用的驅動程式。

根據我的紀錄,UD01SS 使用的 USB 產品編碼 (vendor id, product id) 為 1076:7f40 或 1076:7f00. 如果開發商/製造商連編碼都懶的改的話,八成驅動程式也可共用。;-) 只是 Connection Manager 不知道能不能讓你認證/連上不同的 ISP 就是。

至於 Linux 下的使用,經過測試已經可以利用 usb_modswitch 來將初始的 ZeroCD (含有 Windows 驅動程式) 模式改為 Network 模式。不過仍缺了連線用得工具與相關的 userland 程式,所以暫時間還是無法使用。

目前開放原碼的 WiMAX 支援,只有 Intel 釋出的 Linux WiMAX Software Stack。其中最重要的用以認證的 Supplicant 暫時還無法是開放原碼。因此若要讓開源社群使用,必要得有 Supplicant 的支援才行。

另外一點,現有 WiMAX 晶片供應商如 Beceem, GCT, Sequans, Runcom 等,據聞所使用的 Driver Software Stack 都大不相同。因此恐怕未來若要整合不同的網路卡驅動程式,會有陣過渡期。

目前社群中,除了 Intel 的驅動程式外。另外一個相對開放原碼的是 Samsung 所製造的網路卡,已有一針對 Samsung 網卡所反組譯的 madWiMAX 軟體計畫。

GCT/TECOM 疑似違反 GPL 授權

另外在追查可能的驅動程式資訊時,macpaul 告知他發現 Winodws 安裝目錄中,包含了一個神秘的 Image 檔案。疑似包含 Linux 核心與相關程式,在驅動時傳到網卡上執行。

手癢稍微追蹤了一下,發現內部的確包含了一組 linux kernel 與一組 cramfs 的 rootfs. 再往裡面翻進去發現 busybox 與一應為處理 OMA-DM 功能的私有軟體。

根據 VMAX 發給消費者的資料中,並沒有任何書面資料或電子檔說明內含 GPL 原始碼一事。相關發現已經先行發至 gpl-violations.orglegal 郵遞論壇。目前對此事件暫無進一步計畫。

February 4th, 2010 at 20:00 | Comments & Trackbacks (0) | Permalink