日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

Fortify代码扫描工具

發(fā)布時(shí)間:2023/12/20 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Fortify代码扫描工具 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、Fortify介紹? ? ?

?Fortify是一款強(qiáng)大的靜態(tài)代碼掃描分析工具,其發(fā)現(xiàn)代碼漏洞缺陷的能力十分強(qiáng)悍,主要是將代碼經(jīng)過(guò)編譯,依托于其強(qiáng)大的內(nèi)置規(guī)則庫(kù)來(lái)發(fā)現(xiàn)漏洞的。其次fortify SCA團(tuán)隊(duì)在開(kāi)發(fā)此商業(yè)工具時(shí),也提供了自定義規(guī)則的接口,只要經(jīng)過(guò)正版授權(quán)后,便可以在此基礎(chǔ)上自定義規(guī)則,來(lái)增強(qiáng)Fortify SCA的漏洞識(shí)別能力,同時(shí)經(jīng)過(guò)自定義規(guī)則,也可以降低誤報(bào),使靜態(tài)分析的準(zhǔn)確度和高效性。

? ? ?默認(rèn)情況下,Fortify SCA使用安裝的安全編碼規(guī)則包來(lái)檢查源代碼,并定義一系列可能出現(xiàn)的問(wèn)題,如可被攻擊者李勇的安全漏洞和不良的編碼缺陷。

? ? 安全編碼規(guī)則中的規(guī)則分析受支持語(yǔ)言的核心和擴(kuò)展的API包中的函數(shù),并將分析結(jié)果記錄在Fortify SCA中。每一個(gè)問(wèn)題的解釋包含了對(duì)問(wèn)題的描述和建議的解決方案,一邊更好的解決程序中的漏洞和缺陷。也可以通過(guò)創(chuàng)建自定義規(guī)則包來(lái)準(zhǔn)確地分析特定的應(yīng)用程序,驗(yàn)證專門的安全規(guī)則以及細(xì)化Fortify SCA所報(bào)告的問(wèn)題。

二、編寫自定義規(guī)則原理

要編寫有效的自定義規(guī)則,就必須熟悉一直的安全漏洞類別和通常與他們相關(guān)的函數(shù)類型。深入理解各類經(jīng)常出現(xiàn)在特定類型漏洞的函數(shù),有利于在編寫自定義規(guī)則過(guò)程中能夠準(zhǔn)確地找到與安全相關(guān)的函數(shù)。任何一門語(yǔ)言,都有其龐大的開(kāi)源框架和lib庫(kù)。所以自定義規(guī)則,既要精通安全漏洞原理,又要熟練掌握一門或幾門開(kāi)發(fā)語(yǔ)言,一般自定義規(guī)則用的比較多的語(yǔ)言有java、C/C++、PHP等。其次必須識(shí)別與安全相關(guān)的函數(shù),并熟悉這些函數(shù)的特性以此來(lái)確定能夠體現(xiàn)各個(gè)函數(shù)具體行為和與之相關(guān)的漏洞類別的正確規(guī)則形式。一旦確定好了這種聯(lián)系,使用自定義規(guī)則編輯器來(lái)創(chuàng)建規(guī)則就相對(duì)簡(jiǎn)單了。

三、自定義規(guī)則

1). 在fortify SCA安裝的bin目錄下找到打開(kāi)自定義規(guī)則編輯器,CustomRulesEditor.cmd,如下圖所示:

2). 打開(kāi)編輯器后,選擇File ——>Generate Rule,彈出規(guī)則向?qū)Э颉?/p>

3). 自定義規(guī)則模板可以按照漏洞類型(Category)和規(guī)則類型(Rule Type)進(jìn)行分類,不管是何種方式分類,這些模板大體上分為,數(shù)據(jù)污染源tainted規(guī)則,數(shù)據(jù)控制流規(guī)則,數(shù)據(jù)傳遞規(guī)則,以及漏洞缺陷爆發(fā)的sink規(guī)則。只要理解了這些規(guī)則模板,和開(kāi)發(fā)語(yǔ)言的函數(shù)特征,建立規(guī)則就簡(jiǎn)單了。

