0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

干貨:使用命令行工具檢查代碼及確保代碼安全

如意 ? 來(lái)源:Linux中國(guó) ? 作者:佚名 ? 2020-09-03 14:56 ? 次閱讀

憑借廣泛的語(yǔ)言支持,Graudit 可以讓你在開(kāi)發(fā)過(guò)程中的審計(jì)你的代碼安全。

測(cè)試是軟件開(kāi)發(fā)生命周期(SDLC)的重要組成部分,它有幾個(gè)階段。今天,我想談?wù)勅绾卧诖a中發(fā)現(xiàn)安全問(wèn)題。

在開(kāi)發(fā)軟件的時(shí)候,你不能忽視安全問(wèn)題。這就是為什么有一個(gè)術(shù)語(yǔ)叫 DevSecOps,它的基本職責(zé)是識(shí)別和解決應(yīng)用中的安全漏洞。有一些用于檢查 OWASP 漏洞的開(kāi)源解決方案,它將通過(guò)創(chuàng)建源代碼的威脅模型來(lái)得出結(jié)果。

處理安全問(wèn)題有不同的方法,如靜態(tài)應(yīng)用安全測(cè)試(SAST)、動(dòng)態(tài)應(yīng)用安全測(cè)試(DAST)、交互式應(yīng)用安全測(cè)試(IAST)、軟件組成分析等。

靜態(tài)應(yīng)用安全測(cè)試在代碼層面運(yùn)行,通過(guò)發(fā)現(xiàn)編寫好的代碼中的錯(cuò)誤來(lái)分析應(yīng)用。這種方法不需要運(yùn)行代碼,所以叫靜態(tài)分析。

我將重點(diǎn)介紹靜態(tài)代碼分析,并使用一個(gè)開(kāi)源工具進(jìn)行實(shí)際體驗(yàn)。

為什么要使用開(kāi)源工具檢查代碼安全?

選擇開(kāi)源軟件、工具和項(xiàng)目作為開(kāi)發(fā)的一部分有很多理由。它不會(huì)花費(fèi)任何金錢,因?yàn)槟闶褂玫氖且粋€(gè)由志趣相投的開(kāi)發(fā)者社區(qū)開(kāi)發(fā)的工具,而他們希望幫助其他開(kāi)發(fā)者。如果你有一個(gè)小團(tuán)隊(duì)或一個(gè)初創(chuàng)公司,找到開(kāi)源軟件來(lái)檢查你的代碼安全是很好的。這樣可以讓你不必單獨(dú)雇傭一個(gè) DevSecOps 團(tuán)隊(duì),讓你的成本降低。

好的開(kāi)源工具總是考慮到靈活性,它們應(yīng)該能夠在任何環(huán)境中使用,覆蓋盡可能多的情況。這讓開(kāi)發(fā)人員更容易將該軟件與他們現(xiàn)有的系統(tǒng)連接起來(lái)。

但是有的時(shí)候,你可能需要一個(gè)功能,而這個(gè)功能在你選擇的工具中是不可用的。那么你就可以選擇復(fù)刻其代碼,在其上開(kāi)發(fā)自己的功能,并在你的系統(tǒng)中使用。

因?yàn)椋蠖鄶?shù)時(shí)候,開(kāi)源軟件是由社區(qū)驅(qū)動(dòng)的,開(kāi)發(fā)的速度往往是該工具的用戶的加分項(xiàng),因?yàn)樗麄儠?huì)根據(jù)用戶的反饋、問(wèn)題或 bug 報(bào)告來(lái)迭代項(xiàng)目。

使用 Graudit 來(lái)確保你的代碼安全

有各種開(kāi)源的靜態(tài)代碼分析工具可供選擇,但正如你所知道的,工具分析的是代碼本身,這就是為什么沒(méi)有通用的工具適用于所有的編程語(yǔ)言。但其中一些遵循 OWASP 指南,盡量覆蓋更多的語(yǔ)言。

在這里,我們將使用 Graudit,它是一個(gè)簡(jiǎn)單的命令行工具,可以讓我們找到代碼庫(kù)中的安全缺陷。它支持不同的語(yǔ)言,但有一個(gè)固定的簽名集。

Graudit 使用的 grep 是 GNU 許可證下的工具,類似的靜態(tài)代碼分析工具還有 Rough Auditing Tool for Security(RATS)、Securitycompass Web Application Analysis Tool(SWAAT)、flawfinder 等。但 Graudit 的技術(shù)要求是最低的,并且非常靈活。不過(guò),你可能還是有 Graudit 無(wú)法滿足的要求。如果是這樣,你可以看看這個(gè)列表的其他的選擇。

