軟體定義網路中的跨應用投毒
作者: {Fr4nk}@ArkTeam
原文作者: Benjamin E. Ujcich, Samuel Jero, Anne Edmundson, Qi Wang, Richard Skowyra, James Landry, Adam Bates, William H. Sanders, Cristina Nita-Rotaru
原文標題: Cross-App Poisoning in Software-Defined Networking
原文會議: 2018 ACM Conference on Computer and Communications Security
軟體定義網路因其在裝置控制功能的可程式設計和可擴充套件性受到越來越多的歡迎。基於 SDN 的網路應用蓬勃發展,由於每個應用必須訪問或修改共享控制面中的資料,因此也就引入了嚴重的安全問題,甚至會破壞正常的網路運維。
作者提出了一種基於 SDN 控制面的攻擊,並稱之為跨應用投毒 (CAP) ,其原理主要是通過一個普通許可權應用操縱共享控制面的狀態從而欺騙更高許可權的應用被動採取行動。基於角色的訪問控制既不跟蹤資訊流也不強制執行資訊流控制,因此無法有效防止此類攻擊。
針對於此,作者提出了一種防禦方法 ProvSDN ,它通過資料溯源跟蹤資訊流,並作為引用監控器來防止 CAP 攻擊。作者在 ONOS 控制器上實現了 ProvSDN ,並證明了可以使用低延遲開銷跟蹤資訊流。圖 1 中分別展示了 SDN 架構的重要元件、通過 API 互動 / 資料面事件監聽的應用互動。
圖 1 SDN 架構概覽和利用服務 API/ 事件回撥的應用互動
為了系統性地識別 CAP 攻擊,作者利用了應用間授權的方式生成資料,連同真實資料流一併傳輸,並通過構造漏洞 POC 來證明 CAP 在實踐中的攻擊過程和危害。作者構建的 CAP 安全元件分析結果如表 1 所示,其中任何可以寫入源的應用都可以完成 CAP 攻擊。
表 1 CAP 元件的靜態分析結果
在作者提出的防禦方法中, ProvSDN 通過 hook 所有控制器的 API 介面,從應用程式收集源資訊、構建溯源圖、並檢查 API 請求來作為引用監控器抵禦未知的 CAP 攻擊。隨後,作者在執行有 Open Vswitch2.7.0 的模擬環境中評估了 ProvSDN 的效能表現。
圖 2 某應用回撥 NB API 時 ProvSDN 架構圖
圖 3 顯示了沒有 ProvSDN 、未強制執行 IFC 的 ProvSDN 以及強制執行 IFC 的 ProvSDN 延遲。作者對三種情景中的每一種進行了 30 次試驗,平均延遲分別為 11.66 ms , 28.51 ms 和 29.53 ms 。雖然 ProvSDN 增大了資料延遲,但隨著更多應用和內部控制器接收事件的增多,可以注意到資料延遲在具有一定規模的流量上被進行了均分。這是由於與交換機中流規則匹配的後續資料包不需要轉到控制器或應用程式上進行處理,即 ProvSDN 僅需要在相對不頻繁的控制面狀態變化上操作。
圖 3 資料流啟動延遲
最後,作者討論了 ProvSDN 的實用性。具有安全模式的 ProvSDN 不會強制分離記憶體空間,並利用 Java 的訪問控制來阻止應用程式訪問私有資料結構。此處,作者還提出一種替代設計方案,是將每個應用程式分離到其自己的程序中,並將 API 呼叫橋接到控制器,從而通過底層作業系統強制隔離,但這需要對 ONOS 的體系結構進行重新設計。