保護軟體從來源、元件、建置、更新、交付整條鏈
Software Supply Chain Security
軟體供應鏈安全
保護軟體從
- 原始程式碼
- 第三方元件
- 開發與建置工具
- 發布/部署
- 更新
整個過程中的安全性與完整性
例如:
- 元件有沒有被植入惡意內容
- 元件是否存在已知漏洞
- 更新檔是否是真的
- 建置過程有沒有被竄改
- 儲存庫有沒有被入侵
- 開發帳號有沒有被盜
- 使用者拿到的軟體是不是原本那份
軟體供應鏈攻擊
攻擊者不是直接攻擊最終的使用者
而是攻擊軟體開發、元件、建置、發布、更新,這些供應鏈中的某個環節
進而影響下游使用者
攻擊一個上游,可能影響很多下游
上下游
上游:
開源元件開發者、套件供應者、軟體供應商
下游:
使用這些元件的公司、產品、最終使用者
假設我的網站
使用到元件A 1.0
後來發現
元件A 1.0有已知的風險
那我的軟體可能會受到這個漏洞影響
IPAS官方建議方向:
定期:
進行漏洞掃描
保持軟體元件更新與修補
上一種是元件本身有漏洞
這個是:
元件本身正常,但被攻擊者動了手腳
例如剛剛的元件A
原版本是正常的
結果被攻擊者修改
開發人員下載到遭修改的惡意元件A
然後放進自己的產品中
你沒被入侵,但你拿到的元件已經是被修改過的
正常的情況中:
- 供應商製作更新檔
- 使用者下載更新檔
- 驗證
- 安裝
這時攻擊者可能會:
- 攻擊供應商
- 修改更新檔
- 放入惡意內容
- 使用者下載
- 系統又沒驗證
- 自動安裝
第二和三類都屬於:
軟體及資料完整性失效
可以使用PKI公鑰基礎建設,相關憑證驗證機制
協助確認資料來源的真實性與完整性(DAY13)
DAY12有提過「雜湊」
Hash雜湊可以用來協助驗證integrity完整性
假設官網公告:
A元件.zip
SHA-256=ABC1234***********
使用者下載後計算:
SHA-256
ABC1234***********
如果相同代表檔案內容與對方提供的一致
如果不同代表檔案不同,可能原因:
IPAS 113-2 Q21
作業系統在更新軟體、韌體時,下列敘述何者錯誤?
A:可以透過Hash確認完整性
但!Hash主要證明檔案內容是否一致
不一定能證明
這個檔案是不是官方可信任的來源提供的
(真實性)
這時就可以看DAY13學到的數位簽章
它可以協助:
原理簡單理解:
如果驗證成功:
這份資料確實來自對應的私鑰擁有者,而且簽署後沒有被修改過
假設我想下載一個軟體套件:
有兩個地方有這個軟體套件
A -> 官方/可信任的儲存庫
B -> 陌生論壇上的下載連結
這時即使檔案名稱都一模一樣
也不代表裡面的內容是一樣的
所以供應鏈安全
不只是使用什麼元件
還有這個元件從哪裡來
這就是來源資訊/來源追溯
最重要的是元件來源必須是可信的
儲存庫是什麼
放程式碼、套件、軟體元件的倉庫
建置
把程式碼轉成可執行/部署的成品
這時假設原始的程式碼都是安全的
但!!
建置的系統被攻擊了
那可能會變成
攻擊者入侵建置系統
偷偷加入惡意內容
產生出被污染的軟體
所以!不能只檢查程式碼!
假設整個流程都是正常的
但!
一開始的帳號就已經被冒用了
所以!供應鏈安全不只有程式設計
這就是縱深防禦
不把安全全部押在單一控制措施上