收的web應用程序的調用。具體地,語句調用檢測指令126可記錄由服務器計算設備100響應于起源于動態安全掃描的語句的調用而為web應用程序接收的調用參數和對應的值。例如,當在數據輸入點處為web應用程序接收調用參數時,可創建包括調用參數、對應的值和時間戳的調用日志條目。源代碼的語句可與編程語言的最小功能元素對應(例如一行源代碼)。
[0022]攻擊表面覆蓋率確定指令128可確定完成的動態安全掃描的攻擊表面覆蓋率。最初,攻擊表面覆蓋率確定指令128可使用調用日志條目來確定哪些數據輸入點在動態安全掃描期間被使用。在這個階段,攻擊表面覆蓋率可被確定為在動態安全掃描期間使用的數據輸入點的比例。例如,如果使用四分之三的數據輸入點,則動態安全掃描將具有75 %的攻擊表面覆蓋率。
[0023]圖2是包括用于執行使用運行時和靜態代碼分析來確定動態安全掃描的覆蓋率的方面的模塊的示例服務器計算設備200的方框圖。如同圖1的服務器計算設備100,服務器計算設備200可以是適合于評估動態安全掃描的任何電子設備。
[0024]Web服務器模塊210可以是配置成向客戶端設備提供web應用程序的web服務器軟件應用程序。Web應用程序可作為網頁或網絡上的web服務而被提供。Web服務器模塊210可基于源代碼(例如HTML文件、腳本文件等)或從源代碼產生的對象代碼(例如所鏈接的庫、共享對象、可執行文件等)來提供web應用程序。例如,web服務器模塊210可基于HTML文件來提供網頁,HTML文件可包括由web服務器模塊210執行來為客戶端設備產生動態內容的嵌入式腳本。在另一示例中,web服務器模塊210可響應于從客戶端設備接收到請求而使接口暴露于觸發所鏈接的庫中的函數的執行的web服務。
[0025]如在圖2中示出和下面更詳細地描述的,計算設備200還可包括多個模塊220-246。每個模塊可包括在機器可讀存儲介質上編碼并由計算設備200的處理器可執行的一系列指令。此外或作為可選方案,每個模塊220-246可包括一個或多個硬件設備,一個或多個硬件設備包括用于實現下面描述的功能的電子電路。在一些情況下,模塊220-246可被實現為在多個計算設備上的分布式系統。
[0026]靜態代碼分析模塊220可對由web服務器模塊210提供的web應用程序的源代碼執行靜態代碼分析。雖然下面詳細描述了靜態代碼分析模塊220的部件,上面關于圖1的靜態代碼分析指令122提供了關于靜態代碼分析模塊220的示例實現的額外細節。
[0027]源代碼可以是人可讀計算機指令的集合。源代碼文件的示例包括但不限于HTML文件、配置文件、動態腳本文件和各種編程語言文件。數據輸入識別模塊222可分析web應用程序的源代碼以識別數據輸入點。數據輸入點可接著用于確定web應用程序的攻擊表面的尺寸。在一些情況下,數據輸入點的不同組合可被考慮為在web應用程序的攻擊表面中的不同輸入。例如,不同的URL參數可組合以產生在攻擊表面中的不同輸入。
[0028]代碼可訪問性模塊224可將源代碼的部分分類為從客戶端側可達或不可達。例如,可執行使用由數據輸入識別模塊222識別的數據輸入點的數據流分析,以識別源代碼的可達部分。在這個示例中,數據流分析可確定(I)被分配到變量的值起源于哪里;(2)變量的可能值;和/或⑶表達式、變量或參數可流到的位置。未被識別為流到在數據輸入點處接收的調用參數或從調用參數流動的代碼的部分可被識別為不可達的。在一些情況下,置信值可被分配到被識別為從客戶端側可達的代碼的每個部分,其中置信值對應于該部分是實際上可達的可能性。在這種情況下,置信閾值可配置成使得當確定可達代碼覆蓋率時具有落在閾值之下的置信值的部分被忽略。
[0029]動態安全掃描模塊230可執行正執行的web應用程序的動態安全掃描。具體地,動態安全掃描模塊230可對正執行的web應用程序執行實際攻擊以識別安全漏洞。動態安全掃描模塊230可配置成基于web應用程序的源代碼、由web應用程序的測試者確定的使用情況、和/或web應用程序和/或web服務器模塊210的配置來執行攻擊的例程。由動態安全掃描識別的安全漏洞的示例包括但不限于SQL注入、緩沖區溢出利用、跨站腳本和服務拒絕。
[0030]運行時分析模塊240可使用由靜態代碼分析模塊220執行的靜態代碼分析的結果來執行動態安全掃描的運行時監控。雖然下面詳細描述了運行時分析模塊240的部件,在上面關于圖1的運行時監控指令124、語句調用檢測指令126和攻擊表面覆蓋率確定指令128提供關于運行時分析模塊240的示例實現的額外細節。
[0031]安全掃描監控模塊242可執行動態安全掃描的運行時監控。具體地,安全掃描監控模塊242可針對web應用程序的客戶端側調用監控動態安全掃描。響應于檢測到調用,安全掃描監控模塊242可產生調用日志條目,該調用日志條目包括所訪問的數據輸入點、針對調用從動態安全掃描傳遞的任何調用參數和值、以及時間戳。
[0032]調用日志處理模塊244可處理由安全掃描模塊產生的調用日志。例如,調用日志條目可用于確定響應于起源于動態安全掃描的調用而被訪問的可達代碼的代碼單元(例如類、函數、基本塊、語句或源代碼的路徑)。在另一示例中,調用日志條目可用于確定在動態安全掃描期間使用的數據輸入點。在一些情況下,安全掃描監控模塊242可使用調用日志處理模塊244來跟蹤當動態安全掃描正被執行時實時地訪問的可達代碼的代碼單元。可選地,在動態安全掃描完成之后,調用日志處理模塊244可處理調用日志條目。
[0033]覆蓋率確定模塊246可基于由靜態代碼分析模塊220執行的靜態代碼分析的結果和由調用日志處理模塊244處理的調用日志條目來確定web應用程序的動態安全掃描的覆蓋率。由覆蓋率確定模塊246確定的覆蓋率可包括可達代碼覆蓋率、攻擊表面覆蓋率和組合覆蓋率。可達代碼覆蓋率可被確定為在動態安全掃描期間響應于客戶端側調用而被訪問的可達代碼的比例。例如,如果一半可達代碼被訪問,則動態安全掃描將具有50 %的可達代碼覆蓋率。此外,因為由靜態代碼分析模塊220分類的代碼的不可達部分被忽略,可達代碼覆蓋率更準確地反映動態安全掃描的擴展性。攻擊表面覆蓋率可被確定為在動態安全掃描期間使用的數據輸入點的比例。
[0034]組合覆蓋率可以是動態安全掃描的可達代碼覆蓋率和攻擊表面覆蓋率的組合。例如,組合覆蓋率可以是可達代碼覆蓋率和攻擊表面覆蓋率的總和。在另一示例中,組合覆蓋率可以是可達代碼覆蓋率和攻擊表面覆蓋率的加權平均。覆蓋率確定模塊246可向用戶提供覆蓋率用于評估動態安全掃描的有效性。例如,如果低組合覆蓋率被提供給用戶,則用戶可重新配置動態安全掃描以增加下一掃描的組合覆蓋率。
[0035]圖3是由服務器計算設備100執行的、使用運行時和靜態代碼分析來確定動態安全掃描的覆蓋率的示例方法300的流程圖。雖然下面參考圖1的服務器計算設備100描述方法300的執行,可使用用于執行方法300的其它適當的設備,例如圖2的服務器計算設備200。可以以存儲在機器可讀存儲介質例如存儲介質120上的可執行指令的形式和/或電子電路的形式實現方法300。
[0036]方法300可在塊305開始并繼續到塊310,其中服務器計算設備100可執行靜態代碼分析以識別web應用程序的數據輸入點。具體地,可對web應用程序的源代碼執行靜態代碼分析以基于在源代碼和/或關聯配置文件中的關鍵字來識別數據輸入點。接著,在塊315中,針對動態安全掃描發起運行時監控。例如,服務器計算設備100可響應于檢測到動態安全掃描的執行而發起運行時監控。在另一