Magento đã phát hành bản vá bảo mật của mình SUPEE-9652
, cho Magento 1.x CE và EE
Tôi chỉ muốn biết những vấn đề có thể xảy ra sau khi áp dụng bản vá bảo mật này và những thay đổi mới trong bản vá bảo mật này là gì?
Magento đã phát hành bản vá bảo mật của mình SUPEE-9652
, cho Magento 1.x CE và EE
Tôi chỉ muốn biết những vấn đề có thể xảy ra sau khi áp dụng bản vá bảo mật này và những thay đổi mới trong bản vá bảo mật này là gì?
Câu trả lời:
Đây là một bản vá siêu nhỏ, đây là khác biệt:
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) {
Tuy nhiên, Peter O'Callaghan (một và duy nhất) dường như đã tìm thấy một lỗi. Anh ấy nhẹ nhàng chia sẻ chi tiết với tôi và nói rằng tôi có thể chia sẻ nó với bạn ở đây vì vậy đây là :
Tốt nhất tôi có thể nói giá trị của
$this->params
ý chí sẽ luôn được thêm tiền tố-f
vào thời điểm xác thực đã được thêm vào (nó được chuyển vào hàm tạo tại điểm đường dẫn trả lại được thêm vào). Do đó, tại thời điểm nó được chuyển sang xác thực, nếu tôi đã định cấu hình e-mail của mìnhcontact@me.com
, giá trị thực sự được xác thực là-fcontact@me.com
, có vẻ như đó là một sự thay đổi so với ý định rằng điều này xảy ra để xác thực như một địa chỉ email. Nếu địa chỉ e-mail của tôi là"example"@example.com
mặc dù, điều này sẽ trở thành-f"example"@example.com
, sẽ không xác nhận. Ngẫu nhiênstr_replace
dường như hoàn toàn dư thừa trong vấn đề này do AFAIK chỉ có thể sử dụng khoảng trắng cùng với dấu ngoặc kép và e-mail có dấu ngoặc kép sẽ không hợp lệ với-f
tiếp đầu ngữ. Trong thực tế, nếu không có tiền tố ở đó, thì str numplace và xác thực sẽ không hữu ích bởi vì"foo bar"@example.com
và"foobar"@example.com
cả hai đều hợp lệ, vì cái sau không bao giờ được gán cho bất cứ thứ gì sau khi thay thế, e-mail vẫn sẽ được gửi bằng cách sử dụng trước giá trị, có lẽ vẫn còn dễ bị tổn thương.
Hai điều khác cần ghi nhớ:
app/etc/applied.patches.list
nó cảm thấy một chút kỳ lạ. (nguồn: https://twitter.com/JohnHughes1984/status/829050203139358720 )Bản phát hành mới tương ứng của Magento CE 1.9.3.2 cũng bao gồm bản cập nhật năm nhận xét bản quyền (từ năm 2016 đến 2017), vì vậy hầu như mọi tệp của Magento đã được cập nhật và khác biệt trông rất lớn
"example"@example.com
địa chỉ mẫu, bất kể chúng có nguy hiểm về mặt kỹ thuật hay không. Tôi sẽ khá ngạc nhiên nếu có bất kỳ cửa hàng hợp pháp nào sử dụng loại e-mail này, nhưng muốn có thông tin trong trường hợp.
Mẹo nhỏ để nâng cấp; sau khi sao chép phiên bản mới qua cài đặt hiện tại của bạn, hãy chạy git diff -w --stat=400 | grep -v " 2 +”
để nhanh chóng thấy các khác biệt có chứa nhiều thay đổi hơn là chỉ thay đổi thông báo bản quyền.
Bản vá bảo mật 9652 chỉ ảnh hưởng đến tệp sau:
/lib/Zend/Mail/Transport/Sendmail.php
Đối với những người như tôi, những người tự hỏi phải làm gì khi không có quyền truy cập SSH: chỉnh sửa tệp /lib/Zend/Mail/Transport/Sendmail.php
từ dòng 122 trở đi, thay thế dòng này:
set_error_handler(array($this, '_handleMailErrors'));
$result = mail(
$this->recipients,
$this->_mail->getSubject(),
$this->body,
$this->header,
$this->parameters);
restore_error_handler();
Với cái này:
// 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();
}