4半期ごとの定例アップデートとして、Magento2.3.5がリリースされました。
前回の2.3.4のリリースが1月28日だったので、ほぼ3ヶ月周期でリリースされたことになります。

2.3.5で修正された脆弱性は13件

Magento2系のアップデートで最も気になるのは、毎回の脆弱性対応です。
今回のリリースでは13件の脆弱性が修正されています。詳細は下記のURLで確認できます。

Adobe Security Bulletin

このうち6件は緊急度が最も高くなっていて、コマンドインジェクションや認証の回避などが修正されています。
すでにセキュリティ関係のニュースサイトで取り上げられていますので、目にされた方も多いと思います。

2.3.5で機能的に変更を受けた点

Magento2.3.5ではこれまでのバージョンとは異なる挙動をするようになった点が2つあります。
知らずにアップデートするとトラブルになる恐れがありますので、注意しましょう。

URLにSIDがつかなくなった

これまでMagentoでは、ストアビューなどを移動する際にURLに「SID」という値を付与していました。
この値はドメイン名が異なっていてもセッションを保持させるために使われていたものですが、2.3.5および2.3.4-p1からは廃止となっています。

複数のウェブサイトやストアビューを1つのMagentoインストールで運用されている場合、この変更の影響を強く受ける可能性があります。
2.3.4以前のバージョンからアップデートされる際は、検証環境で十分にテストをされることを強くおすすめします。

Content Security Policyに対応した

2.3.5以降のMagentoでは、Content Security Policyをreport-onlyモードで動作させる機能が追加されました。
Content Security Policyを定めることによって、意図しない外部サイトのJavascriptや画像の読み込みを回避できるほか、外部サイトにデータが送信されることを防止できます。

ただし、Content Security Policyは事前に定義した対象だけを許可するホワイトリスト方式となっているため、未定義の外部リソースはすべて拒否されてしまいます。
現在はreport-onlyモードで動作していますので、動作に悪影響を及ぼすことはありません。標準で未定義の外部リソースが拒否されるようになる前に、早めに対応を進めておくと良いでしょう。

report_uriが未指定だとエラーが出る

Content Security Policyが有効になっている環境下ではブラウザのコンソールにエラーが表示されます。
これはContent Security Policyがreport-onlyモードのときだけ起きる現象で、report_uriが未指定の場合に起きます。

この問題は、report_uriを指定することで解消できますが、現時点の実装ではreport_uriを設定する画面が管理画面上にありません。
対処法としては、

bin/magento config:set csp/mode/storefront/report_uri "任意のURL"

を実行するか、データベースのcore_config_dataテーブルにデータを追加するかどちらかの対処が必要です。

2.3.5で改善された点

脆弱性の修正以外には以下のような改善が加えられています。

  • ElasticSearchの対応バージョンが7.5まで引き上げられた
  • Symfonyコンポーネントのアップデート
  • Zend FrameworkがLaminas Projectに置き換わった
  • customer sectionデータのパフォーマンス改善
  • Redis使用時のデータ転送量削減

Zend FrameworkのLaminas Projectへの置き換えは、Zend Frameworkのメンテナンス終了に伴うものです。
一定期間は従来どおりのコードで動作するようですが、早いうちにLaminas Projectを使用する形にエクステンションの書き換えが必要です。

この先のリリース予定

Magento開発チームの方向性として、2.4系の開発に注力するとされています。
2.3系はこの先脆弱性や致命的なバグの修正にとどまる見通しで、秋頃リリースされる2.4系に新機能が盛り込まれていく模様です。

2.3系を使われている方は、2.3.5が半年程度続く予定なので、今のうちにアップデートしておくと良いでしょう。