了一項由機器學習驅動的新程式碼掃描分析功能,該程式碼掃描功能可以針對四種常見漏洞模式顯示警報:跨站點指令碼 (XSS)、路徑注入、NoSQL 注入和 SQL 注入。
新的程式碼掃描功能由 提供支援,啟用 CodeQL 來針對某個程式碼庫進行查詢,即可識別潛在的安全漏洞。這些由社群成員和 GitHub 安全專家編寫,儘可能多地識別特定漏洞型別的變體,並提供廣泛的通用弱點列舉 (CWE) 覆蓋範圍。
該功能對 JavaScript 和 TypeScript 程式碼的靜態分析,涵蓋了整個 OWASP(開放式 WEB 應用程式安全專案)的十大漏洞型別。功能目前處於 beta 版本,側重於為一些最常見和最危險的漏洞:
- 跨站點指令碼(XSS、CWE-79)
- 路徑注入(CWE-22、CWE-23、CWE-36、CWE-73、CWE-99)
- NoSQL 注入 (CWE-943)
- SQL 注入 (CWE-89)
隨著開源生態系統的快速發展,不常用的庫越來越多。因此新的掃描功能使用由手動編寫的 CodeQL 查詢提供的範例,不斷地識別同類開源庫以及內部開發的閉源庫,以此來訓練深度學習模型。使用這些模型,CodeQL 可以識別更多不受信任的使用者資料流,從而識別更多潛在的安全漏洞。
如何開啟該程式碼掃描功能?
- 對使用
security-extended
或security-and-quality
其中一個代碼掃描的使用者來說,該功能預設開啟。 - 對已在使用程式碼掃描功能,但未使用上述分析套件的使用者,可以通過修改程式碼掃描操作的工作流組態檔,以啟用:
[...] - uses: github/codeql-action/init@v1 with: queries: +security-extended [...]
- 對未啟用程式碼掃描功能的使用者來說,可按照為 JavaScript/TypeScript 程式碼設定分析,並在設定過程中加入上述分析套件。
注意:基於機器學習的實驗分析可能具有更高的誤報率,與大多數機器學習模型一樣,分析結果會隨著模型的不斷完善而改善。