STRIDE 分析示例:工業網關

Sytance · 更新於

STRIDE 通過六類威脅幫助分析系統可能受到的攻擊。下面以一款虛構工業網關為例,分別説明每類攻擊的發生條件、可採用的防護措施和驗證方法。示例中的措施與測試均為分析建議。

網關架構與信任邊界

操作員通過瀏覽器訪問網關管理接口,管理接口讀取和修改本地配置。本地控制器向網關發送運行數據,網關再向遠程服務上傳遙測數據。獨立的更新服務提供固件包。

本例假設管理連接和遙測連接使用 TLS。控制器接口的認證方式,以及更新包的信任機制,仍是待確認的設計問題。發送方位於本地網絡,並不能直接證明其身份和權限。

  • 瀏覽器 → 管理接口:會話、狀態查詢和配置修改。
  • 管理接口 → 配置存儲:持久化設置及憑據訪問。
  • 本地控制器 → 網關:來自現場網絡的運行數據。
  • 網關 → 遙測服務:設備身份和遙測數據。
  • 更新服務 → 網關:更新元數據和固件內容。

身份假冒:偽造控制器消息

攻擊者在現場網絡中發送冒充本地控制器的消息。如果網關僅根據源地址判斷可信性,偽造的運行數據就可能進入遙測鏈路。

擬採用的措施:建立設備身份,並在接收消息前驗證該身份。如果控制器無法支持身份認證,應評估其他接口保護方式,以及仍然可能發生的攻擊。僅劃分網段不能證明消息來源。

驗證條件:不被認可的測試身份發送的消息被拒絕,已授權控制器仍能正常通信。保留拒絕記錄,並確認偽造數值未進入遙測服務。

數據篡改:安裝前替換固件包

攻擊者通過被控制的分發節點替換更新包。即使到該節點的連接經過加密,也不能證明包由製造商授權發佈。

擬採用的措施:安裝前,使用設備信任的公鑰或證書驗證固件包簽名,並檢查該包是否適用於本產品。驗證通過的內容必須與實際安裝的內容一致。舊版本簽名包的安裝規則,以及簽名密鑰被吊銷後的處理方式,需要分別確定。

驗證條件:內容被修改的包,以及不受信任密鑰簽名的包,均在安裝前被拒絕。拒絕後,網關保持在規定的運行或恢復狀態。

抵賴:無法追溯配置修改

已授權操作員修改了遙測目的地址,但記錄中沒有個人身份或操作結果。團隊無法可靠地確認是誰執行了該操作,也無法區分寫入成功與請求被拒絕。

擬採用的措施:記錄認證身份、操作、目標、時間和結果,限制日誌訪問,並定義存儲空間耗盡時的行為。日誌中不應寫入密碼或訪問令牌。

驗證條件:受控修改產生對應記錄,未授權用戶不能修改日誌;日誌空間耗盡時的行為符合已確定的處理規則。

信息泄露:配置讀取暴露憑據

狀態接口返回完整配置對象,其中包含遙測服務憑據。只獲准查看狀態的用戶,因此獲得了其職責不需要的敏感信息。

擬採用的措施:按接口用途定義返回字段,去掉密碼、令牌等敏感值,並對配置讀取實施權限檢查。傳輸加密不能解決接口向用戶返回了過多信息的問題。

驗證條件:分別檢查各類角色的響應,確認憑據沒有出現在正常響應、錯誤信息或日誌中。

拒絕服務:輸入處理耗盡資源

發送方持續提交過大或重複的控制器消息。解析與緩存佔用資源,影響網關的管理和遙測功能。

擬採用的措施:限制消息大小和隊列長度,在高開銷處理前驗證輸入,並隔離關鍵處理任務。限制值應根據實測處理能力,以及產品對過載狀態的行為要求確定。

驗證條件:在獲授權的測試環境中執行約定的過載場景,觀察內存、隊列深度、服務可用性和恢復情況。驗收限值來自具體產品要求,本例不預設通用請求速率。

權限提升:只讀賬户調用寫接口

用戶能夠登入並查看狀態,隨後繞過頁面直接調用配置寫入接口。如果接口只驗證登入狀態,該用戶就能執行本應僅允許管理員執行的操作。

擬採用的措施:每條寫入路徑都在服務端檢查操作權限和資源權限。普通請求、批量操作和維護接口應遵循一致的授權規則。

驗證條件:只讀賬户直接發送寫請求時操作失敗,存儲的配置保持不變。再使用獲准賬户執行同一操作,確認正常功能仍然可用。

分析覆蓋範圍與剩餘風險

六類威脅的定義來自 Microsoft 的 STRIDE 方法;具體攻擊場景和防護措施取決於前述網關架構。

真實產品在同一類別下可能存在多個攻擊場景,一次攻擊也可能涉及多個類別。產品包含製造、維護或恢復接口時,這些接口同樣需要納入分析。

措施實現並完成測試後,還需要根據約定的風險準則判斷剩餘風險是否可接受。該判斷應對應本次分析的產品版本。

延伸閲讀