今天的 Tetralet 又在唧唧喳喳了



« 五月 2017 »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        






 

誰要看你的程式碼?

Tetralet | 17 五月, 2008 20:20

最近一個很轟動的新聞:Debian 的 Packager 總愛打些怪怪的 patch 已不是新聞,但這次卻闖了大禍。Debian 的 openssl 套件最近爆出了一個大漏洞,Debian(約在 2006 年 5 月)不知為何openssl 套件裡用來產生亂數種子的程式碼給移除掉了,導致用這些版本的 openssl 所產生的 SSH 金鑰有一定的規則可循,非常容易被暴力攻擊所破解。如果您的 SSH 金鑰是使用以下的作業系統所產生的:

  • Debian 4.0 (etch)

  • Ubuntu 7.04 (Feisty)

  • Ubuntu 7.10 (Gutsy)

  • Ubuntu 8.04 LTS (Hardy)

那麼就很可能會受到這個漏洞的影響。您可以利用 sudo ssh-vulnkey -a 指令來檢查您系統裡所有的 SSH 金鑰, 若測試結果為 COMPROMISED,請立即昇級您的 libopenssl 套件並使用 ssh-keygen 指令重新產生一個新的金鑰。若您的 SSH 伺服器是使用 SSH 金鑰來做認証的,請務必同時更新您的 authorized_keys 檔案以免到時無法登入您的 SSH Server。

而系統中其它會使用到 openssl 來產生金鑰的套件,像是 ipopd-opensslpostfix-tlsuw-imapdapache-openssl 等等,也請同時更新這些套件所使用的 SSL 金鑰。請參考 [SECURITY] [DSA 1571-1] New openopenssl packages fix predictable random number generator 或您系統中的 /usr/share/doc/openssh-server/README.compromised-keys.gz 以取得更多的資訊。

openssl/openssh 應該算是一個系統裡最最基本的元件了。敝人安裝 Debian GNU/Linux 後第一件事就是把 SSH Server 裝起來,然後遠端操控。加上 Debian 本身是極受歡迎的的 GNU/Linux 發行版,基於 Debian GNU/Linux 的發行版(像是 Ubuntu 或是 Konppix可以說是不計其數。個人推估全世界的 Linux 中約有 1/3 受到此漏洞的影響,災情可以說十分慘重。

以 Debian GNU/Linux 受歡迎的程度,以及 openssl 函式庫的普及性,爆出一個如此愚蠢的漏洞是不可思議的,這可是讓 Debian Project 頗覺臉上無光。但,與其批評 Debian 套件品質管理不佳,個人卻認為:『這是遲早的事。簡單得說,誰要看你的程式碼?』

記得很多人都說,Open Source 專案的程式碼漏洞較少,因為『原始碼是公開的,每一個人都可以看,當然程式的漏洞因而有效降低了』。但 openssl 這件事卻告訴我們,這種觀點是經不起事實驗証的。那麼多人在用著 Debian GNU/Linux,那麼多的應用程式會用到 openssl 函式庫,但那麼大一個漏洞擺在那整整 2 年卻無人發現。是的,Open Source 專案的程式碼是公開的,但基本上沒人會去看。

更進一步說,整個 Open Source 的世界其實都是建構在如此薄弱的基礎上。當某人推出了一個好用的程式,除非特意去剝開來看,否則誰曉得裡面在搞什麼鬼?就算剝開來看了,真有什麼問題有時 就連原始開發者都搞不清楚了,更何況只是花了 5 分鐘來 trace code 的使用者?有時就算找到了問題點,解決的手法也多是頭痛醫頭腳痛醫腳的緊急手段,若沒有對整個程式的全盤了解,那些修正碼真的能用嗎?這卓實令人懷疑。於 是如此東修西補的結果,程式碼最後變成疊床架屋繁雜無當難以維護也就不令人意外了。

以個人最愛的 IceWM 為例。之前 Pidgin 的 Tray Icon 在 IceWM 上大小異常。不久 IceWM 便推出了解決方案:當 Tray Icon 的 width 小於 height 時,強迫讓 width 等於 height。呃... 憑良心說:這算是解決方案嗎?

而不只是程式開發者。像是套件維護者、文件寫作者、翻譯者等等,都有類似的問題。有很多提交出來的修正檔其實並無法解決問題。有很多了不起的專案卻 被打包成了不堪用的套件。而在翻譯時只是做做簡繁轉換的也比比皆是。甚至故意夾帶惡意程式碼等情事也時有耳聞。而會有誰特意去剝開來看裡面可能會發生什麼 問題呢?如果再加上不甚用心的維護團隊,這簡直是一場大災難。想想看:連以龜毛著稱的 Debian Project 都會在 openssl 如此重要的套件上犯上這種不該犯的錯誤了,那麼其它的 Linux 發行套件呢?真讓人不敢再想下去了。

當然了,Debian 成名已久,這次的 openssl 或許僅是單一事件事件罷了。不過這也給我們一個很大的警惕:別再怠惰了,找個時間,替自己的專案、套件、翻譯成果全部好好重看一次吧!Open Source 的世界乃是根基於每個使用者身上,若每一個人連自己的責任區都不肯花費心力好好維護的話,那麼期盼 Open Source 能發展到什麼地步也只是癡人說夢罷了。

但在此同時,也別奢望會有什麼人會花費心力替您維護那些程式碼。自己的東西,還是憑藉著自己的良知好好得做下去吧!
迴響

那麼其它的 Linux 發行套件呢?

我是覺得其它的套不見得比Debian差
從另一個觀點來看
這個問題在Debian上出現,卻沒有在別的Linux上出現不是嗎?

[回應] scsi @ 18/05/2008, 10:31

Re: scsi

若以此單一事件就說 Debian 比其它 Linux 發行版來得差,似乎是有失偏頗。

就像洋基隊的王牌終結者 Mariano Rivera 前幾天上場救援卻失分吞敗,但這件事依然不損他是史上最強的救援投手的稱號。

Debian Project 乃是由 Debian Developer 所組成的,這些 DD 的能力當然是無庸置疑,他們也都曉得自己在幹什麼。雖然這次 Debain 真的犯了一個很不該犯的錯誤,但我想就算換做是其它的 Linux 發行套件,這類的錯誤也是難以避免的吧?

[回應] Tetralet @ 18/05/2008, 12:48

Re: 誰要看你的程式碼?

我覺得 libssl 應該很多人看 source (至少 cracker 會去看吧…), 但會想到要看 Debian patch 的人相對較少。

DD 是人,當然也會良莠不齊(有些 DD 的套件品質實在是…)。

題外話:
有些國家或地區的 DD 不容易取得所有 DD 的信任。
我知道有少數 DD 曾公開表示「不願意使用」中國籍 DD maintain 的套件。

他們相信中國籍 DD 的個人良知,但他們不相信中國政府。
生活在不自由的地方,誰能保證他們負責的套件不會因為政府的壓力而加入一些奇奇怪怪的 patch?

當然啦,這是各自的選擇。我對中國籍 DD maintain 的套件沒有偏見。(我沒無聊到安裝套件還先檢查 maintainer 的國籍…)

[回應] caleb @ 18/05/2008, 15:32

Re: 誰要看你的程式碼?

很多時候就是這樣子..
Open Source 很好, 但是絕對不和品質畫上等號
品質絕對和開發者的功力有關

[回應] anony @ 19/05/2008, 21:36

Re: 誰要看你的程式碼?

Open source 的東西就是如此
GNU Hurd 不也是 open source?
穩定了嗎?? :P

[回應] anony @ 19/05/2008, 21:37

Re: 誰要看你的程式碼?

其實並不是要說Debian比別的Linux差,Debian是一個很好的Linux
Debian的高佔有率正說明了很多人認同了他的管理及文化

我只是要強調其它的Linux並不是就這麼的不堪一擊 :-)
別的Linux能在這麼開放自由的環境存活下來必有其獨到之處不是嗎?

