歡迎來到 黑吧安全網 聚焦網絡安全前沿資訊,精華內容,交流技術心得!

Fortify Sca自定義掃描規則

來源:本站整理 作者:佚名 時間:2020-01-28 TAG: 我要投稿

代碼安全掃描是指在不執行代碼的情況下對代碼進行評估的過程。代碼安全掃描工具能夠探查大量“if—-then—-”的假想情況,而不必為所有這些假想情況經過必要的計算來執行這些代碼。
那么代碼安全掃描工具到底應該怎么使用?以下是參考fortify sca的作者給出的使用場景:

常規安全問題(如代碼注入類漏洞)這塊,目前的fortify sca規則存在較多誤報,通過規則優化降低誤報。而在特定安全問題上,越來越多的合規要求需要滿足(如等保、國信辦、銀保監要求),自帶的掃描規則肯定檢測不到這些問題,需要自定義掃描規則,從合規的角度來展示安全風險。
常規安全問題誤報優化
目前開發人員反饋最多的問題是:代碼安全掃描工具誤報較多,我們先看下代碼安全安全分析的過程,如下圖示:

由于中間編譯建模和掃描工具分析的過程是內置在掃描工具里的二進制的可執行程序完成的,我們無法干預,那么只能再在源代碼編寫、規則定義和掃描結果展示3個地方來操作降低誤報,如下將逐項展示:
源代碼編寫
1. 編碼規范
盡量使用fortify官方認可的安全庫函數,如ESAPI,使用ESAPI后fortify sca會把漏洞標記為低危,是可以忽略的漏洞類型。以下是對常見漏洞的安全庫函數
1).xss
org.owasp.esapi.Encoder/Encoding/Escapefrom
2). 文件路徑操縱
org.owasp.esapi.getValidDirectoryPathororg.owasp.esapi.getValidFilename
3). SQL注入
org.owasp.esapi.Encoder.encodeForSQL
org.apache.commons.lang.StringEscapeUtils.escapeSql
4). 命令注入
org.owasp.esapi.Encoder.encodeForOS
2. 使用注解(針對java)
如果我們用過SonarQube,我們會發現有兩種修改代碼的方式來解決誤報。
注釋
在被誤判的代碼行后面加上注釋://NOSONAR
String name = user.getName(); //NOSONAR
注解
在類或方法上面加上 @SuppressWarnings 注解
@SuppressWarnings("squid:S1309")
publicclass Example {
    ...
    @SuppressWarnings("all")
    public void example(){
    }
}
squid:S1309即是掃描規則編號
同樣的fortify sca也有提供注解的功能,Fortify Java Annotations
比如如下代碼:
publicclass User {
public finalstatic String PASSWORD_LABEL = "password";
privateString userId;
privateString userKey;
publicvoid printUserData() {
System.out.println("Fortify[userId=" + userId + ", " + PASSWORD_LABEL + "=" +userKey + "]");
}
}
掃描平臺會在publicfinal static String PASSWORD_LABEL = “password”報告PasswordManagement:Hardcoded Password漏洞。
使用后
@FortifyNotPassword
publicfinal static String PASSWORD_LABEL = "password";
@FortifyPassword
private String userKey;
不會再報這樣的漏洞
可用的注解如下:
FortifyCheckReturnValue
FortifyCommandInjectionSink
FortifyCommandInjectionValidate
FortifyDangerous
FortifyDatabaseSource
FortifyFileSystemSource
FortifyNetworkSource
FortifyNonNegative
FortifyNonZero
FortifyNotNumberPassthrough
FortifyNotPassword
FortifyNotPrivate
FortifyNumberPassthrough
FortifyPCISink
FortifyPCISource
FortifyPCIValidate
FortifyPassthrough
FortifyPassword
FortifyPrivacySink
FortifyPrivacyValidate
FortifyPrivate
FortifyPrivateSource
FortifySQLSink
FortifySQLValidate
FortifySink
FortifySource
FortifySystemInfoSink
FortifySystemInfoValidate
FortifyValidate
FortifyWebSource
FortifyXSSSink
FortifyXSSValidate
規則定義
Fortify sca主要對中間代碼進行了數據流分析、控制流分析、代碼結構分析、內容和配置文件分析。
1.新建規則
這里以fortify安裝目錄下自帶的php示例代碼(Samples\basic\php)為例:
我們在缺陷代碼基礎上增加了validate函數去做安全凈化處理,fortify sca不能識別這個函數的作用。

在函數上右鍵點擊彈出write rules for this function,我們接下來通過圖形界面創建數據流跟蹤的凈化規則

再次掃描后我們發現fortify sca已經可以識別我們自定義的validate函數

打開規則文件xml我們看到taintflag里已經增加了xss

[1] [2] [3]  下一頁

【聲明】:黑吧安全網(http://www.650547.live)登載此文出于傳遞更多信息之目的,并不代表本站贊同其觀點和對其真實性負責,僅適于網絡安全技術愛好者學習研究使用,學習中請遵循國家相關法律法規。如有問題請聯系我們,聯系郵箱[email protected],我們會在最短的時間內進行處理。
  • 最新更新
    • 相關閱讀
      • 本類熱門
        • 最近下載
        安徽快3自由的百科 福彩3d今天开奖结果 燕赵排列7 近30期双色球走势 北京十一选五开奖走势一定 100元真钱假钱的辨别 黑龙江11选5手机版 北京快三在线计划 黑龙江体彩6 1开奖结果 排列五带坐标带连线走势 江西多乐彩