12

Fortify SCA を使用して、アプリケーションのセキュリティの問題を見つけています (大学の宿題として)。解決できない「Log Forging」の問題に遭遇しました。

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

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

getRecordId()がユーザー入力を返すため、Fortify はこれをログ偽造の問題として報告します。

この記事に従い、「改行」をスペースに置き換えていますが、問題はまだ報告されています

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

誰でもこの問題を解決する方法を提案できますか?

4

4 に答える 4

9

これはすでに回答されていることは知っていますが、例がいいと思いました:)

<?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>
于 2012-11-30T17:39:27.740 に答える
8

Alina さん、私は実際、あなたがログ インジェクションの問題を解決するために使用した記事の著者です。お役に立てば幸いです。

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

これは、データフロー クレンジング ルールである可能性があります。基本的な例はhttp://www.cigital.com/newsletter/2009-11-tips.phpにあります。Fortify を所有している場合は、製品ドキュメントにカスタム ルール作成ガイドが含まれているはずです。

あなたが使用する汚染フラグが何であるかはわかりませんが、「-LOG_FORGING」のようになります。基本的に、ユーティリティ メソッドを介してデータが渡されるたびに、ログ偽造の「汚染」を除去するルールを作成します。Fortify は、そこを通過したデータが安全にログに書き込まれるようになり、ログの偽造を引き起こさないと想定します。

于 2012-10-12T05:57:44.960 に答える
3

FortifyでreplaceNewLineをサニタイザーとしてマークする必要があります(私の記憶が正しければ)、問題の報告が停止します。

于 2012-10-09T07:42:24.270 に答える