在七年前開發(fā)人員發(fā)現(xiàn)GitHub存在一個災(zāi)難性的漏洞之后,GitHub已經(jīng)關(guān)閉了數(shù)量不明的通過密鑰訪問的賬戶。
Github允許授權(quán)用戶登錄到隸屬于Spotify、Yandex和英國政府的公共倉庫賬戶中,而這些公共倉庫賬戶卻使用了由當(dāng)時存在缺陷的Linux發(fā)行版本Debian生成的SSH密鑰,而這部分密鑰是不安全的——其密鑰的位數(shù)太少以至于可以枚舉導(dǎo)致暴力破解,分分鐘登錄這些存在威脅的賬戶中。
七年后,Debian社區(qū)的朋友們修復(fù)了bug并且提醒用戶取消舊的密鑰而重新生成一個。倫敦的開發(fā)人員Ben Cartwright-cox說,他發(fā)現(xiàn)了這一漏洞仍然存在于海量密鑰中,而這些密鑰因位數(shù)不足比較容易被人攻擊利用。
Cartwright-cox在周一發(fā)表的博文中稱:
“如果你剛剛或者正收到一封關(guān)于密鑰被撤銷的郵件,那請你務(wù)必仔細(xì)瀏覽并且確保確實沒有人攻擊你。如果你使用了存在問題的密鑰,你可能已經(jīng)遭到了黑客的攻擊。”
密鑰數(shù)量有限?
Cartwright-Cox在GitHub上發(fā)現(xiàn)了大約94個包括Debian衍生缺陷的密鑰。3月份他向GitHub官方報告之后,才發(fā)現(xiàn)實際用戶數(shù)量要高得多。GitHub于上月撤銷了這些密鑰,目前GitHub官方?jīng)]有作出其他回應(yīng)。
此外,Cartwright-cox發(fā)現(xiàn)了九個GitHub SSH密鑰bits數(shù)量存在嚴(yán)重不足。其中有兩個只包含256位,導(dǎo)致他能夠在不到一小時內(nèi)克隆出密鑰,而剩余的其他7個密鑰都只有512位。
漏洞描述
下面我們看一下這個Debian的漏洞是如何導(dǎo)致枚舉的。
該漏洞可謂是十分亮眼。因為漏洞的存在,使得生成的SSH密鑰長度非常短。當(dāng)生成OpenSSH密鑰的位數(shù)不足時,對于一個給定體系結(jié)構(gòu)、密鑰大小和密鑰類型而言只有32767種輸出結(jié)果。攻擊者能夠使用相同方法找到弱密鑰,然后使用一些技術(shù)來獲取密鑰保護(hù)的賬戶。這一任務(wù)會在不安全Debian SSH 密鑰的幫助下獲得一個或者更多公共網(wǎng)站,比如這一個:
“如果我想折騰得動靜大一些,我大可去做我在博客中提到的那些事情,然后或許可以給GitHub他們一些警示(我已經(jīng)給了他們機(jī)會的)。
想要制造這樣的問題可以如下進(jìn)行:
獲取問題密鑰列表。其中包含了所有SSH密鑰的公共和私密部分,如果用戶有一個存在Debien RNG 漏洞的OpenSSH版本,然后得到列表中的每個密鑰,并嘗試登錄帶有密鑰的GitHub ssh。你使用密鑰最終會告訴你與之匹配用戶姓名是什么然后進(jìn)行配對,比如加載我的密鑰便時會顯示”Hi benjojo! You’ve successfully authenticated, but GitHub does not provide shell access.”,但如果我使用的是另一個存在缺陷的密鑰,則會顯示”Hi {user}! You’ve successfully authenticated, but GitHub does not provide shell access.” ,這樣我就知道輕松知道我的目標(biāo)用戶是誰了。”
用戶:快去更新密鑰和操作系統(tǒng)
Rapid7 的高級研究員及Metasploit框架的聯(lián)合創(chuàng)始人HD Moore表示(小編:Moore同志又在宣傳推廣他的MSF框架了):
“從技術(shù)上講,攻擊者甚至不需要私鑰來查看網(wǎng)站接受的用戶身份驗證。僅僅是公共密鑰和Metasploit模塊就能夠完成了。”
這個漏洞于2006年被發(fā)現(xiàn),當(dāng)時鑒于一些用戶提交的漏洞報告,Debian維護(hù)人員最終去掉了OpenSSL代碼庫的兩行代碼。而Debian的維護(hù)人員僅僅是去掉了Debian對于OpenSSH的依賴,因此這個存在于OpenSSH中的位數(shù)缺陷并沒有被修復(fù),接下來的故事更戲劇化,Ubuntu在不知情的情況下也打包了這個存在缺陷的OpenSSH版本,所以這個漏洞又跑到了Linux的另一發(fā)行版本Ubuntu中,而在此后的20個月中,并沒有人發(fā)現(xiàn)這個從Debian跑過來的重大問題,而就在這20個月里,有一批數(shù)量不明的密鑰已經(jīng)生成。
這個問題并不是一個小問題,因為這批數(shù)量不明的SSH弱密鑰還大量存在于Github中,補(bǔ)丁也只能保證從此刻開始新生成的SSH密鑰的安全性,想要完全解決問題,還需要用戶主動去撤銷那些在20個月內(nèi)生成的存在缺陷的密鑰,并使用新的操作系統(tǒng)以生成新的密鑰。由此看來,想要徹底解決這個問題,任務(wù)量不可小覷。
小編語
最近Github可謂是多事之秋啊,先是被DDoS,然后又被爆出存在如此多數(shù)量的弱密鑰,大家都是碼代碼的,找個好點的托管平臺容易嘛!程序員何苦為難程序員!
不過上個月末才傳出Github已經(jīng)宣布正在開發(fā)一個去中心化的產(chǎn)品——GitTorrent,據(jù)官方回復(fù)說,一來是為了防止被DDoS,二來也為了Github未來的發(fā)展。Github未來如何,我們拭目以待。不過我們衷心祝愿這樣一個好的平臺越做越好!