如下是fortify自定義規(guī)則向?qū)е械囊?guī)則選項(xiàng):

1) Access Control: Database ?Validation Rule
定義驗(yàn)證對(duì)數(shù)據(jù)庫(kù)中所存儲(chǔ)的信息的訪問(wèn)權(quán)限的函數(shù) (授權(quán)函數(shù))。這個(gè)規(guī)則可以發(fā)現(xiàn)與未經(jīng)授權(quán)的訪問(wèn)相關(guān)的漏洞Alias Rule
在安全編碼規(guī)則包或自定義規(guī)則的范圍內(nèi)定義核心和擴(kuò)展API 所發(fā)現(xiàn)的能夠模擬其他函數(shù)行為的函數(shù)。
2) Allocation Rule
定義內(nèi)存分配的函數(shù)。這個(gè)規(guī)則有助于跟蹤緩沖區(qū)大小并檢測(cè) buffer overflow 漏洞
3) Buffer Overflow Detection Rules for 'scanf' Family of Functions
定義像 scanf() 家族函數(shù)一樣運(yùn)行的函數(shù)。這些規(guī)則有助于跟蹤緩沖區(qū)大小并檢測(cè) buffer overflow 漏洞
4) Buffer Overflow Detection Rules for 'sprintf' Family of Functions
定義像 sprintf() 家族函數(shù)一樣運(yùn)行的函數(shù)。這個(gè)函數(shù)可以在格式化字符串中并置多個(gè)起始緩沖區(qū),并將格式化字符串的多個(gè)內(nèi)存單位復(fù)制到目標(biāo)緩沖區(qū)。這個(gè)規(guī)則有助于跟蹤緩沖區(qū)大小并檢測(cè) buffer overflow 漏洞

5) Buffer Overflow Detection Rules for 'strcat' Family of Functions
定義像 strcat() 家族函數(shù)一樣運(yùn)行的函數(shù)。它在目標(biāo)緩沖區(qū)的末端并置了多個(gè)起始緩沖區(qū)的內(nèi)存單位。這些規(guī)則有助于跟蹤緩沖區(qū)大小并檢測(cè) buffer overflow 漏洞
6) Buffer Overflow Detection Rules for 'strcpy' Family of Functions
定義像 strcpy() 家族函數(shù)一樣運(yùn)行的函數(shù)。它可以將多個(gè)內(nèi)存單位從起始緩沖區(qū)復(fù)制到目標(biāo)緩沖區(qū)。這些規(guī)則有助于
跟蹤緩沖區(qū)大小并檢測(cè) buffer overflow 漏洞
7) Cross-Site Scripting Sink Rule
定義在輸入?yún)?shù)沒(méi)有進(jìn)行適當(dāng)驗(yàn)證的情況下有可能在瀏覽器中執(zhí)行惡意代碼的函數(shù)
8) Cross-Site Scripting Source Rule
定義充當(dāng)輸入源的函數(shù),如果這樣的函數(shù)沒(méi)有經(jīng)過(guò)適當(dāng)?shù)尿?yàn)證,會(huì)導(dǎo)致瀏覽器執(zhí)行惡意代碼。
9) Cross-Site Scripting Validation Rule
定義發(fā)送到網(wǎng)頁(yè)前需要進(jìn)行適當(dāng)?shù)臄?shù)據(jù)驗(yàn)證的函數(shù)
10) Generic Pass-Through Rule
定義一個(gè)其輸入?yún)?shù)會(huì)和輸出參數(shù)交互數(shù)據(jù)的函數(shù)。
11) Generic Semantic Rule
定義可能出現(xiàn)的 dangerous function
12) Generic Sink Rule
定義在輸入?yún)?shù)沒(méi)有進(jìn)行適當(dāng)驗(yàn)證的情況下有可能帶來(lái)多種安全漏洞風(fēng)險(xiǎn)的函數(shù)
13) Generic Source Rule
定義充當(dāng)輸入源的函數(shù),如果這樣的函數(shù)沒(méi)有經(jīng)過(guò)適當(dāng)?shù)尿?yàn)證,會(huì)導(dǎo)致多種安全漏洞。
14) Generic Validation Rule
定義能夠針對(duì)多種安全漏洞而進(jìn)行適當(dāng)驗(yàn)證的函數(shù)
15) HTTP Response Splitting Sink Rule
定義在輸入?yún)?shù)沒(méi)有進(jìn)行適當(dāng)驗(yàn)證的情況下有可能破壞 HTTP 響應(yīng)頭文件的函數(shù)
16) HTTP Response Splitting Validation Rule
定義加入 HTTP 響應(yīng)頭文件之前已進(jìn)行適當(dāng)?shù)臄?shù)據(jù)驗(yàn)證的函數(shù)
17) Integer Overflow Sink Rule
定義易于發(fā)生 integer overflow 漏洞的函數(shù),這種漏洞會(huì)在輸入?yún)?shù)驗(yàn)證不當(dāng)?shù)那闆r下導(dǎo)致邏輯錯(cuò)誤和 buffer overflow。
18) Log Forging Sink Rule
定義在輸入?yún)?shù)沒(méi)有進(jìn)行適當(dāng)驗(yàn)證的情況下有可能向日志文件寫入惡意或偽造條目的函數(shù)
19) Pass-Through Rule that Indicates that Outgoing Value does not End with a Newline Character
定義未在輸出參數(shù)中附加換行符的參數(shù)
20) Pass-Through Rule that Indicates that Outgoing Value does not End with a Null Character
定義沒(méi)有適當(dāng)?shù)匾?"\0" 結(jié)束輸出緩沖區(qū)的函數(shù)
21) Pass-Through Rule that Indicates that Outgoing Value Ends with a Newline Character
定義在輸出參數(shù)中附加換行符的參數(shù)
22) Pass-Through Rule that Indicates that Outgoing Value Ends with a Null Character
定義適當(dāng)?shù)匾?"\0" 結(jié)束輸出緩沖區(qū)的函數(shù)

