先日の記事で取り上げたMagento2.3.4ですが、2.3.3-p1の内容を確認していたところ同じ内容が入っていることに気が付きました。
何も考えずに2.3.3のユーザーが2.3.3-p1にアップデートしてしまうと、障害が起きる恐れがあると思い、1系のパッチも含めて調査することにしました。

再確認:今回のアップデートに含まれる修正

最も正確な情報はAdobeのサイトを見ることです。最近ようやく日本語化された公式記事が出るようになったので、英語が苦手な方にも親切になりました。

Adobeセキュリティ速報

この記事によると、2系にある脆弱性と1系の脆弱性は同じもののように書かれています。

1系のセキュリティパッチを確認

以前より場所がわかりにくくなっていますが、Magento公式サイトからセキュリティパッチをダウンロードします。

ダウンロードできたら、適当なテキストエディタでファイルを開き、中身を確認します。
修正内容は概ね160行目前後から始まりますが、全部で90行程しかありません。
要約すると以下の修正が入っていることがわかります。

  • メディアアップローダーでURLパラメータを含まないようにしている
  • 値チェック処理のパターンが増えた
  • 管理画面ページ用に「noindex, nofollow」が追加された

公式発表の脆弱性では・・・?

前述の公式発表では、

  1. 保存されたクロスサイトスクリプティングが2件
  2. 信頼されないデータのデシリアライズが1件
  3. パストラバーサルが1件
  4. セキュリティバイパスが1件
  5. SQLインジェクションが1件

となっています。
1系に対する修正は全部に当てはまりそうな気もしますが、今ひとつはっきりしません。
少なくとも巨大な修正ではないので、早めに適用したほうがよいでしょう。

2.3.3-p1の影響範囲はどの程度か

Magento2.3.3の環境を2.3.3-p1にアップデートし、変更されたコードを確認したところ、Magento本体のコードで変更されているのは162ファイルほどでした。
(Magento全体のファイル数からすると大した数ではありません)
セキュリティパッチ版、といって差し支えないレベルの修正と言って良いでしょう。
2.3.2と2.3.2-p2のときも同様だったので、今後も同じような規模の修正が提供されると思われます。

メールテンプレートの仕様変更はどの程度影響するか

レイアウトアップデート機能については、使っていないサイトにとっては正直あまり影響しない話です。
ヘビーに活用されているサイトの場合は影響が大きいので、定義内容をXMLに書き出して移行時に設定変更をする必要性に迫られますが、メールテンプレートほど対象は多くないでしょう。

それに対し、メールテンプレートの影響範囲は無視できない恐れがあります。
警戒は重要ですが、どの程度警戒すれば良いものでしょうか。

互換性維持のために新しく追加された項目

2.3.3-p1あるいは2.3.4を適用すると、データベースのemail_templateテーブルとnewsletter_templateに新しい列「is_legacy」が加わります。
この列は対象のメールテンプレートが2.3.3以前の形式であることを示すもので、この列の値が1であるものは従来どおりの表記が使えることを意味しています。

アップデート前からあるテンプレートはそのまま利用可

email_templateやnewsletter_templateテーブルを見ると、アップデート前からあるテンプレートについては「is_legacy=1」となっています。
つまり、従来どおりのテンプレート表記が使える状態であることがわかります。
互換性が維持されているということは、慌ててテンプレートを書き直さなくても良い、ということです。

ただし、新しく作成するテンプレートは新しい表記を使用しなければならなりません。よって以下の確認がアップデート前に必要です。

  • サードパーティ製のエクステンションが定義するテンプレートは新しい表記に対応しているか

対応していない場合は、新しいバージョンを手に入れるなどの対応が必要になります。

2.3.3-p1と2.3.4の変更は過剰に恐れる必要はない

きちんと本番投入前に試験をする必要はありますが、標準状態に近ければ近いほど、今回の変更を恐れる必要性は下がります。
逆にいろいろなベンダーのエクステンションを導入していたり、独自実装による機能拡張を多く行っている場合には、入念なテストが必要です。
(別段これはMagentoに限った話ではありませんし、今に始まった話でもありません)

とはいえ何も知らないでアップデートをすると、思わぬ罠にはまる恐れはあります。
きちんと検証を行ってから反映するようにすれば、過剰に恐れることもないでしょう。