সম্প্রতি প্রকাশ করা দুটি CVE—React Server Components-এ CVE-2025-55182 এবং Next.js middleware-এ CVE-2025-29927—আধুনিক JavaScript স্ট্যাকগুলোতে রিমোট-কোড এক্সিকিউশন (remote-code execution) এবং অথেন্টিকেশন বাইপাস (authentication bypass)-এর পথ তৈরি করেছে। একটি মাত্র রিকোয়েস্টেই এই ত্রুটিগুলো ট্রিগার করা সম্ভব; শুধুমাত্র কনফিগারেশন দিয়ে এগুলো ঠেকানো যাবে না। যে দলগুলো React Server Components বা Next.js middleware-এর ওপর নির্ভর করে, তাদের এই বাগগুলোকে জরুরি হিসেবে বিবেচনা করতে হবে এবং অবিলম্বে প্যাচ (patch) প্রয়োগ করতে হবে।

কেন লগ-এর এই গোলমাল বিভ্রান্তিকর

আমরা একটি প্রোডাকশন Next.js সাইট থেকে এক মাসের এজ লগ (edge logs) সংগ্রহ করেছি। সেই সেটে ৮,৯০০টি রিকোয়েস্টকে ম্যালিশিয়াস (malicious) হিসেবে চিহ্নিত করা হয়েছিল। প্রায় প্রতিটি রিকোয়েস্টই প্রথম ধাপেই ব্যর্থ হয়েছে। সবচেয়ে সাধারণ URL ছিল /wp-admin/install.php, যা ৫১৮ বার হিট করেছে, যদিও সাইটটি WordPress চালায় না, PHP ব্যবহার করে না এবং এতে কোনো WordPress ফাইল নেই।

অটোমেটেড স্ক্যানারগুলো এই ট্রাফিক তৈরি করে। তারা ইন্টারনেটে বিভিন্ন অনুমানের মাধ্যমে আক্রমণ চালায় এবং নিচের বিষয়গুলো খোঁজে:

  • সিক্রেট এবং কনফিগারেশন ফাইল – ৬৪% প্রচেষ্টা
  • PHP প্যানেল এবং শেল – ২২%
  • WordPress পাথ – ১১%
  • ডাটাবেস টুলস – ১%

ব্লক করা রিকোয়েস্টের উচ্চ সংখ্যা কেবল এটাই জানায় যে আপনি বোটগুলো (bots) প্রত্যাশা করা সফটওয়্যারটি চালাচ্ছেন না। এটি গ্যারান্টি দেয় না যে আপনি যে অ্যাপ্লিকেশনটি চালাচ্ছেন তা নিরাপদ।

নিঃশব্দ, ফ্রেমওয়ার্ক-লেভেল আক্রমণ

যখন কোনো আক্রমণকারী একটি Next.js অ্যাপকে লক্ষ্য করে, তখন সেই ট্রাফিক সাধারণ ইউজার রিকোয়েস্টের মতো দেখায়, যা ফ্রেমওয়ার্কের নিজস্ব মেকানিজমকে তার বিরুদ্ধেই ব্যবহার করে।

React2Shell (CVE-2025-55182)

React Server Components-এর একটি ত্রুটির কারণে আক্রমণকারী একটি বিশেষভাবে তৈরি করা পেলোড (payload) ইনজেক্ট করতে পারে যা সার্ভার কোড হিসেবে মূল্যায়ন করে। এর ফলে কোনো ফায়ারওয়াল বা ওয়েব-অ্যাপ্লিকেশন ফিল্টার বাইপাস করার প্রয়োজন ছাড়াই সম্পূর্ণ রিমোট-কোড এক্সিকিউশন সম্ভব হয়। এই দুর্বলতাটি ফ্রেমওয়ার্কের ভেতরেই বিদ্যমান; এর একমাত্র প্রতিকার হলো এমন একটি ভার্সনে আপগ্রেড করা যাতে এই ফিক্সটি অন্তর্ভুক্ত আছে।

Middleware Authorization Bypass (CVE-2025-29927)

Next.js middleware রিকোয়েস্ট হেডার-এর ওপর ভিত্তি করে সিকিউরিটি চেক প্রয়োগ করতে পারে। এই CVE দেখায় যে একজন আক্রমণকারী একটি নির্দিষ্ট ইন্টারনাল হেডার সরবরাহ করে মিডলওয়্যারকে সেই চেকগুলো পুরোপুরি স্কিপ করতে বাধ্য করতে পারে। বাইরে থেকে রিকোয়েস্টটি সাধারণ মনে হয়, যা শনাক্ত করা কঠিন করে তোলে।