23) Pass-Through Rule that Indicates ?that Outgoing Value is ?Deobfuscated
定義充當(dāng)去模糊化例程的函數(shù)
24) Pass-Through Rule that Indicates ?that Outgoing Value is not ?Numeric
定義處理輸入?yún)?shù)的函數(shù),以使其輸出參數(shù)不為數(shù)字。
25) Pass-Through Rule that Indicates that Outgoing Value is Numeric
定義處理輸入?yún)?shù)的函數(shù),以使其輸出參數(shù)為數(shù)字。
26) Pass-Through Rule that Indicates ?that Outgoing Value is Poorly ?Encrypted
定義對(duì)輸入?yún)?shù)所執(zhí)行的加密方式較差的函數(shù),如基于 64位的編碼。
27) Pass-Through Rule that Indicates ?that Outgoing Value Represents ?the Length of the String
定義輸出參數(shù)可以表示字符串長(zhǎng)度的函數(shù)
28) Password Management Sink Rule
定義采用永遠(yuǎn)不會(huì)被破譯或去模糊化的明文密碼作為參數(shù)的函數(shù)
29) Password Management: Weak Cryptography Sink Rule
定義采用加密方式較差的密碼作為參數(shù)的函數(shù)
30) PCI Violation Sink Rule
定義有可能將信用卡數(shù)據(jù)顯示給攻擊者的函數(shù)
31) PCI Violation Source Rule
定義將信用卡數(shù)據(jù)引入應(yīng)用程序的函數(shù)
32) PCI Violation Validation Rule
定義信用卡數(shù)據(jù)顯示給攻擊者前可以對(duì)這些數(shù)據(jù)進(jìn)行適當(dāng)驗(yàn)證的函數(shù)
33) Privacy Violation Sink Rule
定義在輸入?yún)?shù)處理不當(dāng)?shù)那闆r下由于向攻擊者顯示私人信 息而導(dǎo)致可能危及用戶隱私的函數(shù)
34) Privacy Violation Source Rule
定義作為私人數(shù)據(jù)源的函數(shù),如果處理不當(dāng),會(huì)危害用戶隱私。
35) Privacy Violation Validation Rule
定義能適當(dāng)處理私人數(shù)據(jù)且不會(huì)危及用戶隱私的函數(shù)。
36) SQL Injection Sink Rule
定義在輸入?yún)?shù)沒(méi)有進(jìn)行適當(dāng)驗(yàn)證的情況下有可能執(zhí)行惡意SQL 或?qū)?shù)據(jù)庫(kù)所存儲(chǔ)的數(shù)據(jù)提供未經(jīng)授權(quán)的訪問(wèn)權(quán)限的函數(shù)
37) SQL Injection Source Rule
定義充當(dāng)輸入源的函數(shù),如果這樣的函數(shù)沒(méi)有經(jīng)過(guò)適當(dāng)?shù)尿?yàn)證,會(huì)導(dǎo)致 SQL 被注入到數(shù)據(jù)庫(kù)查詢中。
38) SQL Injection Validation Rule
定義在利用數(shù)據(jù)進(jìn)行 SQL 查詢之前能夠?qū)@些數(shù)據(jù)進(jìn)行適當(dāng)驗(yàn)證的函數(shù)
39) String Length Rule
定義能夠計(jì)算字符串長(zhǎng)度的函數(shù)。這個(gè)規(guī)則有助于跟蹤字符串的長(zhǎng)度,以便檢測(cè) buffer overflow 漏洞。
40) String Termination Error Sink Rule
定義在輸入?yún)?shù)沒(méi)有適當(dāng)?shù)匾?"\0" 結(jié)尾的情況下可能會(huì)容易導(dǎo)致 buffer overflow 漏洞
41) String Termination Error Source Rule
定義由于輸入數(shù)據(jù)源沒(méi)有適當(dāng)?shù)匾?"\0" 結(jié)尾而容易導(dǎo)致buffer overflow 漏洞。