我們可以將這個(gè)工具安裝在特定的項(xiàng)目下,或者全局命名空間中,或者在特定的用戶下,或者任何我們喜歡地方,它很靈活。我們先來(lái)克隆一下倉(cāng)庫(kù)。

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

現(xiàn)在,我們需要?jiǎng)?chuàng)建一個(gè) Graudit 的符號(hào)鏈接,以便我們可以將其作為一個(gè)命令使用。

$ cd ~/bin && mkdir graudit

$ ln --symbolic ~/graudit/graudit ~/bin/graudit

在 .bashrc (或者你使用的任何 shell 的配置文件)中添加一個(gè)別名。

#------ .bashrc ------

alias graudit=“~/bin/graudit”

重新加載 shell:

$ source ~/.bashrc # 或

$ exex $SHELL

讓我們通過(guò)運(yùn)行這個(gè)來(lái)檢查是否成功安裝了這個(gè)工具。

$ graudit -h

如果你得到類似于這樣的結(jié)果,那么就可以了。

我正在使用我現(xiàn)有的一個(gè)項(xiàng)目來(lái)測(cè)試這個(gè)工具。要運(yùn)行該工具,我們需要傳遞相應(yīng)語(yǔ)言的數(shù)據(jù)庫(kù)。你會(huì)在 signatures 文件夾下找到這些數(shù)據(jù)庫(kù)。

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

我在現(xiàn)有項(xiàng)目中的兩個(gè) JavaScript 文件上運(yùn)行了它,你可以看到它在控制臺(tái)中拋出了易受攻擊的代碼。

JavaScript file showing Graudit display of vulnerable code

JavaScript file showing Graudit display of vulnerable code

你可以嘗試在你的一個(gè)項(xiàng)目上運(yùn)行這個(gè),項(xiàng)目本身有一個(gè)長(zhǎng)長(zhǎng)的數(shù)據(jù)庫(kù)列表,用于支持不同的語(yǔ)言。

Graudit 的優(yōu)點(diǎn)和缺點(diǎn)

Graudit 支持很多語(yǔ)言,這使其成為許多不同系統(tǒng)上的用戶的理想選擇。由于它的使用簡(jiǎn)單和語(yǔ)言支持廣泛,它可以與其他免費(fèi)或付費(fèi)工具相媲美。最重要的是,它們正在開(kāi)發(fā)中,社區(qū)也支持其他用戶。

雖然這是一個(gè)方便的工具,但你可能會(huì)發(fā)現(xiàn)很難將某個(gè)特定的代碼識(shí)別為“易受攻擊”。也許開(kāi)發(fā)者會(huì)在未來(lái)版本的工具中加入這個(gè)功能。但是,通過(guò)使用這樣的工具來(lái)關(guān)注代碼中的安全問(wèn)題總是好的。

總結(jié)

