270 হাজার প্রকল্পে ব্যবহৃত নোড-নেটমাস্ক NPM প্যাকেজের দুর্বলতা

নোড-নেটমাস্ক NPM প্যাকেজ, যা প্রতি সপ্তাহে প্রায় 3 মিলিয়ন ডাউনলোড হয় এবং GitHub-এ 270 হাজারেরও বেশি প্রকল্পের উপর নির্ভরতা হিসাবে ব্যবহৃত হয়, এর একটি দুর্বলতা (CVE-2021-28918) রয়েছে যা এটি নেটমাস্ক ব্যবহার করে এমন চেকগুলিকে বাইপাস করতে দেয়। ঠিকানা পরিসীমা বা ফিল্টারিংয়ের জন্য ঘটনা নির্ধারণ করতে। নোড-নেটমাস্ক 2.0.0 প্রকাশে সমস্যাটি স্থির করা হয়েছে।

দুর্বলতা একটি বহিরাগত IP ঠিকানাকে অভ্যন্তরীণ নেটওয়ার্ক থেকে একটি ঠিকানা হিসাবে বিবেচনা করা সম্ভব করে এবং এর বিপরীতে, এবং SSRF (সার্ভার-সাইড অনুরোধ জালিয়াতি), আরএফআই চালানোর জন্য অ্যাপ্লিকেশনটিতে নোড-নেটমাস্ক মডিউল ব্যবহার করার একটি নির্দিষ্ট যুক্তি সহ (রিমোট ফাইল ইনক্লুশন) এবং এলএফআই (স্থানীয় ফাইল অন্তর্ভুক্তি) আক্রমণ ) অভ্যন্তরীণ নেটওয়ার্কে সংস্থানগুলি অ্যাক্সেস করতে এবং এক্সিকিউশন চেইনে বাহ্যিক বা স্থানীয় ফাইলগুলি অন্তর্ভুক্ত করে। সমস্যা হল স্পেসিফিকেশন অনুসারে, শূন্য দিয়ে শুরু হওয়া ঠিকানা স্ট্রিং মানগুলিকে অক্টাল সংখ্যা হিসাবে ব্যাখ্যা করা উচিত, কিন্তু নোড-নেটমাস্ক মডিউল এটিকে বিবেচনায় নেয় না এবং তাদের দশমিক সংখ্যা হিসাবে বিবেচনা করে।

উদাহরণস্বরূপ, একজন আক্রমণকারী "0177.0.0.1" মান উল্লেখ করে একটি স্থানীয় সম্পদের জন্য অনুরোধ করতে পারে, যা "127.0.0.1" এর সাথে মিলে যায়, কিন্তু "নোড-নেটমাস্ক" মডিউলটি নালটিকে বাতিল করে দেবে এবং 0177.0.0.1″ কে "" হিসাবে বিবেচনা করবে। 177.0.0.1", যা অ্যাপ্লিকেশনটিতে অ্যাক্সেসের নিয়মগুলি মূল্যায়ন করার সময়, "127.0.0.1" দিয়ে পরিচয় নির্ধারণ করা সম্ভব হবে না। একইভাবে, একজন আক্রমণকারী "0127.0.0.1" ঠিকানাটি নির্দিষ্ট করতে পারে, যা "87.0.0.1" এর সাথে অভিন্ন হওয়া উচিত, তবে "নোড-নেটমাস্ক" মডিউলে "127.0.0.1" হিসাবে গণ্য করা হবে। একইভাবে, আপনি "012.0.0.1" ("10.0.0.1" এর সমতুল্য, কিন্তু চেকের সময় 12.0.0.1 হিসাবে প্রক্রিয়া করা হবে) এর মতো মানগুলি নির্দিষ্ট করে ইন্ট্রানেট ঠিকানাগুলিতে অ্যাক্সেসের জন্য চেক ঠকাতে পারেন৷

গবেষকরা যারা সমস্যাটিকে চিহ্নিত করেছেন তারা সমস্যাটিকে বিপর্যয়কর বলে অভিহিত করেছেন এবং বেশ কয়েকটি আক্রমণের পরিস্থিতি সরবরাহ করেছেন, তবে তাদের বেশিরভাগই অনুমানমূলক বলে মনে হচ্ছে। উদাহরণস্বরূপ, এটি একটি Node.js-ভিত্তিক অ্যাপ্লিকেশন আক্রমণ করার সম্ভাবনা সম্পর্কে কথা বলে যা ইনপুট অনুরোধের পরামিতি বা ডেটার উপর ভিত্তি করে একটি সংস্থান অনুরোধ করার জন্য বাহ্যিক সংযোগ স্থাপন করে, তবে অ্যাপ্লিকেশনটির নির্দিষ্টভাবে নাম বা বিস্তারিত উল্লেখ নেই। এমনকি যদি আপনি এমন অ্যাপ্লিকেশন খুঁজে পান যা প্রবেশ করা আইপি ঠিকানাগুলির উপর ভিত্তি করে সংস্থানগুলি লোড করে, তবে এটি সম্পূর্ণরূপে পরিষ্কার নয় যে কীভাবে একটি স্থানীয় নেটওয়ার্কের সাথে সংযোগ না করে বা "মিরর" আইপি ঠিকানাগুলির নিয়ন্ত্রণ না নিয়ে অনুশীলনে দুর্বলতাকে কাজে লাগানো যেতে পারে৷

গবেষকরা শুধুমাত্র অনুমান করেন যে 87.0.0.1 (টেলিকম ইতালিয়া) এবং 0177.0.0.1 (ব্রাজিল টেলিকম) এর মালিকরা 127.0.0.1 এ অ্যাক্সেস সীমাবদ্ধতা বাইপাস করতে সক্ষম। একটি আরো বাস্তবসম্মত দৃশ্যকল্প হল বিভিন্ন অ্যাপ্লিকেশন-সাইড ব্লক তালিকাকে বাইপাস করার দুর্বলতাকে কাজে লাগানো। NPM মডিউল "private-ip"-এ ইন্ট্রানেট রেঞ্জের সংজ্ঞা ভাগ করে নেওয়ার ক্ষেত্রেও সমস্যাটি প্রয়োগ করা যেতে পারে।

উত্স: opennet.ru

একটি মন্তব্য জুড়ুন