আমাদের আগের ব্লগে আমরা বুকলি প্লাগইনের (ওয়ার্ডপ্রেস অনলাইন বুকিং ও শিডিউলিং প্লাগইন – বুকলি) একটি XSS দুর্বলতা নিয়ে আলোচনা করেছিলাম। আজ আমরা একই প্লাগইনের উপর আমাদের গবেষণার সময় সামনে আসা আরেকটি XSS দুর্বলতা নিয়ে বিস্তারিত আলোচনা করব।
আমাদের দল ২০২৩ সালের মার্চ মাসে এই দুর্বলতা আবিষ্কার করে। এটি আবিষ্কারের পর, আমরা তাৎক্ষণিকভাবে দায়িত্বশীল প্রকাশ পদ্ধতি শুরু করি যাতে এই দুর্বলতাটি দ্রুত সমাধান করা যায়। এই দুর্বলতার জন্য নির্ধারিত CVE শনাক্তকারী হল CVE-2023-2023, এবং এটি ২০২৩ সালের মে মাসে সফলভাবে প্যাচ করা হয়েছিল।
এই ব্লগ পোস্টে, আমরা Bookly প্লাগইনে পাওয়া দুর্বলতার মূল কারণটি বিস্তারিতভাবে বিশ্লেষণ করব। এছাড়াও, আমরা এই সমস্যাটি কার্যকরভাবে প্রশমিত করার জন্য প্রকাশিত প্যাচটি পরীক্ষা করব।
বিশ্লেষণ CVE–2023-1159 – পরিষেবা শিরোনামের মাধ্যমে প্রমাণীকরণকৃত (অ্যাডমিন+) সংরক্ষিত ক্রস-সাইট স্ক্রিপ্টিং:
আমাদের গবেষণায় "সার্ভিস টাইটেল" ক্ষেত্রের সাথে সম্পর্কিত বুকলি প্লাগইনে একটি দুর্বলতা চিহ্নিত করা হয়েছে। অপর্যাপ্ত ইনপুট স্যানিটাইজেশন ব্যবস্থার কারণে এই দুর্বলতা প্লাগইনটিকে সঞ্চিত ক্রস-সাইট স্ক্রিপ্টিং (XSS) আক্রমণের সম্মুখীন করে। এটি মনে রাখা গুরুত্বপূর্ণ যে প্রশাসকরা প্লাগইন ইন্টারফেসের মাধ্যমে সরাসরি শিরোনাম সম্পাদনা বা সেট করতে পারেন।
আরও তদন্তের পর, আমরা আবিষ্কার করেছি যে যদি পরিষেবার মধ্যে কোনও ক্ষতিকারক শিরোনাম সেট করা থাকে, তাহলে ক্লায়েন্ট যখন পরিষেবাটি অ্যাক্সেস করবে তখন তাদের অজান্তে বা সম্মতি ছাড়াই এটি তাদের ব্রাউজারে রেন্ডার এবং কার্যকর করা হবে। এই কার্যকরকরণ সম্ভাব্যভাবে দূরবর্তী কোড কার্যকর করতে পারে, যা একটি উল্লেখযোগ্য নিরাপত্তা ঝুঁকি তৈরি করে।
আরও সুনির্দিষ্ট ধারণা প্রদানের জন্য, নিম্নলিখিত কোড স্নিপেটটি ব্যাখ্যা করে যে কীভাবে একটি নতুন পরিষেবা তৈরি করার সময় "পরিষেবা শিরোনাম" ক্ষেত্রের মান সেট করা এবং পড়া হয়:

চিত্র ১. createService পদ্ধতি, যা একটি নতুন পরিষেবা তৈরি করার সময় কল করা হয়।
'createService' পরিবর্তে 'প্যারামিটার' পদ্ধতি ব্যবহার করে।

চিত্র ২. প্যারামিটার পদ্ধতিটি দেখায়।
'প্যারামিটার' পদ্ধতির মধ্যে, 'getRequest()' ফাংশনে একটি কল আসে। এই ফাংশনটি ইন্টারফেস থেকে প্রবেশ করা মানগুলি পুনরুদ্ধারের জন্য দায়ী। পরবর্তীকালে, এই মানগুলি 'createService' পদ্ধতিতে প্রেরণ করা হয়, যেখানে সেগুলি সংরক্ষণ করা হয়। তবে, এটি হাইলাইট করা অত্যন্ত গুরুত্বপূর্ণ যে এই প্রক্রিয়া চলাকালীন কোনও ইনপুট স্যানিটাইজেশন ঘটে না, যার ফলে সিস্টেমটি সম্ভাব্য নিরাপত্তা ঝুঁকির ঝুঁকিতে পড়ে।

