使用運行時和靜態代碼分析來確定動態安全掃描的覆蓋率的制作方法
【專利說明】
【背景技術】
[0001]動態安全掃描被執行來識別web應用程序的安全漏洞。例如,動態安全掃描可確定漏洞的類型和數量、漏洞的位置以及繁殖漏洞的步驟。一般,動態安全掃描作為對源代碼不具有訪問權的黑盒測試被執行。在這種情況下,動態安全掃描通過對web應用程序執行實際攻擊來識別安全漏洞。
【附圖說明】
[0002]下面的詳細描述參考附圖,其中:
[0003]圖1是用于使用運行時和靜態代碼分析來確定動態安全掃描的覆蓋率的示例系統的方框圖;
[0004]圖2是包括用于執行使用運行時和靜態代碼分析來確定動態安全掃描的覆蓋率的方面的模塊的示例服務器計算設備的方框圖;
[0005]圖3是由服務器計算設備執行的、使用運行時和靜態代碼分析來確定動態安全掃描的覆蓋率的示例方法的流程圖;
[0006]圖4是由服務器計算設備執行的、使用運行時和靜態代碼分析來提供動態安全掃描的覆蓋率的迭代確定的示例方法的流程圖;
[0007]圖5是由服務器計算設備執行的、使用運行時和靜態代碼分析針對web應用程序的多個版本確定動態安全掃描的覆蓋率的示例方法的流程圖;以及
[0008]圖6A-6D是在使用運行時和靜態代碼分析來確定動態安全掃描的覆蓋率的各種階段的示例源代碼的方框圖。
【具體實施方式】
[0009]如上面討論的,對web應用程序執行動態安全掃描以識別安全漏洞。例如,動態安全掃描可通過對web應用程序執行實際攻擊例如緩沖區溢出攻擊或結構化查詢語言(SQL)注入攻擊并記錄結果來識別安全漏洞。然而,動態安全掃描是不知道web應用程序的基礎源代碼的黑盒測試過程。相應地,一般基于掃描的速度和被識別出的漏洞的數量來確定動態安全掃描的有效性。
[0010]有效性的一般確定可能不客觀地評估動態安全掃描,因為所識別的漏洞的數量可更多地取決于web應用程序的質量而不是掃描的質量。例如,高質量web應用程序可具有在掃描中要識別的幾個安全漏洞,這通常會導致動態安全掃描被識別為差質量掃描。類似地,低質量web應用程序可具有在掃描中要識別的過多的安全漏洞,這可允許差質量掃描呈現為高度有效的,即使它只能夠識別一小部分漏洞。
[0011]本文公開的示例實施例使用運行時分析和靜態代碼分析來確定動態安全掃描的覆蓋率。例如在一些實施例中,系統執行web應用程序的靜態代碼分析以識別web應用程序的源代碼的數據輸入點,其中數據輸入點用于確定web應用程序的攻擊表面尺寸。在這個階段,系統可針對web應用程序的執行的動態安全掃描發起運行時監控。當在數據輸入點中的一個數據輸入點處的語句被調用時,運行時監控可檢測并記錄調用作為包括調用參數和時間戳的調用條目。基于調用條目和攻擊表面尺寸,可確定動態安全掃描的攻擊表面覆蓋率以評估掃描的質量。
[0012]以這種方式,本文公開的示例實施例允許動態安全掃描基于掃描覆蓋的攻擊表面的部分客觀地被評估。具體地,通過執行web應用程序的源代碼的組合運行時分析和靜態代碼分析,攻擊表面的尺寸可被確定并然后用于確定攻擊表面覆蓋率。攻擊表面覆蓋率允許用戶確定web應用程序是否實際上沒有安全漏洞以及動態安全掃描是否被適當地配置。
[0013]現在參考附圖,圖1是用于使用運行時分析和靜態代碼分析來確定動態安全掃描的覆蓋率的示例系統的方框圖。示例系統可被實現為服務器計算設備100,例如機架服務器、筆記本計算機、桌上型計算機、全合一系統、平板計算設備或適合于確定動態安全掃描的覆蓋率的任何其它電子設備。在圖1的實施例中,服務器計算設備100包括處理器110、接口 115和機器可讀存儲介質120。
[0014]處理器110可以是一個或多個中央處理單元(CPU)、微處理器和/或適合于獲取和執行存儲在機器可讀存儲介質120上的指令的其它硬件設備。處理器110取出、解碼并執行指令122、124、126、128以能夠使用運行時分析和靜態代碼分析來確定動態安全掃描的覆蓋率。作為可選方案或除了獲取和執行指令以外,處理器110還可包括一個或多個電子電路,該一個或多個電子電路包括用于執行一個或多個指令122、124、126、128的功能的多個電子部件。
[0015]接口 115可包括用于與客戶端設備通信的多個電子部件。例如,接口 115可以是以太網接口、通用串行總線(USB)接口、IEEE 1394(火線)接口、外部串行高級技術附件(eSATA)接口或適合于與客戶端設備通信的任何其它物理連接接口。可選地,接口 115可以是無線接口,例如無線局域網(WLAN)接口或近場通信(NFC)接口。在操作中,如下面詳述,接口 115可用于向客戶端設備的對應接口發送數據以及從客戶端設備的對應接口接收數據,所述數據例如web應用程序數據。
[0016]機器可讀存儲介質120可以是存儲可執行指令的任何電子、磁性、光學或其它物理存儲設備。因此,機器可讀存儲介質120可以是例如隨機存取存儲器(RAM)、電可擦除可編程只讀存儲器(EEPROM)、存儲驅動器、光盤等。如下面更詳細描述的,可使用用于使用運行時分析和靜態代碼分析來確定動態安全掃描的覆蓋率的可執行指令來對機器可讀存儲介質120編碼。
[0017]靜態代碼分析指令122可對web應用程序的源代碼執行靜態代碼分析。具體地,可對源代碼執行靜態代碼分析以識別web應用程序的數據輸入點并將源代碼的部分分類為可達的或不可達的。Web應用程序的數據輸入點的示例可包括但不限于同一資源定位符(URL)參數、超文本標記語言(HTML)參數、客戶端側腳本參數和web服務器接口。在一些情況下,可基于在源代碼中的關鍵字來識別數據輸入點,其中關鍵字根據源代碼的編程語言而改變。在其它情況下,可基于在例如描述預期參數和輸出的可擴展標記語言(SML)消息中的元數據來識別數據輸入點。可基于web應用程序的數據輸入點的總數來確定web應用程序的攻擊表面的尺寸。換句話說,web應用程序的攻擊表面可由web應用程序的數據輸入點形成。
[0018]可達代碼可包括從客戶端側可達的web應用程序的源代碼的部分。客戶端側可以指在與服務器計算設備100交互的客戶端設備上執行的任何操作。在這種情況下,如果源代碼可響應于起源于客戶端設備的客戶端側操作被調用,則web應用程序的源代碼是從客戶端側可達的。服務器側可以指在服務器計算設備100上執行的任何操作。不可達代碼可包括從客戶端側完全不可達的源代碼的部分。換句話說,不可達代碼不會響應于從客戶端側可訪問的任何數據輸入點而被調用。
[0019]Web應用程序可以是由服務器計算設備100通過網絡(例如互聯網、內聯網等)經由接口 115提供到客戶端設備的應用程序或服務。例如,web應用程序可由在服務器計算設備100上執行的web服務器執行以向客戶端設備的web瀏覽器提供網頁。在另一示例中,web應用程序可以是響應于來自客戶端設備的請求通過網絡提供功能的web服務。
[0020]運行時監控指令124可在動態安全掃描期間發起正執行的web應用程序的運行時監控。具體地,運行時監控指令124可配置有用于發起動態安全掃描的監控的操作參數。例如,操作參數可包括運行時監控的時間和持續時間、與動態安全掃描關聯的過程、互聯網協議(IP)地址(動態安全掃描將起源于該地址)等。在一些情況下,運行時監控可監控由如上面討論的靜態代碼分析指令122識別的數據輸入點。
[0021]語句調用檢測指令126可檢測并記錄從動態安全掃描接