Magento কার্ড স্কিমিং হল একটি Magento ওয়েবসাইটে ‘স্কিমার’ নামক খারাপ স্ক্রিপ্ট ইনজেকশনের মাধ্যমে ক্রেডিট/ডেবিট তথ্য অবৈধভাবে চুরি করার অভ্যাস। আপনি যদি একটি Magento-চালিত ওয়েবসাইটের মালিক হন তবে এই নিবন্ধটি আপনার জন্য। এখানে, আমরা আপনার জন্য আনা Magento কার্ড স্কিমিং সিকিউরিটি ইস্যুর চারপাশে আবর্তিত সমস্ত প্রয়োজনীয় বিবরণ সহ একটি ভাল সম্পদ।
এখানে, আমরা Magento কার্ড স্কিমিং কি এবং এটি Magento ওয়েবসাইটগুলিকে কীভাবে প্রভাবিত করে তা নিয়ে আলোচনা করব (ধারণার প্রমাণ সহ)। আরও, আপনি কীভাবে আপনার ওয়েবসাইটকে এই সমস্যা থেকে রক্ষা করতে পারেন সে সম্পর্কে আমরা কিছু কার্যকরী টিপস শিখব।
Magento কার্ড স্কিমিং কি?
Magento একটি PHP-ভিত্তিক ওপেন সোর্স ই-কমার্স প্ল্যাটফর্ম। এটি একটি স্ব-হোস্টেড কন্টেন্ট ম্যানেজমেন্ট সিস্টেম যা বর্তমানে অ্যাডোবের মালিকানাধীন। একটি আনুমানিক 250,000+ ওয়েবসাইটগুলি তাদের ই-কমার্স ওয়েবসাইটকে শক্তিশালী করতে Magento ব্যবহার করে৷ এই ওয়েবসাইটগুলির বেশিরভাগই ইউএস-ভিত্তিক ই-কমার্স জায়ান্টদের অন্তর্গত। সুতরাং, গ্রাহকের অভিজ্ঞতা সুরক্ষিত করার জন্য Magento এর একটি ভারী দায়িত্ব রয়েছে।
কার্ড স্কিমিং, অন্যদিকে, একটি ফিজিক্যাল কার্ড স্কিমিং ডিভাইস দ্বারা ক্রেডিট কার্ড এবং ডেবিট কার্ড থেকে তথ্য অবৈধভাবে কপি করার অভ্যাস। ম্যাজেন্টো এবং কার্ড স্কিমিং একে অপরের সাথে কীভাবে যুক্ত হয়েছিল তা এখানে।
Magento কার্ড স্কিমিং হল ওয়েব স্কিমিং এর একটি ফর্ম যেখানে হ্যাকাররা তৃতীয় পক্ষের স্ক্রিপ্টের মাধ্যমে Magento-এ অর্থপ্রদানের তথ্য চুরি করে। এই স্ক্রিপ্ট তাদের মালিকের নাম, ক্রেডিট কার্ড/ডেবিট কার্ড নম্বর, CVV নম্বর এবং মেয়াদ শেষ হওয়ার তারিখের মতো গুরুত্বপূর্ণ ব্যাঙ্কিং তথ্য চুরি করতে সক্ষম করে। হ্যাকাররা, সাধারণত এই তথ্য কালোবাজারে টাকার বিনিময়ে বিক্রি করে দেয়।
PRODSECBUG-2198 সম্পর্কে বিবরণ
PRODSECBUG-2198 সমস্যাটি প্রথম 9 নভেম্বর 2018 তারিখে রিপোর্ট করা হয়েছিল বগুড়াতে। মূলত, PRODSECBUG-2198 হল একটি দুর্বল কোড যা Magento-এ একটি SQL ইনজেকশনের অনুমতি দেয়। এই সমস্যা একজন অননুমোদিত ব্যবহারকারীকে নির্বিচারে কোড চালানোর অনুমতি দেয় যা সংবেদনশীল তথ্য ফাঁসের কারণ হতে পারে।
খুব শীঘ্রই বাগটি P1 হিসাবে চিহ্নিত করা হয়েছিল। Bugcrowd এর মতে P1 দুর্বলতা হল সেইসব দুর্বলতা যা বিশেষাধিকার বৃদ্ধির কারণ হতে পারে। এই কারণে, যেকোনো ব্যবহারকারী নিম্ন স্তরের অনুমতি থেকে প্রশাসকের অধিকারে উন্নীত করতে পারে। আরও, এটি দূরবর্তী কোড সম্পাদন, আর্থিক চুরি, ইত্যাদির অনুমতি দেয়৷ শোষণটি Magento এর নিম্নলিখিত সংস্করণগুলিকে লক্ষ্য করে:
- Magento কমার্স < 1.14.4.1
- Magento ওপেন সোর্স < 1.9.4.1
- ম্যাজেন্টো < 2.1.17
- Magento < 2.2.8
- Magento < 2.3.1
গুগল নামে স্কিমার
ম্যাজেন্টো স্কিমিংয়ের খুব সাম্প্রতিক ক্ষেত্রে, আমরা দেখেছি হ্যাকাররা একটি নকল গুগল ডোমেন ব্যবহার করে অর্থপ্রদানের বিবরণ চুরি করে। এই আক্রমণে, খারাপ জাভাস্ক্রিপ্টটি একটি ডোমেইন থেকে লোড করা হচ্ছিল – google-analytîcs.com বা xn--google-analytcs-xpb.com।
আপনি যদি সাবধানে দেখতে চান, এটি আসল গুগল ডোমেনে একটি নেমপ্লে। সুতরাং, এই স্কিমিং আক্রমণটি সংবেদনশীল অর্থপ্রদানের তথ্য আনার পদ্ধতি হিসাবে ফিশিং ব্যবহার করে। স্ক্রিপ্টটি দেখতে এরকম কিছু –
এই ক্ষেত্রে তারা স্কিমার লোড করা জাভাস্ক্রিপ্ট ব্যবহার করে ডেটা ক্যাপচার করে document.getElementsByTagName নাম দিয়ে। যদি কোনও বিকাশকারী সরঞ্জাম খোলা না থাকে তবে এই স্কিমারটি চুরি করা ডেটা নকল Google ডোমেনে প্রেরণ করে – google-analytîcs.com অথবা xn--google-analytcs-xpb.com।
যাইহোক, যখন আপনার ওয়েবসাইটে একটি বিকাশকারী টুল খোলা থাকে তখন এটি একটি অদ্ভুত আচরণ দেখায়। এটি সংক্রমণ প্রক্রিয়ার মাঝপথে সনাক্ত করে এবং বন্ধ করে দেয়। এছাড়াও, আপনি যে ব্রাউজার সফ্টওয়্যার ব্যবহার করছেন তার উপর নির্ভর করে এই আচরণ পরিবর্তিত হয়।
Magento কার্ড স্কিমিং: ধারণার প্রমাণ
এই নিরাপত্তা দুর্বলতা সম্পর্কে ধারণার একটি প্রমাণ নিম্নরূপ উল্লেখ করা হয়েছে। এটি পাইথনে লেখা এবং প্রধান জিনিস যা Magento কার্ড স্কিমিং সমস্যা সৃষ্টি করে।
- এখানে কোডটি মূলত কিছু URL এবং সেশন ডেটা সহ একটি ডামি ব্রাউজার সেশন তৈরি করে। এটি ব্রাউজার ক্লাস এবং একটি সেশন অর্জন ফাংশন ব্যবহার করে করা হয়।
- সেশনের বিবরণ সহ ব্রাউজার ক্লাসের একটি অবজেক্ট SQL ইনজেকশন ক্লাসে পাস করা হয়।
- এসকিউএল ইনজেকশনটি এখন সেশন URL-এ কিছু পেলোড ডেটা যোগ করে, একটি পণ্য তৈরি করে এবং তারপরে ওয়েবসাইটের ডাটাবেস থেকে গুরুত্বপূর্ণ বিবরণ নিয়ে আসে। ব্যাকএন্ড ডেটাতে বিশেষ সুবিধাপ্রাপ্ত অ্যাক্সেস পেতে SQL ইনজেকশন পেলোডও সংশোধন করা যেতে পারে।
- আক্রমণকারী ব্যবহারকারীর সাম্প্রতিক লেনদেন এবং ব্যাংকিং তথ্য সম্পর্কে তথ্য লাভ করে।
300+ পরীক্ষার পরামিতি সহ চূড়ান্ত Magento নিরাপত্তা চেকলিস্ট
কিভাবে শোষণ আপনার Magento ওয়েবসাইট সংক্রমিত?
Magento এর প্রায় 2 মিলিয়ন পিএইচপি লাইনের একটি বিশাল কোডবেস রয়েছে। এটি পরীক্ষা করে সমস্যা বের করা কষ্টকর হয়ে যায়। যাইহোক, যখন আমাদের নীতিগত হ্যাকারদের দল কোডটি পরীক্ষা করে, তারা ORM এবং DB ব্যবস্থাপনার জন্য দায়ী কোডগুলিতে তাদের লক্ষ্যগুলিকে সংকুচিত করে।
ম্যাজেন্টো কার্ড স্কিমিংয়ের বাগগুলি যে এলাকায় বিদ্যমান ছিল তা হল:
1. প্রস্তুতি এসকিউএলকন্ডিশন ফাংশনে
এই পাবলিক ফাংশনটি ডাটাবেস পরিচালনাকারী প্রধান ক্লাসগুলির মধ্যে একটির মধ্যে রয়েছে এবং এটিতে অবস্থিত হতে পারে
MagentoFrameworkDBAdapterPdoMysql
ফাংশন কোড নিম্নরূপ:
সমস্যা বের করা
এখন চিহ্নিত লাইন দেখে সমস্যা বোঝার চেষ্টা করি। চিহ্নিত লাইনে [1], একটি শর্ত উপনাম $conditionKeyMap ব্যবহার করে। যা একটি প্যাটার্নের সাথে যুক্ত। এটি প্রতি ‘?’ প্রতিস্থাপন করে 33 নম্বর লাইনে _prepareQuotedSqlCondition() ফাংশন ব্যবহার করে। যা প্রদত্ত মানের একটি সংস্করণ দ্বারা উপনামের ভিতরে অক্ষর 30-35 লাইনে লেখা যুক্তির উপর ভিত্তি করে। এখন নিম্নলিখিত কোড উদাহরণ বিবেচনা করুন:
<?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 নম্বর লাইনে একটি গুরুত্বপূর্ণ ভুল করা হয়েছে। “থেকে” যে প্রশ্নটি তৈরি করে সেটি বিন্যাসের জন্য আরও ব্যবহার করা হয়।
এখন যে প্রতি “?” প্রদত্ত মান দ্বারা প্রতিস্থাপিত হবে, যদি “থেকে” এর মানটিতে একটি প্রশ্ন চিহ্ন দেখা দেয়, তবে এটি “থেকে” নির্ধারিত মানের একটি উদ্ধৃত সংস্করণ দ্বারা প্রতিস্থাপিত হবে। একটি বৈধ এসকিউএল ইনজেকশন আক্রমণ করার জন্য, আক্রমণকারী নিম্নলিখিত শোষণ কোড স্থাপন করতে পারে:
<?php
$db->prepareSqlCondition(‘price’,[
‘from’ => ‘x?’
‘to’ => ‘ OR 1=1 -- -’
]);
-> $query = “price >= ‘x’ OR 1=1 -- -’’ AND price <= ’ OR 1=1 -- -’”
ছোট আকারের হওয়া সত্ত্বেও ভুলটি খুব প্রভাবশালী হতে পারে। আশ্চর্যজনক ঘটনা হল যে কোডের এই অংশটি Magento সংস্করণ 1.x থেকে রয়েছে।
আপনার Magento স্টোর সুরক্ষিত করতে চান?
আমরা সাহায্য করতে পারি!Astra হাজার হাজার Magento স্টোরকে রিয়েল টাইমে সাইবার আক্রমণ প্রতিরোধ করতে সাহায্য করেছে।
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-ভিত্তিক ফর্মগুলি ব্যবহার করে তৈরি করা হয়েছে, এটি গুরুত্বপূর্ণ যে তারা ব্যবহার করে html বিশেষ অক্ষর() $_SERVER। আর তা আক্রমণ প্রতিরোধ করার ফাংশন হল [“PHP_SELF”]।
- একটি ফায়ারওয়াল ইনস্টল করুনঃ একটি অ্যাপ্লিকেশন ফায়ারওয়াল ইনস্টল করা আপনার ওয়েবসাইটের নিরাপত্তা বাড়ানোর একটি ভিন্ন উপায়। Astra এর ফায়ারওয়াল আপনার ওয়েবসাইটের জন্য একটি ক্রমাগত পর্যবেক্ষণ সিস্টে। আর এটি 24*7 আপনার ওয়েবসাইটে আসা হুমকি সনাক্ত করে এবং ব্লক করে। তদুপরি, প্রতিটি প্রচেষ্টার আক্রমণের সাথে এটি বিকশিত হতে থাকে। যা পরবর্তীটির জন্য আরও ভালভাবে কনফিগার করা হয়।
নিবন্ধটি সহায়ক খুঁজে পেয়েছেন? Facebook, Twitter, LinkedIn এ আপনার বন্ধুদের সাথে শেয়ার করুন।