উভয় বাগই দেখায় যে সবচেয়ে বিপজ্জনক ট্রাফিক সাধারণ ট্রাফিকের সাথে মিশে যেতে পারে এবং noisy WordPress প্রোবগুলোকে ধরা অ্যালার্মগুলোকে ফাঁকি দিতে পারে।

ঝুঁকির মাত্রা কী

  • ডেভেলপাররা যারা ফ্রেমওয়ার্ক আপডেটকে ঐচ্ছিক মনে করেন, তারা তাদের সার্ভারের সম্পূর্ণ নিয়ন্ত্রণ হারানোর ঝুঁকিতে থাকেন।
  • অপারেশনস টিমগুলো যারা স্ট্যাক সুরক্ষিত করতে স্ট্যাটিক কনফিগারেশনের ওপর নির্ভর করে, তারা ফ্রেমওয়ার্কের ভেতরে চলা কোডের বিরুদ্ধে সুরক্ষা দিতে পারে না।

একটি ব্যবহারিক প্রতিরক্ষা চেকলিস্ট

  1. ডেপ্লয়মেন্ট হাইজিন (Deployment hygiene).env-এর মতো ফাইলে সিক্রেটগুলো রাখবেন না। এগুলো রানটাইমে সরবরাহ করা এনভায়রনমেন্ট ভেরিয়েবল বা একটি ডেডিকেটেড সিক্রেট-ম্যানেজমেন্ট সিস্টেমে সংরক্ষণ করুন।
  2. ন্যূনতম অ্যাটাক সারফেস (Minimal attack surface) – আপনি ব্যবহার করেন না এমন ফ্রেমওয়ার্ক ফিচারগুলো বন্ধ করে দিন। একটি কঠোর Content-Security-Policy প্রয়োগ করুন যা অননুমোদিত স্ক্রিপ্ট লোড করা ব্লক করে।
  3. দ্রুত প্যাচিং (Rapid patching) – বিল্ড পাইপলাইনটি অটোমেট করুন যাতে নতুন ফ্রেমওয়ার্ক ভার্সন রিলিজ হওয়ার কয়েক ঘণ্টার মধ্যেই তা টেস্ট এবং ডেপ্লয় করা যায়। সিকিউরিটি আপডেটগুলোকে রিলিজ সাইকেলের একটি নিয়মিত অংশ হিসেবে বিবেচনা করুন, কোনো অপ্রাসঙ্গিক বিষয় হিসেবে নয়।

পরবর্তীতে যা খেয়াল রাখতে হবে

  • React, Next.js এবং আপনি যে অন্য কোনো রানটাইম লাইব্রেরির ওপর নির্ভর করেন, সেগুলোর অফিসিয়াল সিকিউরিটি অ্যাডভাইজরি ফিডে সাবস্ক্রাইব করুন।
  • এমন ভলনারেবিলিটি স্ক্যানার ইন্টিগ্রেট করুন যা JavaScript প্যাকেজ মেটাডেটা বুঝতে পারে, যাতে নতুন প্রকাশিত কোনো CVE স্বয়ংক্রিয়ভাবে অ্যালার্ট ট্রিগার করে।
  • একটি রোলব্যাক-রেডি (rollback-ready) ডেপ্লয়মেন্ট পাইপলাইন তৈরি করুন; যদি কোনো প্যাচ রিগ্রেশন (regression) তৈরি করে, তবে সিস্টেমকে অরক্ষিত না রেখে আপনি দ্রুত আগের অবস্থায় ফিরে যেতে পারবেন।

শিক্ষাটি স্পষ্ট: আপনার লগে থাকা সবচেয়ে জোরালো আক্রমণগুলো প্রায়শই বিভ্রান্ত করার কৌশল। আসল বিপদ লুকিয়ে থাকে সেই ফ্রেমওয়ার্কের মধ্যে যাকে আপনার কোড বিশ্বাস করে। স্ট্যাকটিকে হালকা রাখুন, সিক্রেটগুলো নিরাপদে সংরক্ষণ করুন এবং প্যাচগুলোকে রুটিন হিসেবে বিবেচনা করুন; তাহলে আপনি নিঃশব্দ, ফ্রেমওয়ার্ক-লেভেল হুমকিগুলোকে নিয়ন্ত্রণযোগ্য ঝুঁকিতে পরিণত করতে পারবেন।