SolarWinds Orion 攻擊與公鑰基礎設施(PKI)
由於 SolarWinds Orion 攻擊屬於供應鏈攻擊,且攻擊者利用提權實現橫向移動等活動,因此該攻擊在多個重要層面涉及數碼證書與身份認證。本文將重點圍繞這些維度展開討論。
現時,SolarWinds Orion 攻擊佔據了 IT 新聞周期的核心位置,這一現象事出有因。攻擊者透過後門取得約 18000 家機構的極高權限,受害範圍涵蓋政府機構、大型企業、技術服務商,甚至包括頂尖 IT 安全廠商。Sectigo 不在上述受害機構之列,目前亦沒有證據顯示 Sectigo 的系統或營運受到任何影響。
關於本次攻擊的分析報道已有很多。由於 SolarWinds Orion 攻擊屬於供應鏈攻擊,且攻擊者利用提權實現橫向移動等活動,因此該攻擊在多個重要層面涉及數碼證書與身份認證。本文將重點圍繞這些維度展開討論。
程式碼簽署
為實施核心攻擊,該 APT 組織似乎將惡意程式碼植入了 SolarWinds Orion 的建置環境,惡意程式碼隨之被納入已簽署的軟件建置版本,隨常規軟件更新分發。由於惡意 DLL 隱藏在合法廠商向自有軟件推送的已簽署更新中,受害機構幾乎沒有可行方法偵測到這類植入系統的惡意程式碼。
我們需要正確理解程式碼簽署的本質,及其在防範惡意軟件中的作用。程式碼簽署可確保每個已簽署檔案與簽署時的檔案逐位元完全一致,這保證了檔案在簽署完成後不會被任何主體篡改,包括新增惡意程式碼。這一能力在開放互聯網環境下傳輸程式碼時至關重要,可防範程式碼在傳輸過程中被攔截、篡改的攻擊。
程式碼簽署還包含經過認證的簽署方(即檔案來源主體)資訊,這一特性可有效對抗仿冒攻擊——即攻擊者使用與真實目標程式碼完全相同的檔名,偽造惡意檔案替換合法檔案的攻擊行為。
上述兩種防護場景均不適用於本次攻擊。由於 APT 組織在建置環節之前就已植入惡意程式碼,最終簽署並分發的程式碼本身已包含惡意 DLL。事實上,如果該 DLL 在簽署完成後、分發前被以任何方式移除,更新過程將會失敗,因為分發的檔案與簽署時的檔案狀態無法完全匹配。
程式碼簽署無法校驗已簽署程式碼是否符合簽署方的預期,也無法為所簽署程式碼的性質或質素提供任何擔保或承諾。經公共證書頒發機構(CA)簽署的程式碼,並不代表對應軟件編寫質素良好、無漏洞、運行高效、無知識產權糾紛,更不代表其行為是善意的。程式碼簽署僅能保證:程式碼由已知來源簽署後,未遭到篡改。
換個角度看,本次事件中建置系統已被惡意攻擊者控制。攻擊者篡改建置系統以生成惡意程式碼,而建置系統使用合法的程式碼簽署數碼證書,對其(在不知情情況下生成的)惡意程式碼執行了合規的簽署流程。由於 SolarWinds 客戶已在自身環境中配置信任 Orion 產品,包含該惡意程式碼的、經合法簽署的軟件更新才得以順利落實部署。
SAML
美國國家安全局(NSA)報告指出,攻擊者透過 Orion 軟件更新取得後門存取權限後,會「濫用身份認證機制」實現後續目標,例如登入雲端資源。SAML 單一登入聯邦就是被濫用的機制之一。在被攻陷的網絡中,攻擊者可透過存取 Microsoft Active Directory Federation Services (AD FS) 帳戶的私有儲存取得現有密鑰,進而偽造 SAML 令牌,impersonate 擁有聯邦資源存取權限的合法用戶。
公網 SSL/TLS 證書
本次攻擊依賴與多個域名的通訊實現命令與控制。不出所料,這些域名大多配置了公網信任的域名驗證型(DV)SSL/TLS 證書,其中部分證書由 Sectigo 簽發。
與程式碼簽署類似,SSL/TLS 證書可保障客戶端與伺服器之間的通訊在傳輸過程中不被篡改、不被竊聽,同時可驗證伺服器域名的真實身份(OV 或 EV SSL/TLS 證書還會附加額外的組織資訊)。需要再次說明的是,SSL/TLS 證書同樣無法為使用證書的服務的質素或意圖提供任何擔保。
MFA
研究人員發現,該 APT 組織使用了繞過 DUO 多因素認證(MFA)防護的技術。攻擊者利用非法取得的管理員權限,生成所需的 MFA 驗證要素以模擬真實的 MFA 認證流程,從而繞過 MFA 防護機制。
這些繞過手段有一個共同特徵:相關防護機制本身在其設計目標範圍內均運行正常,但攻擊者透過在這些機制的業務流程「上游」植入自身操作,使得這些機制的防護價值失效。
外洩的FTP憑證?
研究人員在GitHub上發現一組外洩的SolarWinds FTP憑證,密碼為Solarwinds123。我們目前無法確認這組外洩的憑證有否用於今次特定攻擊,但不論兩者是否相關,這宗事件都足以說明,現時仍使用簡單的用戶名稱/密碼登入方式存在極大風險。