3

veracode ツールでセキュリティ コンパイルのためにアプリケーションを実行しました。そして、ツールがコードの欠陥として検出されたログを見つけるたびに
、欠陥は以下の引用を言います

ログの不適切な出力無効化

説明

関数呼び出しにより、ログ偽造攻撃が発生する可能性があります。サニタイズされていないユーザー提供のデータをログ ファイルに書き込むと、攻撃者はログ エントリを偽造したり、悪意のあるコンテンツをログ ファイルに挿入したりできます。破損したログ ファイルは、攻撃者の足跡を隠すために、またはログ表示または処理ユーティリティに対する攻撃の配信メカニズムとして使用される可能性があります。たとえば、Web 管理者がブラウザベースのユーティリティを使用してログを確認すると、クロスサイト スクリプティング攻撃が可能になる可能性があります。**

私のログでは、他のインターフェイスからの xml を出力します。アプリケーションに関連付けられた GUI がないため、この欠陥を中和するにはどうすればよいでしょうか。

この質問をするのに適切なフォーラムでない場合はお知らせください。ありがとう

4

4 に答える 4

3

So there are two mains problems with dumping untrusted data into log files.

Firstly, record splitting (similar to HTTP header splitting). The untrusted input puts in a line break (or similar, depending on the format of the log file) followed by completely fake entries.

次に、ログ テキストがダンプされたばかりの Web ブラウザでログを表示すると、XSS 攻撃を受けやすくなります。これは、たとえば、スクリプト キディが使用しているブラウザを調査するために使用されています (Opera は非常に人気がありました)。

そのため、ログは、インジェクション攻撃を受けやすい他の形式 (HTML、XML、SQL、HTTP ヘッダーなど) として扱います。可能な文字のホワイトリストを追加していることを確認する必要があります。これを行うメソッドを作成し、各ログ呼び出しの前に入力をサニタイズできます。より良いのは、任意の入力に対して安全なテキストを出力するロガーを作成することです (特殊文字、制御文字、不正なサロゲート ペアなどが含まれている場合でも)。

于 2011-07-28T00:02:30.230 に答える
1

The problem appears to be unsanitized user-supplied data. You should clean the incoming data to prevent such things as SQL injection or scripting attacks by replacing significant characters, & -> & and so on.

You should also make it obvious that the log entry contains external, and possibly corrupt or misleading, data. Perhaps something as simple as

String logText = "User " + userID + "supplied: >>" + userData + "<<";

That way it is clear what is yours and what is from the external user.

于 2011-07-26T13:34:51.793 に答える
1

これはすべて良いガイダンスです。Veracode プラットフォームの Triage Flaws ビューには、OWASP やその他のソースからの特定の欠陥情報への直接リンクもあります。

于 2011-07-29T10:16:24.710 に答える