MagentoはSUPEE-9652
、Magento 1.x CEおよびEE用のセキュリティパッチをリリースしました
このセキュリティ更新プログラムを適用した後に起こりうる問題と、このセキュリティ更新プログラムの新しい変更点を知りたいだけです。
MagentoはSUPEE-9652
、Magento 1.x CEおよびEE用のセキュリティパッチをリリースしました
このセキュリティ更新プログラムを適用した後に起こりうる問題と、このセキュリティ更新プログラムの新しい変更点を知りたいだけです。
回答:
これは非常に小さなパッチです。差分は次のとおりです。
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つのこと:
app/etc/applied.patches.list
するだけで少し奇妙に感じます。(ソース:https : //twitter.com/JohnHughes1984/status/829050203139358720)対応するMagento CE 1.9.3.2の新しいリリースには、著作権コメント年の更新(2016年から2017年)も含まれているため、Magentoのほぼすべてのファイルが更新され、差分が巨大に見えます
"example"@example.com
技術的に危険であるかどうかに関係なく、ローカル部分が引用符で囲まれているすべての電子メール、つまりフォームアドレスをブロックするだけです。この種の電子メールを使用する合法的なストアがある場合、私はかなり驚いていますが、情報をケース内で利用できるようにしたかったです。
アップグレードのための小さなヒント。新しいバージョンを既存のインストールにコピーした後、実行git diff -w --stat=400 | grep -v " 2 +”
して、著作権表示の変更以外の変更を含む差分をすばやく確認します。
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();
}