চিত্র ৩. getRequest পদ্ধতিটি দেখায়।
সমাধান উন্মোচন: প্যাচটি তদন্ত করা
দুর্বলতা সমাধানকারী প্যাচটি পরীক্ষা করার পর, আমরা নির্ধারণ করেছি যে $parameters ভেরিয়েবলটি যথাযথ স্যানিটাইজেশনের মধ্য দিয়ে গেছে, যা কার্যকরভাবে প্রোগ্রামের মধ্যে সম্ভাব্য নিরাপত্তা লঙ্ঘন প্রতিরোধ করে। এই উল্লেখযোগ্য উন্নতির মধ্যে রয়েছে 'unfiltered_html' ফাংশন এবং 'stripScripts' পদ্ধতি বাস্তবায়ন, যা $parameters স্যানিটাইজেশন এবং সম্ভাব্য আক্রমণ প্রশমিত করার জন্য অত্যন্ত গুরুত্বপূর্ণ।
'unfiltered_html' ফাংশনটি ব্যবহার করে, প্যাচটি নিশ্চিত করে যে কেবলমাত্র প্রয়োজনীয় ক্ষমতা সম্পন্ন অনুমোদিত ব্যবহারকারীরা ফিল্টারবিহীন HTML সামগ্রী জমা দিতে পারবেন। এটি ক্ষতিকারক স্ক্রিপ্টগুলির প্রবর্তন রোধ করে এবং ক্রস-সাইট স্ক্রিপ্টিং (XSS) আক্রমণের ঝুঁকি উল্লেখযোগ্যভাবে হ্রাস করে। 'stripScripts' পদ্ধতিটি $parameters এর মধ্যে থাকা যেকোনো এমবেডেড জাভাস্ক্রিপ্ট কোড অপসারণ বা নিরপেক্ষ করে স্যানিটাইজেশন প্রক্রিয়াটিকে আরও উন্নত করে।
সামগ্রিকভাবে, স্যানিটাইজেশনের এই ব্যাপক পদ্ধতি নিশ্চিত করে যে $parameters ভেরিয়েবলটি কোডবেস জুড়ে ব্যবহারের জন্য নিরাপদ, নিরাপত্তা দুর্বলতার সম্ভাবনা কমিয়ে দেয় এবং প্রোগ্রামের সামগ্রিক নিরাপত্তা জোরদার করে।

চিত্র ৪। প্যাচটি চিত্রিত করা হচ্ছে।
উপসংহার
এই ব্লগ পোস্টে, আমরা Bookly প্লাগইনে আবিষ্কৃত একটি দুর্বলতা পরীক্ষা করেছি, যা প্রমাণিত আক্রমণকারীদের ক্ষতিকারক স্ক্রিপ্ট প্রবেশ করাতে সক্ষম করে, যা ব্যবহারকারীদের ডিভাইসের জন্য হুমকিস্বরূপ। সৌভাগ্যবশত, এই দুর্বলতাটি 21.8 সংস্করণে প্যাচ করা হয়েছে। আমরা ওয়ার্ডপ্রেস সাইটের মালিকদের পরামর্শ দিচ্ছি যে তারা তাদের ইনস্টলেশনগুলি তাৎক্ষণিকভাবে সর্বশেষ প্লাগইন সংস্করণে আপডেট করুন, যা সম্ভাব্য আক্রমণ কমানোর জন্য অপরিহার্য। একটি নিরাপদ অনলাইন উপস্থিতি বজায় রাখার জন্য আপডেট এবং প্যাচগুলির সময়মত প্রয়োগ নিশ্চিত করা অত্যন্ত গুরুত্বপূর্ণ। উপরন্তু, ব্যবহারকারীর ভূমিকায় 'unfiltered_html' ক্ষমতা প্রদান করার সময়, সতর্কতা অবলম্বন করুন এবং এটি শুধুমাত্র বিশ্বস্ত ব্যক্তিদের কাছে অর্পণ করুন যাদের সত্যিকার অর্থে এটির প্রয়োজন, এই ক্ষমতার সম্ভাব্য নিরাপত্তা প্রভাব বিবেচনা করে।
সব SEQRITE এবং কুইক হিল গ্রাহকরা নিম্নলিখিত সিগনেচারগুলির মাধ্যমে এই দুর্বলতাকে লক্ষ্য করে তৈরি যেকোনো এক্সপ্লয়েট থেকে সুরক্ষিত থাকেন:
- HTTP/CVE-2023-1159!VK.47550
- HTTP/CVE-2023-1159!VK.47551
- HTTP/CVE-2023-1159!VK.47552
সহ-লেখক:
অঞ্জলি রাজকুমার রাউত



