Magento发布了SUPEE-9652
针对Magento 1.x CE和EE的安全补丁
我只想知道应用此安全补丁后可能出现的问题,并且此安全补丁中有哪些新变化?
Magento发布了SUPEE-9652
针对Magento 1.x CE和EE的安全补丁
我只想知道应用此安全补丁后可能出现的问题,并且此安全补丁中有哪些新变化?
Answers:
这是一个非常小的补丁,这是差异:
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
由于AFAIK空格只能与引号一起使用,并且带有引号的电子邮件无法通过-f
字首。事实上,如果不是因为前缀在那里,在str_replace函数和验证也没有用,因为"foo bar"@example.com
和"foobar"@example.com
这两个验证,因为后者更换后从未分配到任何东西,电子邮件仍然会采用前发价值,这可能仍然很脆弱。
还有两件事要牢记:
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();
}