安全研究人員和加密專家最近幾天都忙于找出剛公布的 Juniper NetScreen 防火墻 VPN 流量解密后門的具體細節。現在,他們確信自己已經找到了答案,惡意第三方修改+Juniper自身的加密失敗。
據專家稱, Juniper 采用已知有缺陷的隨機數字生成器 Dual_EC_DRBG (雙橢圓曲線確定性隨機比特生成器)作為 NetScreen 防火墻 ScreenOS 加密操作的基礎,認為由于其采取了額外預防措施而不會產生不安全的后果。但事實是,這些安全保護措施并沒有起到效果。
VPN 解密問題是 Juniper 在上周四公布的,同時公布的還有另一個可使攻擊者利用硬編碼的主密碼獲得 NetScreen 設備管理員權限的漏洞。該公司稱,兩個問題都是由最近的內部代碼審計中發現的 ScreenOS 未授權代碼造成的。
Juniper 發布了受影響固件的補丁版本,但并未公布該流氓代碼的具體細節,其位置和可能的添加者都還屬于內部機密。FBI 正在調查該事件,網上最新付出的消息顯示,始作俑者有可能是 NSA 。
安全社區擔負起了逆向老版固件和 Juniper 新補丁的責任,希望能挖掘出更多信息。他們很快找到了那段偽裝得非常聰明的硬編碼主密碼,并發現其影響范圍不像一開始認為的那么廣。
加密專家深入研究對他們而言更具吸引力的 VPN 流量解密問題,畢竟,暗中窺視加密流量的能力任何時候都不能等閑視之。
沒過多久,就有人注意到 Juniper 最新的補丁將一個參數恢復到了受 VPN 解密問題影響的 ScreenOS 6.3.0分支最初版本 6.3.0r12 之前的數值。
德國安全顧問公司 Comsecuris 創始人兼首席執行官拉爾夫-菲利普·威曼(Ralf-Philipp Weinmann)在進一步分析之后稱,該參數是雙橢圓曲線(Dual_EC)隨機數字生成器(RNG)使用的兩個常數P和Q當中的Q。
Dual_EC 是美國國家標準技術研究所(NIST)于2007年在美國國家安全局(NSA)的支持下被標準化的,NSA 在其發展過程中扮演了重要的角色。此后不久,微軟的兩名研究員丹·舒茂(Dan Shumow)和尼爾斯·弗格森(Neils Ferguson)就揭示了該標準中一個可被用作后門的重大漏洞。
“數學分析部分略去不談,簡單地說就是,Dual_EC 依賴于一個特殊的32字節的常數 Q,該常數如果由惡意攻擊者產生,他可以僅憑30個字節的原始輸出就能預測 Dual_EC 隨機數生成器的未來輸出。”約翰·霍普金斯大學副教授密碼破譯專家馬修·格林(Matthew Green)在周二發布的一篇博文中寫道。
NIST 規范中Q的默認值是由 NSA 產生的,不能保證它真的就是按隨機方式產生。事實上,2013年9月,基于NSA前雇員斯諾登揭秘的文件,《紐約時報》報道稱 NSA 故意設計了這個漏洞。
該報道促使 NIST 將 Dual_EC_DRBG 從其推薦列表中除名,建議用戶轉向其他的隨機數生成器。在 NIST 的建議之后,Juniper 承認 ScreenOS 采用了 Dual_EC_DRBG,但宣稱“是以一種不會造成已被曝光的可能問題的方式利用的。”
ScreenOS 沒有采用 NIST 建議的 PQ 常數值作為橢圓曲線的基準點,而是用了“自生成的基準點。”此外,Dual_EC 的輸出結果又作為另一個隨機數生成器 FIPS/ANSI X.9.31 的輸入來產生新的隨機數以供 ScreenOS 加密操作取用。
Juniper 為什么要用一個 RNG 的輸出作為另一個 RNG 的輸入而不直接采用后者那個更安全的 RNG 我們不得而知。但是,如果該實現是切實精準的,控制常數Q應該對攻擊者沒什么大用處。那么,為什么攻擊者要費勁去改那個參數呢?
這個問題的答案被獨立研究員威廉·賓格爾斯(Willem Pinckaers)揭曉了。他閱讀了威曼的分析,注意到 Juniper 用來將 Dual_EC 的輸出傳遞到 ANSI 生成器的代碼中存在有一個錯誤,會導致該步驟失敗。
威廉·賓格爾斯指出:重設種子系統偽隨機數生成器函數 reseed_system_prng 將全局變量——系統偽隨機數生成器內存指針 system_prng_bufpos 置為32。這意味著在該函數第一次調用以后,緊跟在系統偽隨機數產生塊 system_prng_gen_block 的重設種子函數調用后面的for循環根本不會得到執行。而且,ANSI X9.31 偽隨機數生成器代碼完全沒用。
該錯誤似乎早于未知攻擊者對Q點的未授權改變,其本身也可被視為一個后門。實際上,威曼將整件事描述為“被后門的后門”。
“總而言之,某黑客或黑客團伙發現了 Juniper 軟件中現有的一個后門,可能是故意設置的也可能是無意造成的——你自己判斷!”格林說,“然后他們在此之上又建了一個他們自己的后門——因為所有的苦勞都已經替他們做了嘛。最終結果就是有那么一段時期,某些人——或許是外國政府,能夠解密美國和全世界的 Juniper 流量。而這一切全都因為 Juniper 自己已經為他們鋪好了路。”
Juniper 沒有立即回應對此做出評論的請求。
格林稱,即使 Juniper 沒有故意引入該漏洞,如果美國政府當局強迫廠商在加密實現中設置后門以便合法竊聽通信,那么此事無疑就是其后果的絕佳案例。
“加密后門的問題不在于它們是攻擊者闖入我們加密系統的唯一途徑,而在于那是最佳途徑。這些后門辛苦假設好管道和電線,讓攻擊者可以大搖大擺地走進來改換門庭。”
“該漏洞告訴我們的是,此類擔憂不再是理論上的。”格林說,“如果加密后門確實存在于我們的未來里,那我們所有的工作就更難做了。”