Drupal core - Critical - Arbitrary PHP code execution - SA-CORE-2022-014

Critical
コア

2022/7/20(日本時間:GMT+9)、Drupalコアにおいて脆弱性が発見されました。
インストールしているDrupalバージョンを確認のうえ、アップデートをおすすめします。

●プロジェクト :Drupal core
●投稿日 :2022/7/20
●セキュリティリスク :Critical
●脆弱性 :Arbitrary PHP code execution

==概要==

Drupal coreは、アップロード時に危険な拡張子を持つファイル名をサニタイズすると共に(参照:SA-CORE-2020-012)、ファイル名から先頭および末尾のドットを取り除いてサーバー設定ファイルがアップロードされるのを防ぎます(参照:SA-CORE-2019-010)。

しかし、これまでこの2つの脆弱性に対する保護機能が正確に連携していませんでした。
その結果、サイトがhtaccess拡張子を持つファイルのアップロードを許可するように設定されていた場合、これらのファイルのファイル名は適切にサニタイズされません。
そのため、Drupal coreのデフォルトの .htaccessファイルが提供する保護機能を迂回することを許し、Apacheウェブサーバ上でリモートコードが実行される可能性があります。

この問題は、拡張子としてhtaccessを許可するにはフィールド管理者がファイルフィールドを明示的に設定しなければならないようにすること(制限付きパーミッション)、または許可されたファイルアップロードを無効化する貢献モジュールやカスタムモジュールを必要とするようにすることにより、軽減されます。

==解決方法==
Drupal 9.4を使用中の場合はDrupal 9.4.3へアップデートしてください。
Drupal 9.3を使用中の場合はDrupal 9.3.19へアップデートしてください。
Drupal 9の9.3.x以前のバージョンは全てサポートを終了しており、セキュリティ対策措置を受けられません。

Drupal 8は完全にサポートが終わっていますので、ご注意ください。
Drupal 7 coreには影響がありません。

ファイルディレクトリの.htaccessがサブディレクトリで上書きまたは無効化されていないことの監査

WebサーバーがAllowOverride を使ってApache httpdを利用している場合、ファイルディレクトリ内とサブディレクトリ内をチェックして全ての.htaccessファイルの存在が意図されたものであることを確認する必要があります。
公開ファイルディレクトリとプライベートファイルディレクトリ、両方のルートで次のコマンドを実行することにより、.htaccessという名前のファイルを検索することができます。

find ./ -name ".htaccess" -print

Drupalは、公開ファイルディレクトリのルートに以下のような.htaccessファイルを自動的に作成します:

# Turn off all options we don't need.
Options -Indexes -ExecCGI -Includes -MultiViews

# Set the catch-all handler to prevent scripts from being executed.
SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
<Files *>
  # Override the handler again if we're run later in the evaluation list.
  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
</Files>

# If we know how to do it safely, disable the PHP engine entirely.
<IfModule mod_php7.c>
  php_flag engine off
</IfModule>
<IfModule mod_php.c>
  php_flag engine off
</IfModule>

所定のファイルディレクトリの正しい.htaccessの設定に関しては、システム管理者にご確認ください。

==元記事==
https://www.drupal.org/sa-core-2022-014