針對(duì)跨安全邊界的sdn api調(diào)用的動(dòng)態(tài)過濾的制作方法
【專利摘要】本文提出了用于減少網(wǎng)絡(luò)元件關(guān)于惡意API調(diào)用的漏洞的技術(shù)。驗(yàn)證跨網(wǎng)絡(luò)元件處的API邊界的數(shù)據(jù)的一個(gè)或多個(gè)過濾器被動(dòng)態(tài)地加載到該網(wǎng)絡(luò)元件中,以使得使用一個(gè)或多個(gè)過濾器不需要重啟該網(wǎng)絡(luò)元件。針對(duì)API函數(shù)的API調(diào)用被接收,其中,API調(diào)用包含與API函數(shù)相關(guān)聯(lián)的一個(gè)或多個(gè)參數(shù)值。這些參數(shù)可以利用一個(gè)或多個(gè)過濾器進(jìn)行驗(yàn)證。如果確定一個(gè)或多個(gè)過濾器證實(shí)API函數(shù)的參數(shù),則可以利用這些參數(shù)值執(zhí)行API函數(shù)。如果確定一個(gè)或多個(gè)過濾器未證實(shí)API函數(shù)的參數(shù),則API函數(shù)的執(zhí)行可以被中止。
【專利說明】
針對(duì)跨安全邊界的SDN API調(diào)用的動(dòng)態(tài)過濾
技術(shù)領(lǐng)域
[0001 ] 本公開涉及驗(yàn)證應(yīng)用程序接口(API)調(diào)用。
【背景技術(shù)】
[0002] 為了改變網(wǎng)絡(luò)元件(例如,交換機(jī)、路由器、防火墻、虛擬交換機(jī)和路由器等)的配 置設(shè)置,管理員通常會(huì)通過網(wǎng)絡(luò)瀏覽器或直接登錄設(shè)備。軟件定義網(wǎng)絡(luò)(SDN)提供了至網(wǎng)絡(luò) 元件的內(nèi)部功能的應(yīng)用程序接口(API),并且允許內(nèi)部和外部應(yīng)用"在運(yùn)行中(on-the-fly)"動(dòng)態(tài)地改變網(wǎng)絡(luò)元件的行為和配置。
[0003] API暴露了本來從未意圖或設(shè)計(jì)為被暴露的內(nèi)部網(wǎng)絡(luò)元件的功能。單個(gè)API調(diào)用可 以訪問若干個(gè)內(nèi)部調(diào)用,這些內(nèi)部調(diào)用本身可以調(diào)用其他的內(nèi)部調(diào)用。因此,沒有被設(shè)計(jì)為 穩(wěn)健地處理惡意輸入的潛在的數(shù)百個(gè)內(nèi)部設(shè)備調(diào)用可能接收到惡意輸入。
【附圖說明】
[0004] 圖1示出包括與控制器通信的一個(gè)或多個(gè)網(wǎng)絡(luò)元件的示例性系統(tǒng),并且這些網(wǎng)絡(luò) 元件可以配置有本文所述的動(dòng)態(tài)API調(diào)用過濾和驗(yàn)證能力。
[0005] 圖2示出描繪利用動(dòng)態(tài)過濾技術(shù)調(diào)用網(wǎng)絡(luò)元件的API時(shí)的操作的一般示例性流程 圖。
[0006] 圖3示出用于驗(yàn)證API調(diào)用的參數(shù)的動(dòng)態(tài)過濾技術(shù)的更詳細(xì)的示例性流程圖。
[0007] 圖4示出被配置為根據(jù)本文提出的技術(shù)驗(yàn)證API調(diào)用的參數(shù)的網(wǎng)絡(luò)元件的示例性 框圖。
【具體實(shí)施方式】
[0008] 鐘述
[0009] 本文提出了用來減少網(wǎng)絡(luò)元件關(guān)于惡意API調(diào)用的漏洞的技術(shù)。驗(yàn)證跨網(wǎng)絡(luò)元件 處的API邊界的數(shù)據(jù)的一個(gè)或多個(gè)過濾器被動(dòng)態(tài)地加載到該網(wǎng)絡(luò)元件中,以使得利用一個(gè) 或多個(gè)過濾器不需要重啟該網(wǎng)絡(luò)元件。針對(duì)API函數(shù)的API調(diào)用被接收,其中,API調(diào)用包含 與API函數(shù)相關(guān)聯(lián)的一個(gè)或多個(gè)參數(shù)值??梢岳靡粋€(gè)或多個(gè)過濾器來驗(yàn)證這些參數(shù)。如果 確定一個(gè)或多個(gè)過濾器證實(shí)該API函數(shù)的參數(shù),則可以利用這些參數(shù)值執(zhí)行該API函數(shù)。如 果確定一個(gè)或多個(gè)過濾器未證實(shí)API函數(shù)的參數(shù),則API函數(shù)的執(zhí)行可以被中止。
[0010] 示例實(shí)施例
[0011] 首先參考圖1,圖1示出系統(tǒng)100,在系統(tǒng)100中,SDN控制器105或客戶端110可以經(jīng) 由網(wǎng)絡(luò)120與網(wǎng)絡(luò)元件115(a)-115(f)通信。軟件定義網(wǎng)絡(luò)(SDN)是在其中將控制從硬件解 耦并將控制給予軟件應(yīng)用(被稱為控制器)的網(wǎng)絡(luò)化方法。SDN控制器105可以從物理計(jì)算設(shè) 備或者從虛擬的或基于云的計(jì)算資源操作。SDN控制器利用協(xié)議和標(biāo)準(zhǔn)(例如,思科系統(tǒng)的 One Platform Kit(OnePK))來管理網(wǎng)絡(luò)元件,以允許控制器指示或配置網(wǎng)絡(luò)元件如何處理 和路由分組。使用SDN控制器的管理員可以利用應(yīng)用編程接口(API)調(diào)用通過網(wǎng)絡(luò)改變?nèi)我?網(wǎng)絡(luò)元件的規(guī)則,并且可以優(yōu)先化、去優(yōu)先化以及阻止跨網(wǎng)絡(luò)的特定類型的分組。
[0012] 圖1示出網(wǎng)絡(luò)元件115(a)是物理網(wǎng)絡(luò)交換機(jī),而網(wǎng)絡(luò)元件115(b)是物理網(wǎng)絡(luò)路由 器,它們兩者都可以經(jīng)由SDN API層135(a)-135(f)在網(wǎng)絡(luò)120中接收和轉(zhuǎn)發(fā)流量。網(wǎng)絡(luò)元件 115(c)是監(jiān)視和控制哪些流量可以被轉(zhuǎn)發(fā)到網(wǎng)絡(luò)120的物理網(wǎng)絡(luò)防火墻/安全裝置。防火墻 還可以在另一網(wǎng)絡(luò)元件(例如,物理服務(wù)器115(f))上的軟件中實(shí)現(xiàn)。網(wǎng)絡(luò)120中可以存在任 意數(shù)量的交換機(jī)、路由器和防火墻,它們都可以包含允許與SDN控制器105進(jìn)行交互的相應(yīng) 的SDN API層135(a)-135(f)。
[0013] 除了上文所述的物理元件之外,給定網(wǎng)絡(luò)部署可以包括一個(gè)或多個(gè)虛擬交換機(jī) 115(d)和虛擬路由器115(e)。每一個(gè)虛擬交換機(jī)115(d)和虛擬路由器115(e)可以被配置 為管理一個(gè)或多個(gè)虛擬機(jī)125(尤其是虛擬網(wǎng)絡(luò)和/或子網(wǎng)絡(luò)(子網(wǎng)))的通信。每一個(gè)虛擬交 換機(jī)115(d)可以由軟件體現(xiàn)并且可以在物理服務(wù)器130上存儲(chǔ)和執(zhí)行。因此,虛擬交換機(jī) 115(d)實(shí)現(xiàn)物理交換機(jī)設(shè)備的功能。類似地,每一個(gè)虛擬機(jī)125可以是在物理服務(wù)器130上 存儲(chǔ)和執(zhí)行的軟件并且可以實(shí)現(xiàn)類似于例如物理機(jī)115(f)的功能。虛擬機(jī)125被配置為經(jīng) 由網(wǎng)絡(luò)120與其他虛擬機(jī)交換通信。應(yīng)該理解的是系統(tǒng)100中可以存在托管任意數(shù)量的虛擬 交換機(jī)、虛擬路由器和虛擬機(jī)的任意數(shù)量的物理服務(wù)器。
[0014] 客戶端110可以采用物理或虛擬計(jì)算設(shè)備的形式,并且可以通過網(wǎng)絡(luò)120在網(wǎng)絡(luò)元 件115(a)-115(f)中的任意元件上發(fā)起API調(diào)用。這可以例如經(jīng)由控制器(例如,SDN控制器 105)發(fā)生。然而,元件115(a)-115(f)是示例性物理和虛擬網(wǎng)絡(luò)元件,其他網(wǎng)絡(luò)元件可以被 配置為執(zhí)行本文所提出的技術(shù)。
[0015] 通常,網(wǎng)絡(luò)元件被設(shè)計(jì)成需要網(wǎng)絡(luò)管理員在本地或者在局域網(wǎng)上登錄設(shè)備以改變 該網(wǎng)絡(luò)元件的配置或設(shè)置的封閉系統(tǒng)。受信任的管理員一般將經(jīng)由命令行接口或?yàn)g覽器接 口來配置網(wǎng)絡(luò)元件。這些配置會(huì)保持靜態(tài)并且設(shè)備無法適應(yīng)于變化的網(wǎng)絡(luò)需求。SDN提供了 可以通過局域網(wǎng)或廣域網(wǎng)連接從任意位置被調(diào)用或者甚至可以從在網(wǎng)絡(luò)元件內(nèi)運(yùn)行的應(yīng) 用中被調(diào)用的強(qiáng)大的API ADN API調(diào)用進(jìn)而可以調(diào)用多個(gè)內(nèi)部操作系統(tǒng)功能以在給定網(wǎng)絡(luò) 設(shè)備上執(zhí)行給定請(qǐng)求。這些調(diào)用進(jìn)而可以影響操作環(huán)境中的其他調(diào)用。結(jié)果,之前不能直接 利用網(wǎng)絡(luò)元件的內(nèi)部調(diào)用的外部用戶通過使用API調(diào)用可以直接或間接地調(diào)用本來從未被 設(shè)計(jì)為被暴露的數(shù)百個(gè)API函數(shù)。例如來自O(shè)nePK的大量API集合的單個(gè)API調(diào)用可以暴露數(shù) 千個(gè)代碼路徑和功能。然而,客戶端110和其他用戶可能是惡意的,并且網(wǎng)絡(luò)元件配置功能 未必是針對(duì)魯棒性構(gòu)建的。雖然網(wǎng)絡(luò)元件的魯棒性通常隨著時(shí)間被改善,但是網(wǎng)絡(luò)元件的 調(diào)用棧常常很龐大,因此不可能完成對(duì)所有路徑的測(cè)試。此外,部署修復(fù)可能花費(fèi)數(shù)月的時(shí) 間,因此,需要可以被快速部署的允許保護(hù)設(shè)備免遭惡意調(diào)用的解決方案。
[0016] 為了說明這些問題并且提出解決方案,圖2示出描繪在調(diào)用網(wǎng)絡(luò)元件的API時(shí)的 動(dòng)態(tài)過濾技術(shù)的操作的示例性流程圖。在步驟205處,來自API調(diào)用的數(shù)據(jù)被接收。這可以是 本地調(diào)用或者來自遠(yuǎn)程服務(wù)器,例如,來自控制器105或客戶端110。調(diào)用可以利用套接字、 進(jìn)程間通信(IPC),并且可以利用傳輸層安全(TLS)等進(jìn)行加密。在步驟210處,數(shù)據(jù)中的信 息被解析。這可以包括API調(diào)用參考、API調(diào)用的參數(shù)、以及驗(yàn)證信息(例如,會(huì)話標(biāo)識(shí)符(ID) 或用戶名和密碼)。如果所有信息被正確解析,則過程繼續(xù)。在步驟215處,解析出的信息被 用于認(rèn)證調(diào)用者以及驗(yàn)證API的調(diào)用者具有適當(dāng)?shù)氖跈?quán)來進(jìn)行所請(qǐng)求的調(diào)用。如果調(diào)用者 具有授權(quán),則過程繼續(xù)。如果調(diào)用者已經(jīng)在被認(rèn)證的路徑中,則步驟215是可選的。在步驟 220處,根據(jù)本文提出的技術(shù),動(dòng)態(tài)過濾器被應(yīng)用于API調(diào)用。操作220的細(xì)節(jié)在下文結(jié)合圖3 進(jìn)行描述。在步驟225處,如果過濾器沒有發(fā)現(xiàn)錯(cuò)誤,則所請(qǐng)求的API調(diào)用可以利用提供的參 數(shù)被調(diào)用,并在必要時(shí)調(diào)用底層操作系統(tǒng)、路由器、交換機(jī)或網(wǎng)絡(luò)元件調(diào)用。
[0017]如先前所討論的,API調(diào)用中包含的信息可能是不受信任的。為了防止錯(cuò)誤的或惡 意的調(diào)用被執(zhí)行,API調(diào)用可以在沒有步驟220的動(dòng)態(tài)過濾器的情況下被驗(yàn)證,但是這種驗(yàn) 證可能是不完善的。例如,在認(rèn)證步驟215中,網(wǎng)絡(luò)元件可能不能正確地核查信息,從而允許 攻擊者利用系統(tǒng)。授權(quán)信息可能是惡意的。例如,API調(diào)用可能在用戶名字段中具有 JaveScript,或者可能在數(shù)字證書信息中存在緩沖溢出等。另一個(gè)問題是步驟225處的API 調(diào)用正作用于它必須核查的數(shù)據(jù)。如果系統(tǒng)沒有正確地驗(yàn)證API調(diào)用信息,則系統(tǒng)可能被不 當(dāng)利用(exploit)。不當(dāng)利用可能是在API調(diào)用本身中或者可能在它所調(diào)用的、路由器或交 換機(jī)的功能中的一個(gè)功能中。
[0018] 另一個(gè)問題是簡(jiǎn)化復(fù)雜性。步驟205-225可以被移植到多個(gè)網(wǎng)絡(luò)元件中。如上文提 到的,單個(gè)API可能觸及數(shù)百個(gè)特定于底層平臺(tái)的功能調(diào)用。再加上網(wǎng)絡(luò)元件通常不被整體 設(shè)計(jì)成外部穩(wěn)?。?,堅(jiān)固的)的事實(shí),保證網(wǎng)絡(luò)元件固件中沒有不當(dāng)利用幾乎是不可能的。 API集合(例如,思科系統(tǒng)的OnePK所包含的API集合)過于龐大以致于黑客和其他惡意用戶 很可能找到利用參數(shù)中的不正確數(shù)據(jù)的方式,以導(dǎo)致例如泛濫的不當(dāng)利用、權(quán)限提升、或 者單純地導(dǎo)致網(wǎng)絡(luò)元件崩潰。提升權(quán)限在用戶能夠通過惡意輸入提升他們的訪問等級(jí)時(shí)發(fā) 生。例如,低級(jí)用戶通常只能訪問狀態(tài)信息API,但是可能能夠獲得對(duì)管理網(wǎng)絡(luò)元件的操作 設(shè)置的更高級(jí)的API的訪問。甚至享有高權(quán)限的用戶可能能夠通過不當(dāng)利用來獲得更高的 根狀態(tài)。
[0019] 即使黑客和其他惡意用戶有可能發(fā)現(xiàn)使用API調(diào)用的安全問題,但是對(duì)網(wǎng)絡(luò)元件 進(jìn)行安全修復(fù)即使不需要超過一年的時(shí)間來部署,也可能花費(fèi)數(shù)月的時(shí)間。此外,網(wǎng)絡(luò)元件 用戶在執(zhí)行他們自己的測(cè)試時(shí)可能推遲采納網(wǎng)絡(luò)元件固件更新。在此期間,網(wǎng)絡(luò)元件制造 商的名聲可能大大受損。此外,網(wǎng)絡(luò)元件用戶可能決定完全不采納固件更新(例如,安全修 復(fù)),因?yàn)樵谟脩舳?客戶端上進(jìn)行測(cè)試和驗(yàn)證的成本可能相當(dāng)高。因此,需要步驟220的動(dòng) 態(tài)過濾來保護(hù)網(wǎng)絡(luò)設(shè)備和元件。
[0020] 圖3中的流程圖的操作流程更加詳細(xì)示出了動(dòng)態(tài)過濾功能。在步驟305處,一個(gè)或 多個(gè)過濾器可以被加載到網(wǎng)絡(luò)元件中。過濾器可以是包含用來驗(yàn)證接收到的API調(diào)用的指 令的軟件,或者它可以是指示一個(gè)或多個(gè)API調(diào)用、參數(shù)、以及過濾器類型和值的數(shù)據(jù)文件。 當(dāng)網(wǎng)絡(luò)元件被啟動(dòng)、重啟、重新加載時(shí),或者當(dāng)被指示進(jìn)行加載時(shí),解決網(wǎng)絡(luò)元件上的一個(gè) 或多個(gè)已知漏洞的一個(gè)或多個(gè)過濾器可以被加載。每一個(gè)過濾器可以針對(duì)特定的API調(diào)用 以及針對(duì)特定的API調(diào)用參數(shù)。過濾器可以經(jīng)由與SDN控制器105通信的網(wǎng)絡(luò)元件上的SDN API 135(a)-135(f)被加載??商鎿Q地,經(jīng)由SDN API加載過濾器可能被用戶或管理員禁用。 因?yàn)樵诮o定網(wǎng)絡(luò)元件上可能存在安全漏洞,這些漏洞可以被用來加載惡意的或不期望的過 濾器、或者刪除現(xiàn)有的過濾器??商鎿Q地,可以要求能夠利用動(dòng)態(tài)過濾器的給定網(wǎng)絡(luò)元件的 用戶或管理員使用非SDN和非API方法(例如,命令行接口(CLI))來加載過濾器。
[0021] 在步驟310處,包含API調(diào)用的原始緩沖數(shù)據(jù)(可能來自本地或遠(yuǎn)程來源)被接收。 緩沖數(shù)據(jù)可以使用套接字、IPC,并且可以利用TLS等進(jìn)行加密。在步驟315處,過濾器可以首 先在解析數(shù)據(jù)層處被加載并且被應(yīng)用,以便于檢查可以不當(dāng)利用數(shù)據(jù)解析漏洞的畸形數(shù)據(jù) (例如,畸形字符串)。如果過濾器沒有檢測(cè)到問題,則緩沖數(shù)據(jù)被解析。經(jīng)解析的緩沖數(shù)據(jù) 可以包括API調(diào)用本身、API調(diào)用的參數(shù)、以及認(rèn)證信息(例如,會(huì)話標(biāo)識(shí)符(ID)、用戶名和密 碼)。在解析出API調(diào)用后,API調(diào)用值可以被用于識(shí)別該API調(diào)用。通過利用API調(diào)用識(shí)別,相 關(guān)聯(lián)的過濾器還可以被加載和應(yīng)用于檢查API調(diào)用中的畸形數(shù)據(jù)。步驟315中的過濾器是可 選的,并且用于被識(shí)別的特定API調(diào)用的過濾器可以優(yōu)先于用于原始緩沖數(shù)據(jù)的過濾器被 執(zhí)行以減少計(jì)算成本。如果對(duì)于緩沖數(shù)據(jù)或API調(diào)用本身,信息被正確解析并且沒有檢測(cè)到 畸形數(shù)據(jù),則流程進(jìn)行至授權(quán)步驟320。
[0022]在步驟320處,解析出的信息被用于認(rèn)證調(diào)用者以及驗(yàn)證該調(diào)用者具有適當(dāng)授權(quán) 來進(jìn)行所請(qǐng)求的調(diào)用。如果調(diào)用者已經(jīng)在被認(rèn)證的路徑中,則該功能模塊是可選的。過濾器 可以與該步驟相關(guān)聯(lián),以便于在認(rèn)證層中查找惡意信息。如果認(rèn)證和授權(quán)通過,并且任意相 關(guān)聯(lián)的過濾器也在沒有錯(cuò)誤的情況下通過,則流程進(jìn)行至步驟325。
[0023]在步驟325處,在調(diào)用API函數(shù)之前,系統(tǒng)進(jìn)行檢查以查看是否存在與API調(diào)用參數(shù) 相關(guān)聯(lián)的、已加載的動(dòng)態(tài)過濾器。過濾器是動(dòng)態(tài)的,因?yàn)樗鼈儾灰欢ū挥簿幋a在操作系統(tǒng)映 像中。相反,它們可能從過濾器文件或過濾器數(shù)據(jù)存儲(chǔ)中被動(dòng)態(tài)地加載。如果在過濾器集合 文件中不存在用于API函數(shù)的相關(guān)聯(lián)的過濾器,則API函數(shù)可以在步驟350處被直接調(diào)用。通 過這種方式,在沒有相關(guān)聯(lián)的過濾器的情況下處理和時(shí)間開銷是最少的。如果存在與API調(diào) 用相關(guān)聯(lián)的過濾器,則系統(tǒng)可以逐參數(shù)地應(yīng)用過濾器。當(dāng)一個(gè)或多個(gè)過濾器與給定參數(shù)相 關(guān)聯(lián)時(shí),這些過濾器可以是串聯(lián)(in-1 ine)的并且無旁路(non-bypassable)。因此,用戶不 可能在API調(diào)用過程中繞過對(duì)過濾器的應(yīng)用。在步驟330處,如果存在用于給定參數(shù)的相關(guān) 聯(lián)的過濾器,則過濾器被執(zhí)行以在步驟335處驗(yàn)證API調(diào)用參數(shù)。在步驟340處,如果存在尚 未檢查的另外的參數(shù),則流程返回至步驟330,并且重復(fù)執(zhí)行與API調(diào)用的任意剩余的參數(shù) 相關(guān)聯(lián)的任意剩余的過濾器。通過這種方式,一個(gè)或多個(gè)過濾器可以被應(yīng)用于API調(diào)用的一 個(gè)或多個(gè)參數(shù)中的每一個(gè)參數(shù)。
[0024] 在步驟345處,如果在迭代的參數(shù)過濾器檢查過程中的任意點(diǎn)處存在過濾器違 規(guī),則流程進(jìn)行至步驟355并且API函數(shù)不可以被調(diào)用。如果不存在過濾器違規(guī),則網(wǎng)絡(luò)元件 的API函數(shù)可以在步驟350處被調(diào)用。如上文提到的,這些過濾器可以動(dòng)態(tài)地和自動(dòng)地從文 件或數(shù)據(jù)存儲(chǔ)中被加載,并且它們可以是臨時(shí)的。當(dāng)隨著安全修復(fù)發(fā)布了針對(duì)網(wǎng)絡(luò)元件的 新的固件映像時(shí),相關(guān)聯(lián)的過濾器可以被自動(dòng)移除。
[0025] 過濾器應(yīng)用可以是可選的。當(dāng)在"野外"由客戶端或其他用戶發(fā)現(xiàn)或者在網(wǎng)絡(luò)元件 供應(yīng)商公司內(nèi)部發(fā)現(xiàn)漏洞時(shí),可以準(zhǔn)備好過濾器并提供給每一個(gè)網(wǎng)絡(luò)元件客戶端用戶。網(wǎng) 絡(luò)元件可以聯(lián)系供應(yīng)商以取回列表或者取回所有可用的過濾器和相關(guān)聯(lián)的信息。然后,客 戶端用戶可以決定他們是否希望自動(dòng)應(yīng)用過濾器。過濾器可以利用可擴(kuò)展標(biāo)記語言(XML) 來寫,但是還設(shè)想到其他的格式并將它們納入本文提出的技術(shù)的精神和范圍內(nèi)。過濾器可 以在數(shù)小時(shí)或數(shù)天內(nèi)被準(zhǔn)備好,從而避免與對(duì)網(wǎng)絡(luò)元件映像的固件更新相關(guān)聯(lián)的長(zhǎng)時(shí)間 幀。
[0026] 過濾器還可以作為進(jìn)行參數(shù)檢查的獨(dú)立可插模塊被輸入。這些模塊可以是動(dòng)態(tài)可 加載的軟件而不是可加載的驗(yàn)證規(guī)則。在這種實(shí)施例中,系統(tǒng)具有API層可以加載的鉤子。 這將允許過濾器在運(yùn)行中被動(dòng)態(tài)地加載。
[0027] 過濾器可以施行各種輸入請(qǐng)求。例如,給定參數(shù)可能有最小整數(shù)值或最小字符串 長(zhǎng)度、或最大整數(shù)值或字符串長(zhǎng)度。可能存在要檢查的、被直接認(rèn)定為有效、無效、或者與另 外的邏輯相關(guān)聯(lián)的一個(gè)或多個(gè)特定的整數(shù)或字符串值。過濾器還可以包含字符串需要符合 以被接受的一個(gè)或多個(gè)正則表達(dá)式白名單。過濾器還可以包括一個(gè)或多個(gè)正則表達(dá)式黑名 單,如果輸入字符串與正則表達(dá)式黑名單匹配,則驗(yàn)證自動(dòng)失敗。其他類型的過濾器也將符 合本文提出的技術(shù)。
[0028]現(xiàn)在將進(jìn)一步詳細(xì)描述在圖3中討論的示例性步驟。進(jìn)行API調(diào)用的用戶可以是 SDN控制器105或諸如客戶端110之類的任意用戶。API層可以在物理和虛擬元件115(a)-115 (f)上存在。API層可以使用類似于Corva的接口描述語言(IDL),但是根據(jù)本文提出的技術(shù) 其他語言也是可行的。IDL通告函數(shù)的內(nèi)容。示例性API函數(shù)如下所示:
[0029]實(shí)例152: {//生成的代碼的示例性內(nèi)容
[0030]
[0031] 上文所示的API函數(shù)示例具有三個(gè)參數(shù),每一個(gè)參數(shù)可以與一個(gè)或多個(gè)過濾器相 關(guān)聯(lián)。如所示,函數(shù)get Some Info IDL()具有參數(shù)session (會(huì)話)、severity (嚴(yán)重性)和 message(消息)。如關(guān)于步驟325所討論的,如果沒有與API函數(shù)getSomelnfoIDLO相關(guān)聯(lián)的 過濾器,則可能只需要進(jìn)行簡(jiǎn)單的布爾(Boolean)檢查,以便最小化開銷。例如:
[0032]
[0033] 如先前所討論的,如果不存在過濾器,則流程可以進(jìn)行至步驟350以調(diào)用API函數(shù)。 如果確實(shí)存在過濾器,則可以對(duì)逐個(gè)參數(shù)迭代地執(zhí)行過濾器。再次注意,簡(jiǎn)單的布爾檢查可 以被用于只驗(yàn)證具有相關(guān)聯(lián)的過濾器的參數(shù),這有助于最小化開銷。例如:
定參數(shù)相關(guān)聯(lián)的每一個(gè)過濾器。在所示示例中,對(duì)于整數(shù)參數(shù),validate_int函數(shù)被調(diào)用, 而對(duì)于字符串參數(shù),validate_string函數(shù)被調(diào)用。對(duì)于這些驗(yàn)證函數(shù)中的每一個(gè)驗(yàn)證函 數(shù)來說,第一參數(shù)是參數(shù)的值,第二參數(shù)是參數(shù)過濾器。在所示示例中,驗(yàn)證變量可以記錄 是否存在過濾器違規(guī)。在執(zhí)行了與一個(gè)或多個(gè)參數(shù)中的每一個(gè)參數(shù)相關(guān)聯(lián)的一個(gè)或多個(gè)過 濾器后,如果驗(yàn)證變量增大,則過濾器肯定已經(jīng)違規(guī),因此函數(shù)中斷并且API函數(shù)不會(huì)被調(diào) 用。
[0037] 不例性 validate_int 函數(shù)是:
[0038]
[0039]在本示例中,"return 1(返回1)"表示已經(jīng)存在過濾器違規(guī),所以該函數(shù)可以向 getSomelnfoIDLO發(fā)回已經(jīng)存在驗(yàn)證錯(cuò)誤的報(bào)告,這會(huì)阻止API函數(shù)被調(diào)用。相反地, "return 0(返回0)"表示針對(duì)該參數(shù)不存在過濾器違規(guī)。上述黑名單條件句示例檢查不被 許可的數(shù)字的精確匹配。這種條件句還可以針對(duì)每一個(gè)列入黑名單的值進(jìn)行迭代循環(huán)。如 先前所討論的,迭代施行正則表達(dá)式白名單和黑名單的另外的過濾器也是可行的。較為耗 費(fèi)計(jì)算的過濾器(例如,正則表達(dá)式)可以被最后執(zhí)行,以便于將效率最大化并且將計(jì)算成 本最小化。
[0040]過濾器還可以例如通過測(cè)量中央處理單元(CPU)的影響被基準(zhǔn)化,從而在決定是 否實(shí)施過濾器時(shí)向客戶端用戶/顧客提供更多的信息??蛻舳擞脩艨梢赃x擇當(dāng)新近可用的 過濾器可用時(shí)將它們加載到每一個(gè)網(wǎng)絡(luò)元件中的設(shè)置??蛻舳诉€可以定期地檢查來自供應(yīng) 商的更新,并且按照需要選擇性地加入可用的過濾器。供應(yīng)商還可以主動(dòng)向客戶端用戶通 知當(dāng)前未用于給定網(wǎng)絡(luò)元件的可用的和推薦的過濾器。此外,所有過濾器更新可以被直接 應(yīng)用于網(wǎng)絡(luò)元件。
[0041]過濾器甚至還可以由客戶端用戶定義,從而允許他們按需要限制或允許可能的 SDN使用。例如,特定的API調(diào)用可以運(yùn)行命令行上的字符串??蛻舳擞脩艨赡懿幌M钚?上所有可能的字符串都是可用的。因此,客戶端用戶可以定義白名單過濾器,以僅允許一個(gè) 或若干個(gè)預(yù)定的輸入被執(zhí)行。例如,"Sudo"是允許以根權(quán)限執(zhí)行命令的Linux命令行?;?Linux的網(wǎng)絡(luò)元件上的SDN API可以具有允許執(zhí)行命令行字符串的API調(diào)用。網(wǎng)絡(luò)運(yùn)營(yíng)商可 能具有有限的用戶簡(jiǎn)檔以允許簡(jiǎn)單的命令行調(diào)用,但可能希望限制"sudo"調(diào)用。過濾器可 以被加入命令行執(zhí)行、API調(diào)用以過濾尋找命令"sudo"的執(zhí)行字符串。另一網(wǎng)絡(luò)運(yùn)營(yíng)商可能 想要阻止訪問API調(diào)用的子集。運(yùn)營(yíng)商可以為每一個(gè)API調(diào)用創(chuàng)建過濾器,以過濾出API調(diào)用 本身或者設(shè)置過濾器以使得無論字段中的一個(gè)字段的值是什么,它都不能進(jìn)行驗(yàn)證。例如, 如果存在基于無符號(hào)整數(shù)(0或更大)的會(huì)話標(biāo)識(shí)符,不允許0或更大值的過濾器將阻止實(shí)現(xiàn) API調(diào)用。這些限制還可以幫助客戶端用戶獲得增強(qiáng)的網(wǎng)絡(luò)元件性能,因?yàn)榫哂懈咝阅艹杀?的API函數(shù)可以被限制。因此,可以為網(wǎng)絡(luò)元件動(dòng)態(tài)添加此類過濾器以鎖定不想要的SDN API訪問。
[0042]所提供的另一技術(shù)是監(jiān)視和記錄/記載在給定網(wǎng)絡(luò)元件處接收到的所有API調(diào)用。 單個(gè)API調(diào)用可以被證實(shí)并且不會(huì)造成安全風(fēng)險(xiǎn),但是單個(gè)有效的API調(diào)用的某些組合和排 序可能一起造成威脅是有可能的。例如,以特定順序接收的三個(gè)API調(diào)用可能導(dǎo)致網(wǎng)絡(luò)元件 關(guān)閉或軟件崩潰。因此,過濾器可能不只需要監(jiān)控進(jìn)入的API調(diào)用,還需要監(jiān)控接收到的API 調(diào)用的歷史,以識(shí)別造成潛在威脅的序列。如果最后的API調(diào)用以已知的威脅序列被接收, 則最后的API調(diào)用可以被丟棄,即相關(guān)聯(lián)的API函數(shù)不被執(zhí)行。威脅序列中的一個(gè)或多個(gè)API 調(diào)用可以被類似地丟棄。
[0043]還有可能是下述情況,給定的一系列API調(diào)用未必構(gòu)成威脅,但當(dāng)該系列API調(diào)用 的參數(shù)具有給定值或已知范圍的值時(shí)可能構(gòu)成威脅。雖然具有給定參數(shù)的這些API調(diào)用通 常可能不會(huì)令人擔(dān)憂,但是如果按給定序列進(jìn)行調(diào)用,則可能發(fā)生崩潰。因此,過濾器可以 定義可能造成安全風(fēng)險(xiǎn)的API調(diào)用序列和相關(guān)聯(lián)的參數(shù)值。例如,過濾器可以要求如果特定 序列的三個(gè)API調(diào)用被接收,其中第二個(gè)調(diào)用具有特定的參數(shù)值,并且第三個(gè)調(diào)用具有特定 范圍的參數(shù)值,則這三個(gè)API調(diào)用中的一個(gè)或多個(gè)調(diào)用可以被丟棄。
[0044]圖4示出被配置為執(zhí)行本文提出的技術(shù)的物理網(wǎng)絡(luò)元件(例如,元件115(a)_l 15 (c)、130和115(f))的示例性框圖。網(wǎng)絡(luò)元件400包括多個(gè)網(wǎng)絡(luò)端口405、網(wǎng)絡(luò)處理器專用集 成電路(ASIC)單元410、處理器415和存儲(chǔ)器420以及其他組件。端口 405被配置為接收網(wǎng)絡(luò) 通信(例如,分組)和發(fā)送網(wǎng)絡(luò)通信。端口被耦合于網(wǎng)絡(luò)處理器ASIC 410。網(wǎng)絡(luò)處理器ASIC 410使得能夠在網(wǎng)絡(luò)中轉(zhuǎn)發(fā)由網(wǎng)絡(luò)元件400接收到的分組。例如,當(dāng)網(wǎng)絡(luò)元件400在第一端口 處接收分組時(shí),網(wǎng)絡(luò)處理器ASIC 410確定分組應(yīng)該在其上被轉(zhuǎn)發(fā)至網(wǎng)絡(luò)中的第二端口。也 就是說,如果在第一端口處接收到來自服務(wù)器1的分組,則網(wǎng)絡(luò)處理器ASIC 410可以確定將 該分組轉(zhuǎn)發(fā)到第二端口,該第二端口可能服務(wù)服務(wù)器2。
[0045]網(wǎng)絡(luò)處理器ASIC 410被耦合于處理器415。例如,處理器415是被配置為執(zhí)行用于 實(shí)現(xiàn)如上文所述的網(wǎng)絡(luò)元件設(shè)備400的各種操作和任務(wù)的程序邏輯指令(例如,軟件)的微 處理器或微控制器。處理器415的功能可以由在一個(gè)或多個(gè)有形計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)或設(shè) 備(例如,存儲(chǔ)設(shè)備,光盤、數(shù)字視頻光盤、閃速存儲(chǔ)器驅(qū)動(dòng)等,以及嵌入式邏輯,諸如ASIC、 數(shù)字信號(hào)處理器指令、由處理器執(zhí)行的軟件等)中編碼的邏輯實(shí)現(xiàn)。
[0046] 存儲(chǔ)器420可以包括只讀存儲(chǔ)器(R0M)、隨機(jī)訪問存儲(chǔ)器(RAM)、磁盤存儲(chǔ)介質(zhì)設(shè) 備、光存儲(chǔ)介質(zhì)設(shè)備、閃速存儲(chǔ)器設(shè)備、電的、光的、或其他物理/有形(非暫態(tài))的存儲(chǔ)器存 儲(chǔ)設(shè)備。存儲(chǔ)器420存儲(chǔ)API過濾器425、過濾處理邏輯430、以及SDN API 135的數(shù)據(jù)/信息 和軟件指令,當(dāng)由處理器415執(zhí)行時(shí),它們都包含用于實(shí)現(xiàn)本文提出的技術(shù)的指令。SDN API 135可以與端口 405交互以發(fā)送和接收數(shù)據(jù),并且可以接收可能使網(wǎng)絡(luò)元件中的相關(guān)聯(lián)的 API函數(shù)被執(zhí)行的API調(diào)用。因此,一般來說,存儲(chǔ)器420可以包括編碼有包括計(jì)算機(jī)可執(zhí)行 指令的軟件的一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)器介質(zhì)(例如,存儲(chǔ)器存儲(chǔ)設(shè)備),并且當(dāng)軟件被 (例如,由處理器415)執(zhí)行時(shí),它可操作來執(zhí)行本文所述的針對(duì)過濾器425和過濾器處理邏 輯430的技術(shù)。此外,存儲(chǔ)器420可以存儲(chǔ)針對(duì)虛擬交換機(jī)115(d)和虛擬路由器115(e)的虛 擬機(jī)的指令。進(jìn)而每一個(gè)虛擬網(wǎng)絡(luò)元件(例如,虛擬交換機(jī)115(d)和虛擬路由器115(e))可 以具有在它們的存儲(chǔ)器存儲(chǔ)中的它自己的API過濾器425和過濾處理邏輯430。
[0047] API過濾器425、過濾器處理邏輯430、以及SDN API 135可以采用各種形式中的任 意形式,例如,固定邏輯或可編程的邏輯(例如,由處理器執(zhí)行的軟件/計(jì)算機(jī)指令),以便于 被編碼在一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)或存儲(chǔ)設(shè)備中用于執(zhí)行。處理器415可以是包括 固定數(shù)字邏輯或其組合的ASIC。
[0048] 因此,提供了支持SDN架構(gòu)并且允許在數(shù)小時(shí)內(nèi)而非數(shù)月內(nèi)部署API函數(shù)修復(fù)的解 決方案。這通過避免加快固件修復(fù)來將供應(yīng)商的成本降至最低,并且允許網(wǎng)絡(luò)運(yùn)營(yíng)商快速 地保護(hù)他們的環(huán)境。輸入驗(yàn)證可以與處理協(xié)調(diào)發(fā)生,并且不要求類似于反病毒(AV)引擎的 單獨(dú)監(jiān)視器。過濾器可以在網(wǎng)絡(luò)元件持續(xù)地運(yùn)行和提供服務(wù)的同時(shí)被動(dòng)態(tài)加載,而不需要 像傳統(tǒng)安全更新要求那樣重啟網(wǎng)絡(luò)元件。此外,這種解決方案不要求添加或插入新的可執(zhí) 行函數(shù)。也就是說,不需要加載運(yùn)行的代碼,不需要改變網(wǎng)絡(luò)元件的源代碼,也不需要加載 新的網(wǎng)絡(luò)元件的固件映像。此外,網(wǎng)絡(luò)運(yùn)營(yíng)商/用戶/顧客可以選擇應(yīng)用哪些過濾器,并且可 以根據(jù)每個(gè)網(wǎng)絡(luò)元件或者每個(gè)網(wǎng)絡(luò)元件類型來應(yīng)用它們。每一個(gè)過濾器可以被嚴(yán)格地定制 為解決特定的缺點(diǎn)和安全漏洞。此外,首先可以應(yīng)用具有最低計(jì)算成本的過濾器,接下來應(yīng) 用具有較高計(jì)算成本的過濾器。因此,從存儲(chǔ)器、CPU利用和處理時(shí)間的角度來看,這種解 決方案的效率更高。
[0049] 總之,提供了一種方法,包括:動(dòng)態(tài)地加載驗(yàn)證跨網(wǎng)絡(luò)元件中的應(yīng)用程序接口 (API)邊界的數(shù)據(jù)的一個(gè)或多個(gè)過濾器,以使得使用一個(gè)或多個(gè)過濾器不需要重啟網(wǎng)絡(luò)元 件;接收針對(duì)API函數(shù)的API調(diào)用,其中,API調(diào)用包含與API函數(shù)相關(guān)聯(lián)的一個(gè)或多個(gè)參數(shù) 值;使用一個(gè)或多個(gè)過濾器來驗(yàn)證參數(shù);如果確定一個(gè)或多個(gè)過濾器證實(shí)API函數(shù)的參數(shù), 則使用這些參數(shù)值執(zhí)行API函數(shù);以及如果確定一個(gè)或多個(gè)過濾器未證實(shí)API函數(shù)的參數(shù), 則中止API函數(shù)的執(zhí)行。
[0050] 還提供了一種裝置,包括:多個(gè)網(wǎng)絡(luò)端口;被耦合于多個(gè)網(wǎng)絡(luò)端口的網(wǎng)絡(luò)處理器單 元;以及被耦合于網(wǎng)絡(luò)處理器單元的處理器。該處理器被配置為執(zhí)行以下操作:動(dòng)態(tài)地加載 驗(yàn)證跨應(yīng)用程序接口(API)邊界的數(shù)據(jù)的一個(gè)或多個(gè)過濾器,以使得使用一個(gè)或多個(gè)過濾 器不需要重啟網(wǎng)絡(luò)元件;接收針對(duì)API函數(shù)的API調(diào)用,其中,API調(diào)用包含與API函數(shù)相關(guān)聯(lián) 的一個(gè)或多個(gè)參數(shù)值;使用驗(yàn)證穿過網(wǎng)絡(luò)元件的API邊界的數(shù)據(jù)的一個(gè)或多個(gè)過濾器來驗(yàn) 證參數(shù);如果確定一個(gè)或多個(gè)過濾器證實(shí)API函數(shù)的參數(shù)或者沒有相關(guān)聯(lián)的過濾器,則利用 這些參數(shù)值執(zhí)行API函數(shù);以及如果確定一個(gè)或多個(gè)過濾器未證實(shí)API函數(shù)的參數(shù),則中止 API函數(shù)的執(zhí)行。
[0051] 提供了一種編碼有包括計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),并且當(dāng)軟件被 執(zhí)行時(shí)能操作來執(zhí)行以下操作:動(dòng)態(tài)地加載驗(yàn)證跨應(yīng)用程序接口(API)邊界的數(shù)據(jù)的一個(gè) 或多個(gè)過濾器,以使得使用一個(gè)或多個(gè)過濾器不需要重啟網(wǎng)絡(luò)元件;接收針對(duì)API函數(shù)的 API調(diào)用,其中,API調(diào)用包含與API函數(shù)相關(guān)聯(lián)的一個(gè)或多個(gè)參數(shù)值;使用驗(yàn)證穿過網(wǎng)絡(luò)元 件的API邊界的數(shù)據(jù)的一個(gè)或多個(gè)過濾器來驗(yàn)證這些參數(shù);如果確定一個(gè)或多個(gè)過濾器證 實(shí)API函數(shù)的參數(shù)或者沒有相關(guān)聯(lián)的過濾器,則使用參數(shù)值執(zhí)行API函數(shù);以及如果確定一 個(gè)或多個(gè)過濾器未證實(shí)API函數(shù)的參數(shù),則中止API函數(shù)的執(zhí)行。
[0052] 雖然本文所述的技術(shù)被體現(xiàn)在一個(gè)或多個(gè)示例中,但是并非意圖受限于所示細(xì) 節(jié),因?yàn)樵跈?quán)利要求的等同物的范圍內(nèi)可以對(duì)其進(jìn)行各種修改和結(jié)構(gòu)性變化。因此,應(yīng)該理 解所附權(quán)利要求可以由權(quán)利要求書所提出的內(nèi)容進(jìn)行更廣義的解釋。
【主權(quán)項(xiàng)】
1. 一種方法,包括: 在網(wǎng)絡(luò)元件中動(dòng)態(tài)地加載驗(yàn)證跨應(yīng)用程序接口(API)邊界的數(shù)據(jù)的一個(gè)或多個(gè)過濾 器,以使得使用所述一個(gè)或多個(gè)過濾器不需要重啟所述網(wǎng)絡(luò)元件; 接收針對(duì)API函數(shù)的API調(diào)用,其中,所述API調(diào)用包含與所述API函數(shù)相關(guān)聯(lián)的一個(gè)或 多個(gè)參數(shù)值; 使用所述一個(gè)或多個(gè)過濾器來驗(yàn)證這些參數(shù); 如果確定所述一個(gè)或多個(gè)過濾器證實(shí)所述API函數(shù)的所述參數(shù),則使用所述參數(shù)值執(zhí) 行所述API函數(shù);以及 如果確定所述一個(gè)或多個(gè)過濾器未證實(shí)所述API函數(shù)的所述參數(shù),則中止所述API函數(shù) 的執(zhí)行。2. 根據(jù)權(quán)利要求1所述的方法,還包括:向用戶呈現(xiàn)與加載所述一個(gè)或多個(gè)過濾器相關(guān) 聯(lián)的性能成本數(shù)據(jù); 從所述用戶接收針對(duì)是否加載所述一個(gè)或多個(gè)過濾器的確認(rèn);以及僅根據(jù)是否從所述 用戶接收到確認(rèn)來加載所述一個(gè)或多個(gè)過濾器。3. 根據(jù)權(quán)利要求1所述的方法,還包括: 響應(yīng)于接收到所述API調(diào)用,應(yīng)用一個(gè)或多個(gè)過濾器來識(shí)別所述API調(diào)用中的畸形數(shù) 據(jù); 響應(yīng)于確定在所述API調(diào)用中不存在畸形數(shù)據(jù),解析所述API調(diào)用以確定所述參數(shù)值。4. 根據(jù)權(quán)利要求3所述的方法,還包括: 解析所述API調(diào)用以確定授權(quán)值;以及 應(yīng)用一個(gè)或多個(gè)過濾器來識(shí)別惡意授權(quán)值。5. 根據(jù)權(quán)利要求1所述的方法,其中,對(duì)所述一個(gè)或多個(gè)過濾器的加載由軟件定義網(wǎng)絡(luò) 控制器發(fā)起以將所述一個(gè)或多個(gè)過濾器下載至所述網(wǎng)絡(luò)元件。6. 根據(jù)權(quán)利要求1所述的方法,其中,所述一個(gè)或多個(gè)過濾器包括正則表達(dá)式黑名單過 濾器和正則表達(dá)式白名單過濾器中的至少一者。7. 根據(jù)權(quán)利要求1所述的方法,還包括: 監(jiān)視多個(gè)API調(diào)用;以及 響應(yīng)于在所述多個(gè)API調(diào)用中識(shí)別出在所述一個(gè)或多個(gè)過濾器中定義的造成安全風(fēng)險(xiǎn) 的序列,從所述多個(gè)API調(diào)用中丟棄一個(gè)或多個(gè)API調(diào)用。8. 根據(jù)權(quán)利要求1所述的方法,其中,驗(yàn)證所述API調(diào)用還包括: 如果確定存在與所述API函數(shù)相關(guān)聯(lián)的一個(gè)或多個(gè)過濾器,則確定是否存在與所述一 個(gè)或多個(gè)參數(shù)相關(guān)聯(lián)的一個(gè)或多個(gè)過濾器;以及 如果確定存在與所述一個(gè)或多個(gè)參數(shù)相關(guān)聯(lián)的一個(gè)或多個(gè)過濾器,則使用這些相關(guān)聯(lián) 的一個(gè)或多個(gè)過濾器來驗(yàn)證所述API參數(shù)。9. 根據(jù)權(quán)利要求1所述的方法,還包括: 接收針對(duì)所述網(wǎng)絡(luò)元件的固件更新以修復(fù)與已經(jīng)被加載到所述網(wǎng)絡(luò)元件中的一個(gè)或 多個(gè)過濾器相關(guān)聯(lián)的安全漏洞;以及 響應(yīng)于接收到所述固件更新,移除與所述安全漏洞相關(guān)聯(lián)的過濾器。10. -種裝置,包括: 多個(gè)網(wǎng)絡(luò)端口; 被耦合于所述多個(gè)網(wǎng)絡(luò)端口的網(wǎng)絡(luò)處理器單元; 被耦合于所述網(wǎng)絡(luò)處理器單元的處理器,并且所述處理器被配置為執(zhí)行以下各項(xiàng)操 作: 動(dòng)態(tài)地加載驗(yàn)證跨應(yīng)用程序接口(API)邊界的數(shù)據(jù)的一個(gè)或多個(gè)過濾器,以使得使用 所述一個(gè)或多個(gè)過濾器不需要重啟網(wǎng)絡(luò)元件; 接收針對(duì)API函數(shù)的API調(diào)用,其中,所述API調(diào)用包含與所述API函數(shù)相關(guān)聯(lián)的一個(gè)或 多個(gè)參數(shù)值; 使用驗(yàn)證穿過網(wǎng)絡(luò)元件的API邊界的數(shù)據(jù)的一個(gè)或多個(gè)過濾器來驗(yàn)證所述參數(shù); 如果確定所述一個(gè)或多個(gè)過濾器證實(shí)所述API函數(shù)的所述參數(shù)或者沒有相關(guān)聯(lián)的過濾 器,則使用所述參數(shù)值執(zhí)行所述API函數(shù);以及 如果確定所述一個(gè)或多個(gè)過濾器未證實(shí)所述API函數(shù)的所述參數(shù),則中止所述API函數(shù) 的執(zhí)行。11. 根據(jù)權(quán)利要求10所述的裝置,其中,所述處理器還被配置為執(zhí)行以下操作: 向用戶呈現(xiàn)與加載所述一個(gè)或多個(gè)過濾器相關(guān)聯(lián)的性能成本數(shù)據(jù); 從所述用戶接收針對(duì)是否加載所述一個(gè)或多個(gè)過濾器的確認(rèn);以及 僅根據(jù)是否從所述用戶接收到確認(rèn)來加載所述一個(gè)或多個(gè)過濾器。12. 根據(jù)權(quán)利要求10所述的裝置,其中,所述處理器還被配置為執(zhí)行以下各項(xiàng)操作: 響應(yīng)于接收到所述API調(diào)用,應(yīng)用一個(gè)或多個(gè)過濾器來識(shí)別所述API調(diào)用中的畸形數(shù) 據(jù); 響應(yīng)于確定所述API調(diào)用中不存在畸形數(shù)據(jù),解析所述API調(diào)用以確定所述參數(shù)值。13. 根據(jù)權(quán)利要求10所述的裝置,其中,所述處理器還被配置為執(zhí)行以下各項(xiàng)操作: 監(jiān)視多個(gè)API調(diào)用;以及 響應(yīng)于在所述多個(gè)API調(diào)用中識(shí)別出在所述一個(gè)或多個(gè)過濾器中定義的造成安全風(fēng)險(xiǎn) 的序列,從所述多個(gè)API調(diào)用中丟棄一個(gè)或多個(gè)API調(diào)用。14. 根據(jù)權(quán)利要求10所述的裝置,其中,所述處理器還被配置為執(zhí)行以下各項(xiàng)操作: 如果確定存在與所述API函數(shù)相關(guān)聯(lián)的一個(gè)或多個(gè)過濾器,則確定是否存在與一個(gè)或 多個(gè)參數(shù)相關(guān)聯(lián)的一個(gè)或多個(gè)過濾器;以及 如果確定存在與所述一個(gè)或多個(gè)參數(shù)相關(guān)聯(lián)的一個(gè)或多個(gè)過濾器,則使用該相關(guān)聯(lián)的 一個(gè)或多個(gè)過濾器來驗(yàn)證所述參數(shù)。15. 根據(jù)權(quán)利要求10所述的裝置,其中,所述處理器還被配置為執(zhí)行以下各項(xiàng)操作: 接收針對(duì)所述網(wǎng)絡(luò)元件的固件更新以修復(fù)與已經(jīng)被加載到所述網(wǎng)絡(luò)元件中的過濾器 相關(guān)聯(lián)的安全漏洞;以及 響應(yīng)于接收到所述固件更新,移除與被修復(fù)的安全漏洞相關(guān)聯(lián)的過濾器。16. -種被編碼有包括計(jì)算機(jī)可執(zhí)行指令的軟件的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),并且當(dāng)所述 軟件被執(zhí)行時(shí)能操作來執(zhí)行以下各項(xiàng)操作: 動(dòng)態(tài)地加載驗(yàn)證跨應(yīng)用程序接口(API)邊界的數(shù)據(jù)的一個(gè)或多個(gè)過濾器,以使得使用 所述一個(gè)或多個(gè)過濾器不需要重啟網(wǎng)絡(luò)元件; 接收針對(duì)API函數(shù)的API調(diào)用,其中,所述API調(diào)用包含與所述API函數(shù)相關(guān)聯(lián)的一個(gè)或 多個(gè)參數(shù)值; 使用驗(yàn)證穿過網(wǎng)絡(luò)元件的API邊界的數(shù)據(jù)的一個(gè)或多個(gè)過濾器來驗(yàn)證所述參數(shù); 如果確定所述一個(gè)或多個(gè)過濾器證實(shí)所述API函數(shù)的所述參數(shù)或者沒有相關(guān)聯(lián)的過濾 器,則使用所述參數(shù)值執(zhí)行所述API函數(shù);以及 如果確定所述一個(gè)或多個(gè)過濾器未證實(shí)所述API函數(shù)的所述參數(shù),則中止所述API函數(shù) 的執(zhí)行。17. 根據(jù)權(quán)利要求16所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),還包括能操作來執(zhí)行以下各項(xiàng)操作 的指令: 向用戶呈現(xiàn)與加載所述一個(gè)或多個(gè)過濾器相關(guān)聯(lián)的性能成本數(shù)據(jù); 從所述用戶接收針對(duì)是否加載所述一個(gè)或多個(gè)過濾器的確認(rèn);以及 僅根據(jù)是否從所述用戶接收到確認(rèn)來加載所述一個(gè)或多個(gè)過濾器。18. 根據(jù)權(quán)利要求16所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),還包括能操作來執(zhí)行以下各項(xiàng)操作 的指令: 響應(yīng)于接收到所述API調(diào)用,應(yīng)用一個(gè)或多個(gè)過濾器來識(shí)別所述API調(diào)用中的畸形數(shù) 據(jù); 響應(yīng)于確定所述API調(diào)用中不存在畸形數(shù)據(jù),解析所述API調(diào)用以確定所述參數(shù)值。19. 根據(jù)權(quán)利要求16所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),還包括能操作來執(zhí)行以下各項(xiàng)操作 的指令: 如果確定存在與所述API函數(shù)相關(guān)聯(lián)的一個(gè)或多個(gè)過濾器,則確定是否存在與所述一 個(gè)或多個(gè)參數(shù)相關(guān)聯(lián)的一個(gè)或多個(gè)過濾器;以及 如果確定存在與所述一個(gè)或多個(gè)參數(shù)相關(guān)聯(lián)的一個(gè)或多個(gè)過濾器,則使用所述一個(gè)或 多個(gè)過濾器來驗(yàn)證所述API調(diào)用參數(shù)。20. 根據(jù)權(quán)利要求16所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),還包括能操作來執(zhí)行以下各項(xiàng)操作 的指令: 監(jiān)視多個(gè)API調(diào)用;以及 響應(yīng)于在所述一個(gè)或多個(gè)過濾器中定義的所述多個(gè)API調(diào)用中識(shí)別到造成安全風(fēng)險(xiǎn)的 序列,從所述多個(gè)API調(diào)用中丟棄一個(gè)或多個(gè)API調(diào)用。
【文檔編號(hào)】H04L12/24GK105934927SQ201580004391
【公開日】2016年9月7日
【申請(qǐng)日】2015年1月6日
【發(fā)明人】安東尼奧·馬丁
【申請(qǐng)人】思科技術(shù)公司