42) String Termination Error Validation Rule
定義適當(dāng)?shù)匾?"\0" 結(jié)束緩沖區(qū)的函數(shù)。
43) System Information Leak Sink Rule
定義在輸入?yún)?shù)處理不當(dāng)?shù)那闆r下可能向攻擊者顯示有用的系統(tǒng)信息的函數(shù)
44) System Information Leak Source Rule
定義作為系統(tǒng)信息數(shù)據(jù)源的函數(shù),如果處理不當(dāng),會(huì)向攻擊者泄漏有用的數(shù)據(jù)。
45) System Information Leak Validation Rule
定義能夠適當(dāng)處理系統(tǒng)數(shù)據(jù)的函數(shù)

4) .選擇規(guī)則包語(yǔ)言,點(diǎn)擊next,然后填寫報(bào)名,類名,函數(shù)名

5). 點(diǎn)擊next,設(shè)置sink點(diǎn)

四. 運(yùn)行自定義規(guī)則

需要將編寫好的自定義規(guī)則包放在Fortify SCA指定的文件夾下方可生效。默認(rèn)一般是在${FortifyInstall}/Core/config/customrules/目錄下。你可以在${FortifyInstall}/Core/config/fortify-sca.properties進(jìn)行配置自定義路徑

五、Fortify代碼掃描使用教程

1、進(jìn)入Fortify安裝目錄,再進(jìn)入bin目錄,雙擊auditworkbench.cmd啟動(dòng)程序

2、打開(kāi)掃描窗口,點(diǎn)擊Scan Java Project

3、選擇要掃描的項(xiàng)目目錄,點(diǎn)擊確定按鈕

4、彈出java代碼版本選擇窗口,選擇版本后,點(diǎn)擊OK

5、彈出審計(jì)向?qū)Т翱?#xff0c;點(diǎn)擊Scan按鈕開(kāi)始掃描

6、掃描開(kāi)始,等待掃描結(jié)束,等待時(shí)間根據(jù)項(xiàng)目大小而定,可能時(shí)間會(huì)很長(zhǎng)

7、掃描結(jié)束后,顯示掃描結(jié)果。到此使用Fortify 17.10進(jìn)行源代碼漏掃的方法就介紹完了。

初始fortify,還存在很多認(rèn)知的不足,歡迎路過(guò)的伙伴們留言指正。。。望不吝賜教!!!

總結(jié)

以上是生活随笔為你收集整理的Fortify代码扫描工具的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。