2012-10-08 9 views
11

私はFortify SCAを使用して、私のアプリケーション(大学の宿題)のセキュリティ問題を発見しています。私は、私が取り除くことができないいくつかの「ログ鍛造」問題に遭遇しました。ログフォージ強化フィックス

logger.warn("current id not valid - " + bean.getRecordId())); 

をおよびFortifyには、問題を鍛造ログとしてこれを報告し、ユーザー入力を返すgetRecordId()理由:

基本的に、私は、Webインターフェイスからのユーザ入力として来るいくつかの値を記録します。

私はこのarticleを踏襲している、と私はスペースで「改行」を交換していますが、問題はまだ誰もがこの問題を解決する方法を提案することができます

logger.warn("current id not valid - " + Util.replaceNewLine(bean.getRecordId())); 

を報告していますか?

+0

私見それは、すべてのコンテンツについてです:)あなたはユーザー入力をサニタイズする必要があり、これがあるべき良い練習といいだろうと思った知っていますある種の状況では、(JavaからCアプリを呼び出す)異種ソフトウェアアーキテクチャのように、非正規化されたユーザ入力が危険になる可能性がある(新しい行を置換することは適切な墨塗りからは遠い))、フォーマット攻撃は、あなたがそれをスキップすることができます番号(長い、整数、ダブル)ですID:それは文字列の場合はそれもスキップすることができますが、それについて覚えて:)。 – fatfredyy

答えて

6

Alina、私は実際にログインジェクションの問題を解決するために使った記事の著者です。それが役に立ちましたことを願っています。

VitalyはFortifyに関して正しいです。 Fortifyが "カスタムルール"と呼ぶものを構築する必要があります。

データフローのクレンズルールになりそうです。基本的な例はhttp://www.cigital.com/newsletter/2009-11-tips.phpです。 Fortifyを所有している場合は、製品ドキュメントにカスタムルール作成ガイドが必要です。

あなたが使用する汚れフラグは何か分かりませんが、 "-LOG_FORGING"のように見えます。あなたは基本的に、データがあなたのユーティリティメソッドに渡されるたびに、ログを偽造する "汚れ"を削除するルールを書くでしょう。 Fortifyは、そこを通過したデータがログに書き込まれることが安全であると仮定し、ログの偽造を引き起こさないと仮定します。

+0

ありがとうジョン!あなたのアドバイスとドキュメントに続いて、私は必要なカスタムルールを書くことができました。あなたの記事も非常に便利でした。 –

+2

このリンクはもう存在しません:http://www.cigital.com/newsletter/2009-11-tips.php – Coder17

2

あなたがreplaceNewLineをFortifyのsanitiserとしてマークする必要があります(私が正しく覚えている場合)、問題の報告が停止されます。

+0

このオプションを「sanitiser」としてマークする方法の詳細はありますか?私はFortify Audit Workbenchを使用していますが、オプションが見つかりません。 –

+0

「Fortify Java注釈」と呼ばれるものがあることがわかりました。私はこれについてさらに情報を見つけることができればと思います。 –

+0

申し訳ありませんが、私はしばらくこの物に触れていません。サポートを強化するために話すことが最善の選択です - これは高価な製品であり、前回使用したときのサポートは大丈夫でした。 –

8

私は、これはすでに答えましたが、私は例が:)

<?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> 
+0

このコードはどこに追加しますか? – Coder17

関連する問題