ম্যাজেন্টো তার সিকিউরিটি প্যাচ প্রকাশ করেছে SUPEE-9652
, ম্যাজেন্টো 1.x সিই এবং ইই এর জন্য
আমি কেবল জানতে চাই যে এই সুরক্ষা প্যাচটি প্রয়োগ করার পরে সম্ভাব্য সমস্যাগুলি কী এবং এই সুরক্ষা প্যাচে নতুন পরিবর্তনগুলি কী কী?
ম্যাজেন্টো তার সিকিউরিটি প্যাচ প্রকাশ করেছে SUPEE-9652
, ম্যাজেন্টো 1.x সিই এবং ইই এর জন্য
আমি কেবল জানতে চাই যে এই সুরক্ষা প্যাচটি প্রয়োগ করার পরে সম্ভাব্য সমস্যাগুলি কী এবং এই সুরক্ষা প্যাচে নতুন পরিবর্তনগুলি কী কী?
উত্তর:
এটি একটি অতি ক্ষুদ্র প্যাচ, এখানে ভিন্নতা রয়েছে:
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) {
তবে, পিটার ও'ক্যালাহান (একমাত্র এবং কেবলমাত্র) একটি বাগ খুঁজে পেয়েছে বলে মনে হচ্ছে। তিনি আলতো করে আমার সাথে বিশদগুলি ভাগ করে নিলেন এবং বলেছিলেন যে আমি এটি এখানে আপনার সাথে ভাগ করে নিতে পারি তাই এখানে এটি রয়েছে :
সেরা আমি বলতে পারি যে মূল্যটি
$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
উভয়ই বৈধতাযোগ্য , যেহেতু প্রতিস্থাপনের পরে কোনওটি কখনই নির্ধারিত হয় না, ই-মেইলটি এখনও প্রাক্তন ব্যবহার করে প্রেরণ করা হত মান, যা সম্ভবত এখনও দুর্বল হবে।
মনে রাখতে হবে অন্য দুটি বিষয়:
app/etc/applied.patches.list
এটিতে ভুল সংস্করণ যুক্ত করে কিছুটা বিশ্রী মনে হয়। (উত্স: https://twitter.com/JohnHughes1984/status/829050203139358720 )ম্যাজেন্টো সিই এর সাথে সম্পর্কিত নতুন প্রকাশের সাথে 1.9.3.2 এ কপিরাইট মন্তব্য বছরের আপডেটও অন্তর্ভুক্ত করা হয়েছে (২০১ to থেকে ২০১ from পর্যন্ত) সুতরাং ম্যাজেন্টোর প্রায় প্রতিটি ফাইল আপডেট করা হয়েছে এবং ভিন্নতা দেখতে বিশাল দেখায়
"example"@example.com
ফর্ম ঠিকানাগুলি তারা প্রযুক্তিগতভাবে বিপজ্জনক কিনা তা বিবেচনা না করেই। এই ধরণের ই-মেইল ব্যবহার করে যদি কোনও বৈধ স্টোর থাকে তবে আমি বেশ অবাক হব, তবে ক্ষেত্রে তথ্যটি পেতে চাই।
আপগ্রেড করার জন্য ছোট্ট টিপ; আপনার বিদ্যমান git diff -w --stat=400 | grep -v " 2 +”
ইনস্টলটিতে নতুন সংস্করণটি অনুলিপি করার পরে, কেবলমাত্র কপিরাইট নোটিশ পরিবর্তনের চেয়ে আরও বেশি পরিবর্তন রয়েছে এমন ডিফগুলি দেখতে দ্রুত চালান ।
সুরক্ষা প্যাচ 9652 কেবলমাত্র নিম্নলিখিত ফাইলটিকে প্রভাবিত করে:
/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();
}