PUFsecurity看SolarWinds攻擊事件: 8個該預先知道的對策
在去年十二月中,SolarWinds,這家專門提供IT管理解決方案的公司發生了一起軟體供應鏈攻擊事件。其軟體構建環境以及代碼簽名架構受到攻擊破壞並植入惡意後門程式。透過該公司軟體版本管理與建構系統,隨著所發行的軟體修補程式,一併派送到客戶端,進而造成後門程式的擴散,更嚴重者機密資訊外洩。值得重視的是,這起事件被定位為國家級的攻擊,透過軟體供應鏈所影響的範圍包含美國五百大企業及當局政府組織,影響甚鉅。
根據資安專家分析,這是起攻擊可分成多個步驟的行動計劃。除了軟體構建環境以及代碼簽名架構遭破壞外,攻擊起始點也引人注目。可能源於開發人員鬆懈草率地將FTP證書以純文字洩漏在 GitHub上。在攻擊上透過壓縮和編碼的組合來隱藏可能被檢測出的後門程式碼,愚弄專業的檢測軟體與開發人員的檢閱流程。最後於版本管理系統中植入了非信任的原始碼、取得相關憑證與簽署人密鑰,入侵了建構環境以及代碼簽名架構。駭客同時繞過了SolarWinds及其客戶、私人企業與政府機構所建立的多種威脅偵測機制,透過漏洞進入了SolarWinds客戶的網路之後,還能躲過這些環境中的防火牆與安全控制。
保護軟體供應鏈與降低這類型的攻擊風險普遍被認為遙不可及,從多面向來看這類型的攻擊對安全專家來說是處於早期發掘問題的階段。即便如此,透過組織審慎開發安全規範、程序及檢測工具,還是能降低攻擊發生的風險。我們提供了下面相關防範與建議,並使用軟體、硬體、安全作業規範來減少軟體供應鏈攻擊事件的發生。
限制客戶對服務主機的存取權限
除了草率不慎公開洩漏服務器憑證外,對於有效客戶我們建議嚴格地限制客戶IP的存取或是其他如憑證有效時間,此外亦詳細記錄存取日誌,以作為第一層的防護把關。軟體派送/更新下載點的安全防護格外重要,在服務佈署上建議採用WAF或是RASP、伺服器主機佈署HIPS等防禦系統,進而降低受到攻擊的風險。
加強控管帳密私鑰憑證
關於使用硬體安全以增強安全層級,在軟體開發建構環節中,對於開發人員或者建構系統來說,有許多的密碼、密鑰、憑證需要妥善的管理,開發人員可以使用個人硬體Security key作為身分認證、進階密鑰與個人憑證的管理與保護。在組織資訊架構當中我們建議構建HSM及KMS等系統解決密鑰管理等安全的痛點,HSM硬體安全模組(Hardware Security Module)是一種可執行密碼運算的硬體模組。在經過審慎的安全檢測與確認後,硬體模組將能夠為組織帶來強健的安全性。HSM主要的篡改留證(tamper evidence/proof)、篡改抵抗(tamper evidence)兩種方式的防篡改功能特性,應用HSM於軟體建構當中可以在不曝露密鑰的狀況下進行文件、程式碼加密與簽署程序,這樣大大地確保軟體加密與簽署的安全性。KMS可以作為密鑰、憑證的另一層管控,透過集中式管理可以解決軟體開發中Secret散落的問題,像是 API 憑證,密碼,證書等等,KMS提供嚴格的存取控制並記錄詳細的審核日誌。 另外,除了儲存靜態Secret,也能動態生成Secret,讓應用程式只能在一段時間條件內存取敏感資料,大大降低了Secret被偷竊後的風險。
採最小授權原則避免帳戶濫用
過大的用戶特權及帳戶的濫用往往是在軟體開發或測試階段普遍出現的情況,我們建議在操作API或是執行帳號時採用最小授權原則,只授權必要的權限或使用最低要求權限的帳號,避免在帳號洩漏或是讓攻擊行為駭客取得這些特權帳號後造成的損害。此外,亦可在佈署階段透過SOP或是自動化檢測進行權限帳號的降權或是移除測試帳號等程序。
加強軟件發布與簽章程序
軟體發佈進行簽章程序,在用戶端進行完整性檢查,確保未被篡改。硬體安全模組可以加強簽章程序的安全性。代碼簽章作為軟體安全性依據及根本完全仰賴簽章金鑰的安全性。將金鑰儲存在一般電腦軟體或是資料庫中相當易於遭竊,是不安全的作法。因此,將金鑰儲存在安全、防篡改的硬體安全模組便是更加安全的最佳實踐。
確實執行代碼審查程序及安全憑證掃描
優良的軟體工程程序,通常在合併代碼或建構前進行代碼審查,代碼審查可以適時的移除像是格式化字串攻擊、競爭危害、內存洩漏、憑證洩漏及緩存溢出等計算機安全隱憂,甚至是惡意代碼竄改植入後門的攻擊,提升代碼的安全性,除了靠有經驗的開發人員審查外,也可以透過商業自動化代碼脆弱分析掃描工具,在建構階段就將安全漏洞檢測出進行修補。
確實執行代碼簽名與完整性檢查
代碼簽名可以確保系統的完整性及預防竄改。我們建議無論是原始碼庫、內部或外部的模組庫、發佈/佈署的檔案庫甚至最後軟體執行階段,都能夠有確實執行代碼簽名及完整性檢查,減少代碼竄改的風險。而代碼簽名程序使用HSM(硬體安全模組)是加強安全性的做法,在HSM內進行代碼簽署更可確保簽署憑證及密鑰的安全。另一種安全簽署環境則可以執行於Arm TEE/Intel SGX架構等安全環境當中的HSM,以增強密鑰及簽署的安全性。
導入第三方程式庫安全檢測
一個軟體的組成及堆疊已很難完全由一家公司或是組織自行開發,通常仰賴外部函式庫或模組的引用才能加速軟體的發展。一個具公信力的公開套件庫會針對所管理之套件模組進行安全性掃描,並對開發人員及相關組織的身份及套件做認證,引用外部套件、函式庫,除了進行完整性檢測外,建議選用認證過的開發組織及開發者所開發之函式庫套件,避免使用來路不明的套件庫,以獲得較高的代碼安全及品質。如果是Web軟體框架及組件開發時直接引用第三方CDN網址,這樣當CDN上代碼被入侵,將演變為更大規模攻擊跳板,所以引用也要格外小心。
部署供應端與客戶端安全檢測
為了杜絕軟體供應鏈上下游業務流程造成安全性風險,建議制定組織安全規範,擴大風險安全評估體系,包含組織網絡具有重要訪問權限的供應商、數據的供應商、硬體系統供應商。使用商業的安全檢測軟體或是防毒軟體掃描軟體,自動化檢測及修復流程可以重複執行,並預先偵測出惡意軟體或是找出軟體安全漏洞,減少自行開發或向供應商採購中的軟硬體風險。
透過上述安全建議,可以在軟體供應鏈各環節減少漏洞與攻擊的風險;而熵碼科技所提供的PUF-based硬體安全,在PUF的隨機性、不可複製性和穩定性基礎上形成一信任根,再配合延伸解決方案所提供金鑰管理、數位簽章及密碼算法等功能,可以在軟體供應鏈防護當中為關鍵元件HSM及Security key 提供低成本及更高層級的安全防護。
|