web-dev-qa-db-ja.com

バージョン番号を表示するのは本当にセキュリティの構成ミスですか?

私たちのWebアプリケーションは、jQueryが埋め込まれたHTMLファイルを使用します。 jQueryライセンス( https://jquery.org/license/ )によると、バージョン番号を含め、ライセンスヘッダーはそのままにしておく必要があります。

クライアントは、セキュリティリスクとしての製品とバージョンの組み合わせの露出を報告しました。奇妙なことに、同じファイル内のbootstrapバージョンはセキュリティリスクとして報告されていません。

多くのアプリケーションは、内部にバージョン番号のあるライブラリを使用します。 FirebugまたはChromeのデベロッパーコンソールでコードを実行して、バージョン番号を取得することもできます。

この「セキュリティの誤った構成」( https://www.owasp.org/index.php/Top_10-2017_A6-Security_Misconfiguration )は、製品とバージョン番号の表示にどのような状況で当てはまりますか?そして、jQueryライセンスに違反せずにこの問題をどのように解決できますか?

37
stormtrooper

バージョン番号を公開することによるセキュリティ上の影響は、攻撃者がバージョンが既知の脆弱性に対して脆弱かどうかを即座に確認できることです。たとえば、3.4.0より前のjQueryはCVE-2019-11358に対して脆弱であるため、攻撃者がjQueryが3.3.9と3.4.1のどちらであるかを知ることは、攻撃者にとって有用な情報です。

ただし、ブラウザーで実行されるJavaScriptでは、攻撃者が完全なソースコードにアクセスできるため、jQueryが脆弱かどうかを隠すことはできません。バージョンを非表示にしても、攻撃者はコードを比較するか、単に悪用して、脆弱かどうかを判断できます。バージョン番号を非表示にすると、少し作業が増える場合がありますが、現実的にはほとんど機能しません。

さらに、これを軽減する他の方法があります。

  • 使用するライブラリのセキュリティの問題についてループを維持します。セキュリティ上の問題については、メーリングリストまたは他の公開方法に登録してください。
  • セキュリティの問題が見つかった場合は、クライアントライブラリを更新します。

定期的に更新を行うため、常に脆弱性のないバージョンが存在する場合は、そのバージョンが公開されても問題ありません。そして、これが情報漏えいを軽減する方法であることをクライアントに伝えることができます。

64
Sjoerd

バージョン番号を知ることは、セキュリティの構成ミスではありません。バージョン番号を公開するリスクは「情報開示」です。この情報を知っていると、攻撃者が特定のバージョンの脆弱性の悪用を仕掛ける危険性が生じる可能性があります。

ライブラリに脆弱性が含まれていても、セキュリティの構成ミスの問題ではありません。それは「A9-既知の脆弱性を持つコンポーネントの使用」です。

そのため、クライアントはリスクと状況を正しく理解していないようです。

36
schroeder

何かのバージョン番号を公開することがセキュリティ上の危険であるというのは、サイバーセキュリティにおける非常に古いパターンの考え方です。

攻撃者が実行しているバージョンを知っている場合、攻撃者はそのバージョンに適用される脆弱性を調べることができるため、攻撃者は作業を容易にします。

実際、それがセキュリティスキャナーが行っていることです。 Nessusらには、バージョン番号ごとの脆弱性の組み込みデータベースがあります。したがって、自分をスキャンしない限り、その情報を非表示にすることで、自分の足を撃ちます。

例外スキャナーと攻撃者(スキャナーを使用している人はご存知ですか?)には、何かのバージョン番号を判別するための単純なstrcmp()以外の手段があります。これは少し手間がかかり、常に正確な数を特定できるわけではありませんが、何の価値のある攻撃者もjQuery 3.3.0をjQuery 2.2.1と混同しません。

スクリプトキディ以外のレベルの攻撃者は、フィンガープリントから数百のエクスプロイトを自動的にテストして、どの動作をチェックするかなど、実行しているものを把握する他の方法もいくつかあります。

バージョン番号を非表示にすると、非常に少量のセキュリティが追加されます。他に何もすることがない場合は、それを行うこともできます。修正すべき実際のセキュリティ問題がある限り、それらに時間を費やしてください。

最後に、バージョン番号を公開するではないセキュリティの構成ミスのケース。ツールがそれを報告している場合は、上流のバグを報告して、ツールを修正できるようにします。

11
Tom

結局、それを隠すことは、あいまいさによるセキュリティです。

これはしばしば、見当違いで役に立たない振る舞いとして悪評が高くなります。

ITS OWNで使用し、ターゲット攻撃に対して使用した場合、どちらになりますか。

それはまだターゲットを探している誰かによってあなたがそもそもターゲットにされていない可能性を減らすことによって「適切な」セキュリティ対策を強化することができます。

リスクを最小限に抑えます。

「適切な」セキュリティは、あなたの行動が合法であることを確認することのようなものであり、あいまいさによるセキュリティは、あなたが法律について誤っている場合に不必要な警察の注意を集めないことを確認することのようなものです。

0
rackandboneman

これが重複する質問であるかどうかは100%わかりません。そのようにマークする必要がある場合は、modを実行してください。ただし、この特定の投稿「 XSS脆弱性のない基本バージョンのjQueryはありますか 」のアドバイスは、あなたのクライアントのための問題。

一般的な質問に対処する際に評価する必要がある主な要因の1つは、提案されたセキュリティソリューションがクライアントにとって優れたROIであるかどうかです。セキュリティポリシーに例外を記述したり、返されたバージョン番号を削除するコードを実装したり(または、コメント投稿者がjQueryを破棄する可能性があることに注意して)、バージョン番号を公開するリスクを軽減する価値はありますか?多くの場合それはそうではありませんが、他の場合はそうであり、それはすべて個々の状況に依存します。ただし、使用しているバージョンが cvedetails または NIST National Vulnerability Database のようなものを使用してまだ危険にさらされていないことを確認する必要があります。

Bootstrapが報告されない理由については、スキャナー(あなたが言及しなかった)と評価に使用しているテストにある可能性が高いです。 OWASP Security Misconfiguration これも脆弱性と見なされる可能性があり、同じ理由で対処すべき/すべきではありません。情報を公開することは、潜在的な攻撃者に調査を実施し、潜在的に脆弱性を特定するための別のデータポイントを与えることになります。

0
jfran3