脆弱性を修正するには、バージョン2.7.38、2.8.31、3.2.14、3.3.13、3.4-BETA5、または4.0-BETA5にアップグレードする必要があります。
そして、脆弱性自体についてもう少し:
1. CSRF保護は、HTTPとHTTPSに異なるトークンを使用しません
このため、トークンはHTTPを使用してMITM攻撃(中間者)を受け、HTTPSのコンテキストで同じトークンを使用してCSRF攻撃を実行できます。
脆弱性の詳細: リンク
2.オープンハンドラーリダイレクトの脆弱性
DefaultAuthenticationSuccessHandlerまたはDefaultAuthenticationFailureHandlerは_target_pathパラメーターの内容を取得してリダイレクトを生成しますが、パス自体が外部ドメインの絶対URLであるかどうかを確認しないため、リダイレクトの脆弱性が生じます。
オープンリダイレクトの脆弱性は、Symfonyを搭載したサーバーにとってそれほど危険ではありませんが、たとえば、効果的なフィッシング攻撃をインストールするために使用できます。
脆弱性の詳細: リンク
3. Intlバンドルのパスの境界を越える
Intlコンポーネントには、ローカルファイルシステムからリソースを読み取るために使用されるさまざまなパッケージリーダーが含まれています。 これらのクラスのread()メソッドは、 パスとロケールを使用して言語(多言語アプリケーションで動作することを意味します)とデータを取得するバンドルを決定します。
ロケール引数の値は通常、信頼できないユーザー入力(URLパラメーターなど)から抽出されます。 攻撃者はこの引数を使用して、ポイントツーポイントスラッシュ攻撃(../../)を使用して任意のディレクトリに移動できます。
脆弱性の詳細: リンク
4.ダウンロード可能なファイルとしてPOST要求を発行する機能
ユーザーがフォームを送信すると、FormコンポーネントのrequestコンポーネントクラスはPOSTデータ(単純なPHPでは$ _POST配列と呼ばれる)を組み合わせ、ファイル(単純なPHPでは$ _FILES配列と呼ばれる)を単一の配列に読み込みます。 この大きな配列はデータを形成し、それがフォームにアタッチされます。 この時点では、送信されたPOSTデータとアップロードされたファイルに違いはありません。
ユーザーは処理されたHTTPリクエストを送信できます。FileType値は通常のPOSTデータとして送信され、サーバー側のファイルへのパスとして解釈できます(たとえば、 file:/// etc / passwd )。 アプリケーションがFileTypeに渡された値に関して追加のチェックを実行しない場合、サーバー上のこのファイルのコンテンツが攻撃される可能性があります。
脆弱性の詳細: リンク
あとがき:
さいわい、バージョン2.7以降、Symfonyには既知の脆弱性に対する統合されたアナライザーがあり、簡単なコンソールコマンドで、インストールされているすべての依存関係をチェックします。
bin/security-checker security:check
私たちの場合、コマンドはブランチを切り替えるときに自動的に実行されたため、脆弱性をほとんどすぐに認識し、実際に、発見された脆弱性を読むよりも速くそれらを閉じるのに役立ちました。
何らかの理由でコンソールでこのコマンドを使用できない場合は、 公式Webサイトで依存関係をいつでも確認できます。