[回應] scsi @ 20/05/2008, 13:43

Re: 誰要看你的程式碼?

很多時候就是如此
Fedora 不也是很多人在用??

我遇過有人把 cpufreq 裝起來
結果, 每十分鐘整台當機一次

還好重開機之後, 十分鐘內發現到怎會有那個奇怪的 process

移除之後就沒事...

1. why cpufreq in Fedora?
2. why no body found? 我應該不是第一個吧

[回應] dou0228 @ 20/05/2008, 22:36

Re: scsi

個人認為,每一種 Linux 發行版都有其獨到之處,也因而擁有不同的使用族群,基本上沒什麼優劣勝敗之分。

而 Debian GNU/Linux 則是公認以『嚴謹』著稱的發行版,出此重大紕漏實在讓人難以置信。這對於 Debian 長久以來辛苦建立的信譽所帶來的傷害可想而知。

[回應] Tetralet @ 20/05/2008, 23:11

Re: dou0228

若說是軟體或驅動模組有 bug,當機或怎樣其實我們是不忍苛責的。但若是攸關安全上的問題,就很難等閒視之了。

雖然這次 Debain 是無心之過,但希望 Debian 此後對於一些核心套件的把關能更加嚴謹一些,對於 upstream 也要建立流暢的溝通管道,否則難保類似情事不會再度發生。

[回應] Tetralet @ 20/05/2008, 23:27

Re: caleb

記得數年前,Debian 的 Kernel 全交由一個中國籍的 DD 在負責維護的哦!後來他因故退出後才由 debian kernel team 接手的。

[回應] Tetralet @ 20/05/2008, 23:32

Re:

是很扯啦.. 至少我個人認為那樣子的 module/packages 是不應該 default 就會出現

萬一使用者不太懂 Linux, 又不知道該裝些什麼, 就全選, 可想而知會發生什麼事情 :P

也是剛好去 ps 看到那怪 process, 原先裝的人也搞不清楚到底是為什麼會 kernel panic

[回應] dou0228 @ 21/05/2008, 14:24

Herbert Xu?

說的是他嗎? :P
對他有興趣的人不仿去查一下 Linux Kernel maintainer 的照片~

[回應] dou0228 @ 21/05/2008, 14:30

Re: dou0228

正是 Herbert Xu。dou0228 兄果然是見多識廣!

[回應] Tetralet @ 21/05/2008, 19:55

Re: 誰要看你的程式碼?

Tetralet 拼錯字了,是 Knoppix 才對。

[回應] carl_tw @ 30/08/2008, 16:56

著實

...些修正碼真的能用嗎?這卓實令人懷疑...
應該是著實才對...
對不起我太無聊了...
請不用理我

[回應] 路過 @ 03/09/2008, 01:14

authimage
驗證碼皆為英文大寫字母
僅輸入前4碼即可。後2碼是假的,欺敵用。
這是為了防制 Spam 而設計的。若造成您的不便還請見諒!
Accessible and Valid XHTML 1.0 Strict and CSS
Powered by LifeType - Design by BalearWeb