荷蘭安全公司CompuTest的安全研究員Thijs Alkemade在以色列公司StarCom創建的發布免費SSL證書的工具StartEncrypt中發現多個設計和執行缺陷。
StarCom受到Let’s Encrypt項目的啟發,在6月4日推出StarEncrypt項目。想要部署免費StartSSL證書的用戶只需下載一個Linux客戶端并將其上傳 到服務器即可。這個客戶端會執行一個域名驗證流程,通知StartSSL服務,隨后為運行在服務器上的域名發布并安裝一個“擴展驗證”SSL證書。
StartEncrypt含有設計和執行缺陷
CompuTest公司指出,這個驗證進程中存在缺陷,而且服務器所有者只需通過一些小技術就能接收到其它域名的SSL證書如臉書、谷歌、Dropbox等等,隨后這些證書就會出現在黑市上或者被用于中間人攻擊中。
研究人員發現的第一個漏洞是設計問題,用戶能夠手動配置客戶端從服務器下載簽名的文件夾。攻擊者只需將工具指向托管著另外一個域名的簽名的服務器上的一個文件夾。這些域名簽名能夠從允許用戶上傳文件的站點如GitHub、Dropbox等中被提取出來。
第二個問題更加嚴重,因為它允許攻擊者獲取更多域名的SSL證書。研究人員指出,其中一個API驗證調用中包含一個名為“verifyRes”的參 數,它接受URL作為輸入。也就是說客戶端易受開放重定向漏洞的影響,攻擊者能夠偽造這個請求并且將工具指向不受控制的服務器中。但是這種功能也不是那么 容易就被利用。攻擊者需要將工具指向的域名URL必須(1)允許用戶上傳文件并以原始格式返回;或者(2)包含自身的開放重定向問題。
雖然第一個條件很少見,但是第二個并非如此。所有支持OAuth 2.0即支持社交登錄功能的標準的網站必須允許能讓該協議正常起作用的開放重定向。利用這個OAuth 2,0和StartEncrypt客戶端的犯罪分子能夠哄騙StartSSL服務以他的名義為任何支持OAuth 2.0的網站發布免費的SSL服務如臉書、推特、雅虎、微軟等。
其它問題
此外,CompuTest還發現StartEncrypt并沒有檢查自己服務器證書連接到API時的有效性,也就是說犯罪分子能夠接收到驗證請求并為試圖使用StartEncrypt的用戶發布錯誤的SSL證書。
API也不會驗證其為了驗證而下載的內容文件,這樣攻擊者就能夠以第三方網站的名義獲取證書。用戶能夠上傳形象化符號、證書私鑰。此外,跟 Let’s Encrypt項目一樣的是,StartEncrypt易受“重復簽名密鑰選擇(Duplicate-Signature Key Selection)”攻擊的影響。安全研究人員認為StartCom并未從Let’s Encrypt項目中汲取經驗教訓。
StartCom已經發布了StartEncrypt Linux客戶端新版本,序列號仍為1.0.0.1。CompuTest指出已將其它問題報告給了該公司,該公司隨后將會提供修復方案。
今年3月份,StartSSL曾面臨著一個類似問題,允許犯罪分子得到他們并不擁有的域名的SSL證書。