在本文中,我只介紹了眾多安全測(cè)試類型中的一種:靜態(tài)應(yīng)用安全測(cè)試。從靜態(tài)代碼分析開(kāi)始很容易,但這只是一個(gè)開(kāi)始。你可以在你的應(yīng)用開(kāi)發(fā)流水線中添加其他類型的應(yīng)用安全測(cè)試,以豐富你的整體安全意識(shí)。
責(zé)編AJX

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11212

    瀏覽量

    208721
  • 源代碼
    +關(guān)注

    關(guān)注

    96

    文章

    2943

    瀏覽量

    66619
  • 命令行
    +關(guān)注

    關(guān)注

    0

    文章

    77

    瀏覽量

    10377
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    在STM32實(shí)現(xiàn)命令行

    工作中的開(kāi)發(fā)環(huán)境都是基于linux命令行交互,作為命令行的重度使用者,玩單片機(jī)也要使用命令行工具,百度了一些命令行
    發(fā)表于 12-09 11:32 ?2236次閱讀

    Linux命令行工具

    Linux 新手往往對(duì)命令行心存畏懼。部分原因是因?yàn)樾枰洃洿罅康?b class='flag-5'>命令,畢竟掌握命令是高效使用命令行的前提不幸的是,學(xué)習(xí)這些命令并無(wú)捷徑,
    發(fā)表于 07-25 08:10

    openssl無(wú)法使用命令行生成CMAC怎么解決?

    我正在嘗試生成應(yīng)用程序代碼的離線 CMAC 以實(shí)現(xiàn)安全啟動(dòng)。我曾嘗試使用 openssl,但無(wú)法使用命令行生成 CMAC。是否有任何工具可以生成應(yīng)用程序
    發(fā)表于 03-30 06:35

    用命令行管理IIS的FTP站點(diǎn)

    用命令行管理IIS的FTP站點(diǎn)   為了實(shí)現(xiàn)在Internet中快速共享網(wǎng)絡(luò)資源的目的,很多用戶使用IIS服務(wù)器內(nèi)置的FTP組件架設(shè)FTP服務(wù)器。
    發(fā)表于 01-30 17:25 ?943次閱讀

    Xilinx軟件命令行工具:XSCT開(kāi)發(fā)和調(diào)試

    了解如何使用XSCT,Xilinx軟件命令行工具進(jìn)行開(kāi)發(fā)和調(diào)試。 該視頻演示了XSCT如何充當(dāng)Xilinx SDK的命令行控制臺(tái)。
    的頭像 發(fā)表于 11-21 06:02 ?1.4w次閱讀

    Xilinx軟件命令行工具進(jìn)行開(kāi)發(fā)和調(diào)試

    了解如何使用XSCT,Xilinx軟件命令行工具進(jìn)行開(kāi)發(fā)和調(diào)試。 該視頻演示了XSCT如何充當(dāng)Xilinx SDK的命令行控制臺(tái)。
    的頭像 發(fā)表于 11-22 06:53 ?6610次閱讀

    Git常見(jiàn)的誤區(qū)和命令行工具等綜述

    Git常見(jiàn)的誤區(qū)和命令行工具等綜述
    發(fā)表于 08-31 09:51 ?0次下載

    如何從命令行獲取和解析參數(shù)

    這是一篇技術(shù)干貨快文,能夠快速閱讀完。文章內(nèi)容是關(guān)于如何從命令行獲取和解析參數(shù),包括SystemVerilog本身支持的系統(tǒng)函數(shù)和UVM提供的函數(shù)封裝,并給出示例代碼和仿真結(jié)果。
    的頭像 發(fā)表于 05-30 14:05 ?2763次閱讀

    Golang基于flag庫(kù)實(shí)現(xiàn)一個(gè)命令行工具

    Golang 標(biāo)準(zhǔn)庫(kù)中的 flag 庫(kù)提供了解析命令行選項(xiàng)的能力,我們可以基于此來(lái)開(kāi)發(fā)命令行工具。
    的頭像 發(fā)表于 10-28 09:26 ?1249次閱讀

    新的開(kāi)源命令行工具west

    電子發(fā)燒友網(wǎng)站提供《新的開(kāi)源命令行工具west.zip》資料免費(fèi)下載
    發(fā)表于 11-11 09:25 ?0次下載
    新的開(kāi)源<b class='flag-5'>命令行</b><b class='flag-5'>工具</b>west

    如何使用命令行在Linux中查找文件?

    終端,命令行提供了幾個(gè)用于搜索文件的工具,包括查找、定位、grep 和 where is,僅舉幾例。 那么如何使用命令行在Linux中查找文件?在Linux中查找文件的12 種方法: 1、查找
    的頭像 發(fā)表于 03-23 14:55 ?4169次閱讀

    用命令行工具ADB(Android Debug Bridge)常見(jiàn)的ADB命令

    ADB(Android Debug Bridge)是一種通用命令行工具,可以讓您通過(guò)計(jì)算機(jī)與設(shè)備通信。
    的頭像 發(fā)表于 11-05 11:26 ?1485次閱讀

    pycharm命令行終端運(yùn)行代碼

    Python是一種非常流行的編程語(yǔ)言,許多開(kāi)發(fā)者使用它來(lái)編寫各種應(yīng)用程序和腳本。為了方便開(kāi)發(fā)者編寫和測(cè)試代碼,PyCharm是一種集成開(kāi)發(fā)環(huán)境(IDE),它提供了許多功能和工具,其中包括命令行終端
    的頭像 發(fā)表于 11-22 11:20 ?4419次閱讀

    eclipse怎么使用命令行

    命令行中使用Eclipse來(lái)完成一些特定的任務(wù)。本文將詳細(xì)介紹如何在命令行中使用Eclipse。 首先,我們需要確保已經(jīng)正確安裝了JDK(Java Development Kit)和Eclipse
    的頭像 發(fā)表于 12-06 11:26 ?2350次閱讀

    HarmonyOS開(kāi)發(fā):【基于命令行(安裝庫(kù)和工具集)】

    使用命令行進(jìn)行設(shè)備開(kāi)發(fā)時(shí),可以通過(guò)以下步驟安裝編譯OpenHarmony需要的庫(kù)和工具。
    的頭像 發(fā)表于 04-25 21:03 ?357次閱讀
    HarmonyOS開(kāi)發(fā):【基于<b class='flag-5'>命令行</b>(安裝庫(kù)和<b class='flag-5'>工具</b>集)】