SecurityPatch 9652:SUPEE-9652の適用後に起こりうる問題


16

MagentoはSUPEE-9652Magento 1.x CEおよびEE用のセキュリティパッチをリリースしました

このセキュリティ更新プログラムを適用した後に起こりうる問題と、このセキュリティ更新プログラムの新しい変更点を知りたいだけです

回答:


25

これは非常に小さなパッチです。差分は次のとおりです。

diff --git lib/Zend/Mail/Transport/Sendmail.php lib/Zend/Mail/Transport/Sendmail.php
index b24026b..9323f58 100644
--- lib/Zend/Mail/Transport/Sendmail.php
+++ lib/Zend/Mail/Transport/Sendmail.php
@@ -119,14 +119,19 @@ class Zend_Mail_Transport_Sendmail extends Zend_Mail_Transport_Abstract
                 );
             }

-            set_error_handler(array($this, '_handleMailErrors'));
-            $result = mail(
-                $this->recipients,
-                $this->_mail->getSubject(),
-                $this->body,
-                $this->header,
-                $this->parameters);
-            restore_error_handler();
+            // Sanitize the From header
+            if (!Zend_Validate::is(str_replace(' ', '', $this->parameters), 'EmailAddress')) {
+                throw new Zend_Mail_Transport_Exception('Potential code injection in From header');
+            } else {
+                set_error_handler(array($this, '_handleMailErrors'));
+                $result = mail(
+                    $this->recipients,
+                    $this->_mail->getSubject(),
+                    $this->body,
+                    $this->header,
+                    $this->parameters);
+                restore_error_handler();
+            }
         }

         if ($this->_errstr !== null || !$result) {

しかし、Peter O'Callaghan(唯一の)がバグを見つけたようです。彼は詳細を穏やかに私と共有し、ここであなたと共有できると言ったので、ここにあります:

検証が追加された時点での値$this->paramsが常に接頭辞 -fになります(戻りパスが追加された時点でコンストラクターに渡されます)。したがって、検証に渡された時点で、電子メールを構成して contact@me.comいる場合、実際に検証されている値はであり-fcontact@me.com、これが偶然電子メールアドレスとして検証されるという意図よりもまぐれのようです。"example"@example.comただし、私の電子メールアドレスがの場合、これはになり-f"example"@example.com、検証されません。ちなみに、str_replaceスペースは引用符と組み合わせてのみ使用でき、引用符付きの電子メールは検証されないため、この問題では完全に冗長なようです-fプレフィックス。実際にはそれがあるため、プレフィックスは、str_replaceと検証が有用ではないそこにいるためではなかった場合"foo bar"@example.com"foobar"@example.com後者のため、交換後に何も割り当てられることはありません、両方の検証、電子メールはまだ元を使用して送信されますおそらく脆弱であると思われる価値。

留意すべき他の2つのこと:

  • パッチのCEバージョンには、バージョンとして「EE_1.14.3.1」もリストされています。それは適用には影響せず、間違ったバージョンを追加app/etc/applied.patches.listするだけで少し奇妙に感じます。(ソース:https : //twitter.com/JohnHughes1984/status/829050203139358720
  • メール設定を無効にしている限り(こちらを参照してください:https : //magento.com/security/news/new-zend-framework-1-security-vulnerability)、これで急ぐ必要はありませんが、これは、新しいパッチをインストールする必要があるためです(それらが互いに重なり合うため)。

サイドノート

対応するMagento CE 1.9.3.2の新しいリリースには、著作権コメント年の更新(2016年から2017年)も含まれているため、Magentoのほぼすべてのファイルが更新され、差分が巨大に見えます


2
「メール設定が無効になっている限り」管理パネルメイトのどの設定ですか?コーヒーを飲まなくてもSys-> Configでダイビングできるようにするために:)
ルークロジャース

2
@LukeRodgersは、詳細については、このブログ記事を参照してください。magento.com/security/news/...
ラファエルデジタルPianismで

1
「著作権コメント年の更新(2016年から2017年)で、Magentoのほぼすべてのファイルが更新されました」それは真実です@Digital Pianismの@Raphael
Amit Bera

1
@Iconパッチファイル名を確認すると、すでにv2である^^なので、おそらくv3のETAはまだありません
Digital PianismのRaphael

1
記録に関しては、正当な使用とAFAIKに(提出されたペイロードを見ることなく)影響を与えることはほとんどありません(すべてのケースでの搾取を防ぎます(ただし、実際の理由は意図的ではないか、非常に奇妙な選択のようです)。"example"@example.com技術的に危険であるかどうかに関係なく、ローカル部分が引用符で囲まれているすべての電子メール、つまりフォームアドレスをブロックするだけです。この種の電子メールを使用する合法的なストアがある場合、私はかなり驚いていますが、情報をケース内で利用できるようにしたかったです。
ピーターオキャラハン

8

アップグレードのための小さなヒント。新しいバージョンを既存のインストールにコピーした後、実行git diff -w --stat=400 | grep -v " 2 +”して、著作権表示の変更以外の変更を含む差分をすばやく確認します。



1

SSHアクセスなしで何をすべきかを知りたい私のような人のために:ファイル/lib/Zend/Mail/Transport/Sendmail.phpを編集します。

122行目以降は、これを置き換えます。

        set_error_handler(array($this, '_handleMailErrors'));
        $result = mail(
            $this->recipients,
            $this->_mail->getSubject(),
            $this->body,
            $this->header,
            $this->parameters);
        restore_error_handler();

これとともに:

        // Sanitize the From header
        if (!Zend_Validate::is(str_replace(' ', '', $this->parameters), 'EmailAddress')) {
            throw new Zend_Mail_Transport_Exception('Potential code injection in From header');
        } else {
            set_error_handler(array($this, '_handleMailErrors'));
            $result = mail(
                $this->recipients,
                $this->_mail->getSubject(),
                $this->body,
                $this->header,
                $this->parameters);
            restore_error_handler();
        }

4
hm、SSHアクセスのない人向け。ローカルでパッチを適用し、パッチを適用したファイルをアップロードする必要がある場合があります。;)
infabo

SSHアクセスなしのパッチ適用に関する完全なガイダンスについては、こちらの回答を参照してください:magento.stackexchange.com/a/63936/3326
7ochem
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.