[英]log forging fortify fix
我正在使用 Fortify SCA 來查找我的應用程序中的安全問題(作為大學作業)。 我遇到了一些無法擺脫的“日志偽造”問題。
基本上,我記錄了一些用戶從 Web 界面輸入的值:
logger.warn("current id not valid - " + bean.getRecordId()));
Fortify 將此報告為日志偽造問題,因為getRecordId()返回用戶輸入。
我已經關注了這篇文章,我正在用空格替換“新行”,但仍然報告了這個問題
logger.warn("current id not valid - " + Util.replaceNewLine(bean.getRecordId()));
任何人都可以提出解決此問題的方法嗎?
我知道這已經得到了回答,但我認為一個例子會很好:)
<?xml version="1.0" encoding="UTF-8"?>
<RulePack xmlns="xmlns://www.fortifysoftware.com/schema/rules">
<RulePackID>D82118B1-BBAE-4047-9066-5FC821E16456</RulePackID>
<SKU>SKU-Validated-Log-Forging</SKU>
<Name><![CDATA[Validated-Log-Forging]]></Name>
<Version>1.0</Version>
<Description><![CDATA[Validated-Log-Forging]]></Description>
<Rules version="3.14">
<RuleDefinitions>
<DataflowCleanseRule formatVersion="3.14" language="java">
<RuleID>DDAB5D73-8CF6-45E0-888C-EEEFBEFF2CD5</RuleID>
<TaintFlags>+VALIDATED_LOG_FORGING</TaintFlags>
<FunctionIdentifier>
<NamespaceName>
<Pattern/>
</NamespaceName>
<ClassName>
<Pattern>Util</Pattern>
</ClassName>
<FunctionName>
<Pattern>replaceNewLine</Pattern>
</FunctionName>
<ApplyTo implements="true" overrides="true" extends="true"/>
</FunctionIdentifier>
<OutArguments>return</OutArguments>
</DataflowCleanseRule>
</RuleDefinitions>
</Rules>
</RulePack>
Alina,我實際上是您用來解決日志注入問題的文章的作者。 希望它有幫助。
Vitaly 關於 Fortify 是正確的。 您需要構建 Fortify 所謂的“自定義規則”。
這可能是數據流清理規則。 可以在此處找到一個基本示例: http : //www.cigital.com/newsletter/2009-11-tips.php 。 如果您擁有 Fortify,則您的產品文檔中應該有自定義規則編寫指南。
我不知道您將使用的污點標志是什么,但它看起來像“-LOG_FORGING”。 無論何時通過您的實用程序方法傳遞數據,您基本上都會編寫一個規則來刪除日志偽造“污點”。 Fortify 會假設通過那里的任何數據現在都可以安全地寫入日志,並且不會導致日志偽造。
您需要在 Fortify 中將您的 replaceNewLine 標記為消毒劑(如果我沒記錯的話),它將停止報告問題。
您實際上可以從特定方法創建新規則。
完成掃描后,導航到審計工作台右側的功能。 找到您的消毒方法並右鍵單擊它。
您可以從中生成規則。 你想要的是一個通用的 DataflowCleanseRule。
我只是根據上面發布的 xml 做了這個。 您可以將規則另存為 .xml 文件。 更新掃描時,您可以傳遞 -rule 參數並指向 .xml 文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.