弱點掃描一直是程式撰寫中評估程式質量的公認標準,尤其是程式開發方式日新月異,若開發標準沒有跟上就會導致系統容易被攻擊,造成客戶或是公司本身的損失,但是請第三方協助弱掃的費用又不便宜,所以 SonarQube 是一個很好的工具讓開發者可以自我檢測開發完成後程式的質量並預先進行修正。
SonarQube 簡介
SonarQube是一個廣泛使用的程式碼品質和安全性評估工具,它結合了靜態程式碼分析和弱點掃描的功能。 SonarQube能夠分析程式碼庫中的各種弱點和技術債務,並提供實時的評估和報告,以幫助開發人員改進程式碼品質和安全性。
SonarQube 的特點包括:
- 強大的弱點偵測:
SonarQube支援多種編程語言和框架,能夠檢測潛在的弱點,如SQL注入、跨站腳本攻擊等。
- 程式碼品質評估:
除了弱點掃描,SonarQube還能評估程式碼的一致性、可讀性和維護性,有助於改進程式碼的整體品質。
- 自動化集成:
SonarQube可以與持續整合和持續部署(CI/CD)流程集成,自動在程式碼提交或構建過程中進行評估,幫助防止漏洞進入程式碼庫。
- 實時反饋:
開發人員可以在SonarQube的報告中看到弱點和改進建議,有助於快速解決問題。
- 風險管理:
通過識別和解決弱點,SonarQube有助於降低應用程式和系統面臨的風險,提升安全性。
安裝
- 安裝sonarQube最新版 https://www.sonarsource.com/products/sonarqube/downloads/?gads_campaign=SQ-Mroi-PMax&gads_ad_group=Global&gads_keyword=&gclid=Cj0KCQjw1_SkBhDwARIsANbGpFsxMNrK16SpTEruU
joFW7J5xlZ2HnqcxAYgHrvDeJ51hXJceFvOldUaAni-EALw_wcB
點選最左側的版本(Community Edition) - 解壓縮到任一位置
- 安裝jdk17(目前最新的20版無法使用,有function被棄用)
https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html - 下載sonar-scanner-msbuild https://github.com/SonarSource/sonar-scanner-msbuild/releases/download/5.13.0.66756/sonar-scanner-msbuild-5.13.0.66756-net46.zip
- 解壓縮後把含有SonarScanner .MSBuild.exe的資料夾設為PATH環境變數
- WIN 11搜尋檢視進階系統設定
- 點選環境變數>在系統變數新增三個變數
- JAVA_HOME > JDK的根目錄路徑(一般是C:\Program Files\Java\jdk-17)
- PATH >JDK的bin路徑(一般是C:\Program Files\Java\jdk-17\bin)
- PATH >MSbuild.exe的路徑(一般是C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin)
- SONAR_JAVA_PATH>java.exe的路徑(一般是C:\Program Files\Java\jdk-17\bin\java.exe)
- 開啟解壓縮的sonarqube資料夾>bin>windows-x86-64
- cmd到此層路徑下輸入.\StartSonar.bat
- 如果跑完最後停在
2023.06.29 17:09:56 INFO app[][o.s.a.SchedulerImpl] Process[ce] is up
2023.06.29 17:09:56 INFO app[][o.s.a.SchedulerImpl] SonarQube is operational
即表示成功,可輸入http://localhost:9000/ - 登入帳號跟密碼預設都是 admin
- 登入更改完帳密後>建立一個新的project,名稱可隨意
- 選取.net Framewor
- 把.net的編譯器加到環境變數PATH C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin
- 到要進行弱掃的專案資料夾根目錄
- cmd到此層資料夾
- 根據Sonarqube指示執行指令.
- 第三個指令執行SonarScanner.MSBuild.exe end即可不需要token(根據windows版本會有所差異,若無法則完整輸入)
- 執行完成即可得到結果
注意事項
SonarQube是運行在java環境上,所以直接關閉cmd或關閉網頁都不會關閉server,會導致下次開啟時出現問題,正確的關閉方法為在啟動SonarQube的cmd内按下Ctrl+C終止才是正確的關閉方式。
插件
若是需要OWASP TOP10的弱掃結果,需要安裝Security Plugin for SonarQube插件,
可在https://www.bitegarden.com/downloads/找到,測試版本只有7天的權限且需要填寫諸多資訊申請,然後他們的業務就會常態信的寄信問你是否要購買,實際購買價格其實也不便宜,但是比起直接請第三方廠商協助弱掃的價格可以算是實惠很多。
可先點選Try it free下載,下載後會得到一包jar檔,把這包jar檔丟到SonarQube主程式內的extensions/plugins資料夾內,重啟SonarQube即安裝完成,就可以將原生的掃描結果轉換為我們要的OWASP TOP10的弱掃結果並匯出成pdf。
結論
自己搭建SonarQube的確可以在提升程式質量中節省不少成本,但由於其安裝的流程較為原始,不像一般我們安裝套件或程式一樣有UI可以設定,甚至連需要的環境變數都得手動設置,官方也沒明確說明流程,所以安裝起來確實蠻麻煩的。除了知道流程哪幾個版本的jdk,.net,SobarQube可以協同運作也是得慢慢測試才能找到答案,但是有鑑於越來越多的企業對於弱點掃描這塊的重視,開發者自身對於程式碼質量的要求與審核也該與時俱進,避免客戶的程式受到駭客攻擊而造成財務及資訊損失。