如何使用簡單的實用程式來尋找程式碼中的漏洞

Graudit 支援多種程式語言,並允許您將程式碼庫安全測試直接整合到開發過程中。

如何使用簡單的實用程式來尋找程式碼中的漏洞
來源: Unsplash (馬庫斯·斯皮斯克)

測試是軟體開發生命週期的重要組成部分。 測試有很多種類型,每種類型都解決自己的問題。 今天我想談談如何發現程式碼中的安全性問題。

顯然,在軟體開發的現代現實中,確保流程安全非常重要。 一度甚至引入了DevSecOps這個特殊術語。 該術語指的是旨在識別和消除應用程式中的漏洞的一系列過程。 有專門的開源解決方案用於按照標準檢查漏洞 OWASP,描述了原始程式碼中漏洞的不同類型和行為。

解決安全問題的方法有多種,例如靜態應用程式安全測試(SAST)、動態應用程式安全測試(DAST)、互動式應用程式安全測試(IAST)、軟體組成分析等。

靜態應用程式安全測試可識別已編寫程式碼中的錯誤。 這種方法不需要應用程式運行,這就是為什麼它被稱為靜態分析的原因。

我將重點放在靜態程式碼分析,並使用一個簡單的開源工具來演示實踐中的一切。

為什麼我選擇開源工具進行靜態程式碼安全分析

造成這種情況的原因有很多:首先,它是免費的,因為您使用的工具是由志同道合的社群開發的,他們希望幫助其他開發人員。 如果您有一個小型團隊或新創公司,那麼您有一個很好的機會透過使用開源軟體來測試程式碼庫的安全性來節省資金。 其次,您無需聘請單獨的 DevSecOps 團隊,進一步降低成本。

好的開源工具的創建總是考慮到對靈活性的更高要求。 因此,它們幾乎可以在任何環境中使用,涵蓋廣泛的任務。 對於開發人員來說,將這些工具與他們在處理專案時已經建置的系統連接起來要容易得多。

但有時您所需要的功能可能在您選擇的工具中無法使用。 在這種情況下,您有機會分叉其程式碼並基於它開發您自己的工具以及您需要的功能。

由於在大多數情況下,開源軟體的開發受到社群的積極影響,因此做出更改的決定非常迅速且切中要害:開源專案的開發人員依賴用戶的反饋和建議以及他們的報告發現的錯誤和其他問題。

使用Graudit進行程式碼安全分析

您可以使用各種開源工具進行靜態程式碼分析;沒有適用於所有程式語言的通用工具。 其中一些的開發人員遵循 OWASP 建議並嘗試覆蓋盡可能多的語言。

這裡我們將使用 格勞迪特,一個簡單的命令列實用程序,可以讓我們找到程式碼庫中的漏洞。 它支援不同的語言,但它們的集合仍然有限。 Graudit 是基於 grep 實用程式開發的,該實用程式曾在 GNU 許可證下發布。

類似的靜態程式碼分析工具還有-安全粗略稽核工具(RATS)、Securitycompass Web應用分析工具(SWAAT)、缺陷查找器等。 但 Graudit 非常靈活,且技術要求極低。 但是,您可能會遇到 Graudit 無法解決的問題。 然後您可以在這裡尋找其他選項 在此列表中.

我們可以將該工具整合到特定專案中,或將其提供給選定的用戶,或在我們的所有專案中同時使用。 這也是 Graudit 的靈活性發揮作用的地方。 因此,讓我們先克隆儲存庫:

$ git clone https://github.com/wireghoul/graudit

現在讓我們為 Graudit 創建一個符號鏈接,以便以命令格式使用它

$ cd ~/bin && mkdir graudit
$ ln --symbolic ~/graudit/graudit ~/bin/graudit

讓我們在 .bashrc (或您正在使用的任何設定檔)中新增一個別名:

#------ .bashrc ------
alias graudit="~/bin/graudit"

重啟:

$ source ~/.bashrc # OR
$ exex $SHELL

我們來檢查是否安裝成功:

$ graudit -h

如果你看到類似的東西,那麼一切都很好。

如何使用簡單的實用程式來尋找程式碼中的漏洞

我將測試我現有的項目之一。 在運行該工具之前,需要傳遞一個與我的專案編寫語言相對應的資料庫。 資料庫位於 ~/gradit/signatures 資料夾中:

$ graudit -d ~/gradit/signatures/js.db

因此,我測試了專案中的兩個 js 文件,Graudit 將有關我的程式碼中的漏洞的資訊顯示到控制台:

如何使用簡單的實用程式來尋找程式碼中的漏洞

如何使用簡單的實用程式來尋找程式碼中的漏洞

您可以嘗試以相同的方式測試您的專案。 您可以看到不同程式語言的資料庫列表 這裡.

Graudit 的優點和缺點

Graudit 支援多種程式語言。 因此,它適合廣泛的用戶。 它可以與任何免費或付費類似產品充分競爭。 非常重要的是,專案仍在不斷改進,社群不僅幫助開發人員,還幫助其他試圖弄清楚該工具的使用者。

這是一個方便的工具,但到目前為止,它不能總是準確地找出可疑程式碼的問題所在。 開發人員繼續改進 Graudit。

但無論如何,在使用此類工具時注意程式碼中潛在的安全問題是很有用的。

開始…

在本文中,我僅介紹了查找漏洞的多種方法中的一種 - 靜態應用程式安全測試。 進行靜態程式碼分析很容易,但這只是個開始。 要了解有關程式碼庫安全性的更多信息,您需要將其他類型的測試整合到軟體開發生命週期中。

論廣告的權利

可靠的VPS 正確選擇關稅計劃將使您更少地因不愉快的問題而分心開發 - 一切都會順利進行,不會出現故障,並且正常運行時間非常長!

如何使用簡單的實用程式來尋找程式碼中的漏洞

來源: www.habr.com

添加評論