web-dev-qa-db-ja.com

jquery.js動的コード評価:setTimeout()行へのコードインジェクション

潜在的なセキュリティ問題の修正に取り組んでいます。 HP fortify SCAを実行して、jquery.jsファイルに関する重要な優先度レポートを受け取りました。

カテゴリ:動的コード評価:コードインジェクション(3つの問題)。

ソースコードを確認したところ、setTimeout() evalコードが置かれている行であることがわかりました。

if (s.async && s.timeout) {
    timeoutTimer = setTimeout( function() {
        jqXHR.abort("timeout");
    }, s.timeout );
}

その前にtry catchブロックがあります。

私はいくつかの掘り下げを行いましたが、サードパーティのソースコードをいじらないでください。他の機能を改ざんしている可能性があります。私はただ抑制して次に進むと思いますか?私は通常、クリティカルを抑制したくない。

何か案は?

3
A1a5h3

誤検知です。

不正なコードインジェクションの脆弱性を報告することは、HP Fortifyでよく知られている問題であり、 以前は開発者を混乱させていました です。 FortifyはJavascriptコードの基本的な静的分析を行うだけであり、それがどのように機能するかを理解するために勝手に深く行くことはできません。 @AlexanderOMaraが示唆したように、潜在的に危険なsetTimeout()関数を発見したようです。これは、setInterval()として、文字列引数を取ることができますeval()と同じように、コードとして実行されます。これは一種の脆弱性であり、ツールは以下を発見することを目的としています:

_setTimeout('alert(' + document.location.hash.split('#')[1] + ')', 0);
_

しかし、あなたの場合、setTimeout()関数へのユーザー提供のフィルタリングされていない入力がないため、安全に見えます。リンクされたスレッドから素晴らしい結論を残します:

私のアドバイスは、HP fortifyレポートの実行を停止することです。または、実際に彼らのマラキーを理解できるように、彼らのクラスに行くために5000または何ドルも支払う。

3
Arminius