去年,Sonar在BlackHat安全大會上宣佈了其創新的分析技術Deeper SAST,用於檢測隱藏的程式碼漏洞。從那時起,Sonar一直在不斷完善和擴展這項技術,目標是以高精度發現更多漏洞,以便您的程式碼保持乾淨。
同時,Sonar也一直在評估和監控使用更深入的 SAST 分析開源軟體的影響。在這篇文中,我們想通過展示一個影響世界的關鍵真實世界漏洞示例,強調為什麼更深入的 SAST 對於發現隱藏的漏洞至關重要,否則這些漏洞仍未被發現。
什麼是Deeper SAST
幾乎每個軟體都有多個依賴庫的使用,例如 Spring 框架或 Log4j library。但是,傳統的靜態應用程式安全測試 (SAST) 工具僅分析專案的第一方程式碼,而忽略了第三方依賴庫中的程式碼。這些依賴庫常常是傳統 SAST 的黑匣子,但通常其中常常會包含較為敏感或者有風險之程式碼,如果在專案中使用不當,可能會導致安全漏洞。因此,傳統的 SAST 會遺漏隱藏的漏洞,這些漏洞會於專案第一方程式碼中與第三方程式碼的互動中產生。
依賴庫中的這些敏感程式碼片段只有在專案中被濫用時才會成為漏洞。它們本身不是漏洞,也沒有用 CVE 進行分類和記錄。因此,傳統的 SCA 工具將無法檢測到這些漏洞。
舉個範例:Jenkins 安全漏洞 CVE-2024-23897
當前Sonar的Deeper SAST可以發現什麼樣的隱藏程式碼漏洞?讓我們看一個真實世界的例子
去年,研究人員報告了 Jenkins 程式碼中的一個嚴重漏洞,Jenkins 是超過 1000 萬開發人員使用的最受歡迎的 CI/CD 軟體之一。檢查此漏洞中涉及的單個城市碼片段,並解釋為什麼只有更深層次的 SAST 才能連接這些點。
該漏洞影響了 Jenkins 的內置 CLI 工具,該工具用於遠端管理 Jenkins 伺服器。為了解析此 CLI 工具的命令行參數,Jenkins 導入了一個名為 args4j 的小型第三方函式庫。在這個args4j庫中,參數解析期間有一個隱藏功能:當參數以“@”字元開頭時,它們將被打開並作為檔讀取。最終,遠端攻擊者將可以向 Jenkins 傳遞惡意參數來竊取敏感的資料或者資訊。
關鍵點在於,當只分析Jenkins的程式碼時,由於安全敏感部分是在函式庫中執行的,因此無法發現任何漏洞。通過僅分析args4j的程式碼,也找不到任何漏洞,因為單獨打開檔是無害的。只有當惡意使用者可以篡改文件路徑時,才會出現安全問題,當前此漏洞已經被Sonar記錄並且記錄到Sonar的Rule中。
Sonar的Deeper SAST 能分析出第一方程式碼 (Jenkins) 和第三方程式碼(args4j) 之間的特定互動,確定其互動引發安全漏洞。
結論
Deeper SAST 對於發現深藏漏洞和編寫Clear Code是必不可少的。
單個漏洞都將可能會產生嚴重後果。Sonar 每天都會發現數百個隱藏在內部的新安全漏洞。Sonar推出的更深入的靜態應用安全測試(SAST)技術可以檢測到傳統工具無法發現的隱藏漏洞,特別是那些涉及第三方依賴庫的漏洞。
Deeper SAST 功能當前已供 Sonar 的商業客戶使用,無需額外費用。如果貴司開始希望追求高品質、高安全性的程式碼,追求Clean Code,相信Sonar系列產品是一個值得貴司考慮導入的選擇之一。
我們很期望看到 Sonar系列產品可以幫助客戶您,如想了解更多資訊或細節,或者想要和我司討論完整DevSecOps導入到貴司開發環境之中,DevOps專業的顧問團隊歡迎您來信或來電洽詢!
Comments