Magento ได้เปิดตัวแพทช์รักษาความปลอดภัยSUPEE-9652
สำหรับMagento 1.x CE และ EE
ฉันต้องการรู้ว่าปัญหาที่เป็นไปได้หลังจากใช้โปรแกรมปรับปรุงความปลอดภัยนี้คืออะไรและอะไรคือการเปลี่ยนแปลงใหม่ในโปรแกรมปรับปรุงความปลอดภัยนี้
Magento ได้เปิดตัวแพทช์รักษาความปลอดภัยSUPEE-9652
สำหรับMagento 1.x CE และ EE
ฉันต้องการรู้ว่าปัญหาที่เป็นไปได้หลังจากใช้โปรแกรมปรับปรุงความปลอดภัยนี้คืออะไรและอะไรคือการเปลี่ยนแปลงใหม่ในโปรแกรมปรับปรุงความปลอดภัยนี้
คำตอบ:
มันเป็น patch เล็ก ๆ นี่คือความแตกต่าง:
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
ก็ดูเหมือนว่ามีความบังเอิญมากกว่าความตั้งใจที่จะตรวจสอบว่าเป็นที่อยู่อีเมล หากที่อยู่อีเมลของฉันคือคำนำหน้า ในความเป็นจริงถ้าไม่ใช่เพราะคำนำหน้าอยู่ที่นั่น str_replace และการตรวจสอบจะไม่เป็นประโยชน์เพราะและ ทั้งคู่ตรวจสอบตั้งแต่หลังไม่เคยกำหนดให้กับสิ่งใดหลังจากการแทนที่อีเมลจะยังคงถูกส่งโดยใช้อดีต มูลค่าซึ่งน่าจะยังคงมีความเสี่ยง"example"@example.com
ต้องนี่จะกลายเป็น-f"example"@example.com
สิ่งที่ไม่ผ่านการตรวจสอบ อนึ่งstr_replace
ดูเหมือนว่าซ้ำซ้อนอย่างสมบูรณ์ในเรื่องนี้เนื่องจาก AFAIK สามารถใช้พื้นที่ร่วมกับเครื่องหมายคำพูดได้เท่านั้นและอีเมลที่มีเครื่องหมายคำพูดจะไม่ตรวจสอบกับ-f
"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 ได้รับการปรับปรุงและ diff ดูใหญ่มาก
"example"@example.com
ที่อยู่ของฟอร์มโดยไม่คำนึงว่าพวกเขาเป็นอันตรายทางเทคนิคหรือไม่ ฉันค่อนข้างประหลาดใจถ้ามีร้านค้าที่ถูกกฎหมายที่ใช้อีเมลประเภทนี้ แต่ต้องการข้อมูลที่มีอยู่ในกรณี
ทิปเล็กน้อยสำหรับการอัพเกรด; หลังจากคัดลอกเวอร์ชันใหม่ไปยังการติดตั้งปัจจุบันของคุณแล้วให้เรียกใช้git diff -w --stat=400 | grep -v " 2 +”
เพื่อดู diffs ที่มีการเปลี่ยนแปลงมากกว่าเพียงแค่การแจ้งให้ทราบลิขสิทธิ์เท่านั้น
Security Patch 9652 มีผลกับไฟล์ต่อไปนี้เท่านั้น:
/lib/Zend/Mail/Transport/Sendmail.php
สำหรับคนอย่างฉันที่สงสัยว่าจะทำอย่างไรหากไม่มีการเข้าถึง 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();
}