291 Intercept: আমাদের অবকাঠামোতে উন্মুক্ত Git রিপোজিটরির খোঁজে প্রোব দ্বিগুণেরও বেশি বেড়েছে
19 অক্টোবরের সপ্তাহে ওয়েব সার্ভারে ফেলে রাখা সোর্স কোড রিপোজিটরির খোঁজে আমাদের ইন্টারনেট-সংযুক্ত অবকাঠামোতে প্রোব চালানো উৎসের সংখ্যা আগের দুই সপ্তাহের সাপ্তাহিক গড়ের তুলনায় 137% বেড়েছে। সাবফোল্ডারে থাকা .env ফাইল, ক্লাউড কী ফাইল ও ব্যাকআপ খোঁজা স্ক্যানারের সংখ্যাও বেড়েছে।
291 Intercept পরিচিতি
291 Intercept হলো 291 Group এর নতুন একটি সাপ্তাহিক সিরিজ। অনলাইনে থাকা অন্য যেকোনো প্রতিষ্ঠানের মতো আমাদের ইন্টারনেট-সংযুক্ত অবকাঠামোতেও প্রতিদিন স্বয়ংক্রিয় স্ক্যানার প্রোব চালায়। এরা খোঁজে খোলা রেখে যাওয়া দরজা: উন্মুক্ত পাসওয়ার্ড ফাইল, ভুলে যাওয়া ব্যাকআপ, প্যাচ না করা অ্যাডমিন পেজ। প্রতিটি সংস্করণে আমরা জানাব, এক সপ্তাহে আমাদের নিজস্ব অবকাঠামোতে এই স্ক্যানারগুলো কী কী খুঁজেছে। এতে অন্য সিস্টেম অ্যাডমিনিস্ট্রেটর ও প্রতিষ্ঠানগুলো নিজেদের সিস্টেমে একই জিনিসগুলো যাচাই করে নিতে পারবেন।
প্রতি সপ্তাহে যা থাকবে: আমাদের অবকাঠামোতে যেসব প্যাটার্ন চোখে পড়েছে এবং আগের সপ্তাহের তুলনায় সেগুলো কীভাবে বদলেছে, ট্রাফিক কোথা থেকে এসেছে, আর নিজের সার্ভারে যাচাই করার মতো বিষয়ের একটি ছোট তালিকা। সব তথ্য সমষ্টিগতভাবে দেওয়া হয়। আমরা কখনো কোনো একক ঠিকানা বা সিস্টেমের নাম প্রকাশ করি না, আর কেবল অনেকগুলো আলাদা উৎস থেকে দেখা প্যাটার্নই অন্তর্ভুক্ত করি। প্রতিটি সংস্করণে এমন একটি সপ্তাহের তথ্য থাকে, যা প্রকাশের অন্তত সাত দিন আগে শেষ হয়েছে।
19 থেকে 25 অক্টোবর পর্যন্ত প্রায় 240টি উৎস ওয়েব সার্ভারে রেখে যাওয়া সোর্স কোড রিপোজিটরির খোঁজে আমাদের ইন্টারনেট-সংযুক্ত অবকাঠামোতে প্রোব চালিয়েছে। এই সংখ্যা আগের দুই সপ্তাহের সাপ্তাহিক গড়ের চেয়ে 137% বেশি। তারা /.git/config, /.git/index ও /.svn/entries এর মতো ফাইল চেয়েছে। আমাদের অবকাঠামোতে এই সপ্তাহে সোর্স কোডের চেয়ে বেশি স্ক্যানার টেনেছে শুধু WordPress।
একই সময়ে আমাদের সাইটগুলোতে সংশ্লিষ্ট অনুসন্ধানও বেড়েছে। ক্লাউড কী ফাইল খোঁজা উৎস বেড়েছে 51%, আর ব্যাকআপ ও ডেটাবেস ডাম্প চাওয়া উৎস বেড়েছে 75%। আমরা আরও দেখেছি, স্ক্যানাররা সাবফোল্ডারে থাকা একগুচ্ছ .env ফাইলের পেছনে লেগেছে, যেগুলোর প্রতি আগে আগ্রহ ছিল অনেক কম। এই লক্ষ্যগুলোর কোনোটিই সফটওয়্যারের বাগ নয়। প্রতিটিই এমন একটি ফাইল, যা কেউ পাবলিক সার্ভার থেকে সরাতে ভুলে গেছেন।
সপ্তাহের সংক্ষিপ্তসার
আমরা প্রায় 660টি আলাদা উৎস দেখেছি, যা একই বেসলাইনের তুলনায় 28% বেশি। সবচেয়ে বেশি উৎস টেনেছে WordPress লগইন, XML-RPC ও প্লাগইন পাথ, মোট উৎসের 56%। সিক্রেট ও কনফিগারেশন ফাইল টেনেছে 32%। /info.php এর মতো ডায়াগনস্টিক পেজ খোঁজা উৎস বেড়েছে 33%, আর /actuator/env এর মতো অ্যাপ্লিকেশনের ভেতরের অংশে প্রোব চালানো উৎস বেড়েছে 37%।
আমাদের কাছে পৌঁছানো উৎসগুলোর 88% এমন ইউজার এজেন্ট স্ট্রিং ব্যবহার করেছে, যা সাধারণ ব্রাউজারের ছদ্মবেশ নেয়। 64% এসেছে ভাড়া করা সার্ভার থেকে। সবচেয়ে বেশি উৎস এসেছে যুক্তরাষ্ট্র, জার্মানি, নেদারল্যান্ডস, সিঙ্গাপুর ও ভারত থেকে।
উন্মুক্ত .git ফোল্ডার যেভাবে সাইটের সব ফাঁস করে দেয়
বেশিরভাগ সফটওয়্যার টিম কোডের পরিবর্তন ট্র্যাক করে Git দিয়ে, আর প্রতিটি Git প্রজেক্ট তার পুরো ইতিহাস রাখে একটি লুকানো .git ফোল্ডারে। পুরো প্রজেক্ট ফোল্ডার ওয়েব সার্ভারে কপি করে সাইট লাইভ করা হলে সেই লুকানো ফোল্ডারটিও কপি হয়ে যেতে পারে। তখন যে কেউ এর ফাইলগুলো চাইলেই পড়তে পারে।
আমাদের ইন্টারনেট-সংযুক্ত অবকাঠামোতে সবচেয়ে বেশি চাওয়া সোর্স কোড পাথগুলোর একটি ছিল /.git/config। এই ফাইলে লেখা থাকে কোডটি কোন রিপোজিটরি থেকে এসেছে, আর কখনো কখনো এতে ডিপ্লয় করার ক্রেডেনশিয়ালও থাকে। স্ক্যানাররা আমাদের কাছে /.git/head, /.git/logs/head ও /.git/index পাথগুলোও চেয়েছে। এগুলো থেকে বোঝা যায়, আরও এগোনোর মতো যথেষ্ট অংশ পড়া যাচ্ছে কি না। ফোল্ডারটি উন্মুক্ত থাকলে আক্রমণকারীরা কখনো কখনো পুরো সোর্স কোড ও কমিট ইতিহাস আবার দাঁড় করাতে পারে।
এই ভুল খুবই সাধারণ। 2026 সালের ফেব্রুয়ারিতে প্রকাশিত একটি গবেষণায় প্রায় 4.96 মিলিয়ন পাবলিক ওয়েব সার্ভারে Git মেটাডেটা উন্মুক্ত অবস্থায় পাওয়া গেছে। এর মধ্যে 252,733টি সার্ভারে config ফাইলে ডিপ্লয়মেন্ট ক্রেডেনশিয়াল ছিল। একই প্রতিবেদন সতর্ক করেছে, এর ফলে রিপোজিটরি বেহাত হওয়া এবং সাপ্লাই চেইন আক্রমণ পর্যন্ত ঘটতে পারে।
অপ্রত্যাশিত ফোল্ডারে সিক্রেট
স্ক্যানাররা আমাদের সাইটগুলোর রুটে /.env চেয়েছে, তবে এই সপ্তাহে অনেকে সাবফোল্ডারেও খুঁজেছে। /mailer/.env টেনেছে 40টি উৎস, যা আগের গড়ের 7.8 গুণ। /live/.env, /mail/.env, /v3/.env, /sitemaps/.env, /releases/.env ও /exapi/.env প্রতিটি টেনেছে 40টি করে উৎস, আগের গড়ের মোটামুটি ছয় থেকে সাত গুণ। চারটি পাথ প্রথমবারের মতো আমাদের কাছে এসেছে, প্রতিটি প্রায় 10টি উৎস থেকে: /core/database/.env, /.changeset/config.json, /secrets ও /settings/credentials।
আক্রমণকারীর কাছে এই ফাইলগুলোর জন্য খাটুনি পুরোপুরি পোষায়। ওয়েব অ্যাপগুলো API কী, ডেটাবেস পাসওয়ার্ড ও ক্লাউড অ্যাক্সেস কী রাখে .env ফাইলে। ব্যাপক মাত্রায় স্ক্যান চালানো একটি স্ক্যানার নিয়ে 2026 সালের এপ্রিলে করা এক তদন্তে আক্রমণের শিকার 900টিরও বেশি কোম্পানি থেকে সংগ্রহ করা .env ফাইল পাওয়া গেছে। 10 থেকে 21 এপ্রিল 2026 এর মধ্যে সংগ্রহ করা আলাদা .env ফাইলনামের সংখ্যা ছিল 30,000টিরও বেশি। চুরি হওয়া সিক্রেটের মধ্যে ছিল AI, ক্লাউড, পেমেন্ট ও মেসেজিং সেবার তথ্য।
ক্লাউড ক্রেডেনশিয়ালের ক্ষেত্রেও আমরা একই প্যাটার্ন দেখেছি। /application_default_credentials.json টেনেছে 40টি উৎস, যা আগের গড়ের 6.2 গুণ। স্ক্যানাররা আমাদের কাছে /service-account.json ও /.config/gcloud/application_default_credentials.json পাথগুলোও চেয়েছে। ক্লাউডের কমান্ড লাইন টুলে লগইন করলে এই ফাইলটি তৈরি হয়। প্রোভাইডারের নিজস্ব নির্দেশিকা অনুযায়ী ফাইলটি এনক্রিপশন ছাড়া সংরক্ষিত থাকে, আর এটি যার হাতে থাকে সে অনির্দিষ্টকাল ধরে অ্যাক্সেস টোকেন চাইতে পারে। এর কোনো কপি ওয়েব রুটে চলে গেলে, যে আক্রমণকারী সেটি খুঁজে পায়, ফাইলটি রিভোক না করা পর্যন্ত তার অ্যাক্সেস থেকেই যায়।
এক অভিযানে অনেক লক্ষ্য
কয়েকটি সমন্বিত উৎসগোষ্ঠী আমাদের ইন্টারনেট-সংযুক্ত অবকাঠামোতে একই তালিকা ধরে স্ক্যান চালিয়েছে। একটি গোষ্ঠীতে 7টি দেশের 20টি উৎস একই 8টি পাথ চেয়েছে, যার মধ্যে ছিল /.git/config, /.env, /info.php, /config.json, /actuator/env ও /server-status। এদের বেশিরভাগই একে অপরের 60 ঘণ্টার মধ্যে কাজ শুরু করেছে। প্রায় 10টি করে উৎস নিয়ে গড়া আরও দুটি ছোট দল অনেক লম্বা তালিকা ব্যবহার করেছে, যথাক্রমে 210 ও 158টি পাথের। দুটি তালিকাতেই ছিল /.git/config, /.env.old ও /.env.development এর মতো .env এর নানা রূপ, আর ক্লাউড কী ফাইল।
/actuator/env পাথটিও একই গোত্রের। কোনো Java অ্যাপের Spring Boot Actuator এন্ডপয়েন্ট লগইন ছাড়াই অ্যাক্সেস করা গেলে সেটি অ্যাপের এনভায়রনমেন্ট ভেরিয়েবল ও কনফিগারেশন ফেরত দেয়, যার মধ্যে ডেটাবেস ক্রেডেনশিয়াল ও ক্লাউড কী থাকতে পারে। ভুলে রয়ে যাওয়া phpinfo পেজও এনভায়রনমেন্ট ভেরিয়েবল ফাঁস করতে পারে। আমাদের অবকাঠামোতে /admin/phpinfo.php আগের গড়ের 5.9 গুণে পৌঁছেছে। একটি বাস্তব ঘটনায় একটি WordPress প্লাগইনের সঙ্গেই এমন একটি phpinfo.php দেওয়া হয়েছিল, যা যে কেউ খুলতে পারত।
আমাদের সাইটগুলোতে WordPress কে ঘিরে আলাদা একটি অভিযানও চলেছে: 7টি দেশের 20টি উৎস /xmlrpc.php চেয়েছে, সঙ্গে আন্দাজে বসানো ফোল্ডারের নিচে wlwmanifest.xml এর কপি, যেমন /blog/wp-includes/wlwmanifest.xml ও /wordpress/wp-includes/wlwmanifest.xml। একই ফাইল অনেকগুলো ফোল্ডার নামের নিচে চাইলে দ্রুত জানা যায় সাইটটি WordPress চালায় কি না, আর চালালে কোথায়। XML-RPC এর মাধ্যমে একজন আক্রমণকারী একটিমাত্র রিকোয়েস্টে শত শত বা হাজার হাজার পাসওয়ার্ড পরীক্ষা করতে পারে।
এই সপ্তাহে যা করবেন
- বাইরে থেকে যাচাই করুন। আপনার নিজের নয় এমন একটি নেটওয়ার্ক থেকে প্রতিটি সাইটে
/.git/configও/.envরিকোয়েস্ট করুন। কোনোটি আসল কনটেন্ট ফেরত দিলে ধরে নিন, কেউ সেটি ইতিমধ্যেই পড়ে ফেলেছে। - ওয়ার্কিং ফোল্ডার নয়, বিল্ড ডিপ্লয় করুন। সাইটের যে ফাইলগুলো দরকার শুধু সেগুলোই পাঠান, আর .git, .env ও অন্যান্য লুকানো ফাইলে ওয়েব অ্যাক্সেস বন্ধ করুন।
- যা ফাঁস হয়েছে তা রোটেট করুন। .git বা .env ফাইল পড়া গিয়ে থাকলে সেগুলোতে থাকা ক্রেডেনশিয়াল ও কী বদলে ফেলুন। ফাইল মুছে দিলেই কেউ আগে যে কপি নিয়ে গেছে তা অকেজো হয়ে যায় না।
- সিক্রেট ওয়েব রুটের বাইরে রাখুন। .env ও ক্লাউড ক্রেডেনশিয়াল ফাইল যেকোনো পাবলিশড ফোল্ডারের বাইরে রাখুন। কোনো ক্রেডেনশিয়াল ফাইল কখনো উন্মুক্ত হয়ে থাকলে সেটি রিভোক করুন।
- পড়ে থাকা ফাইল সাফ করুন।
/wp-config.php.bakও/database.sqlএর মতো ব্যাকআপ মুছে ফেলুন, আর phpinfo ও ডিবাগ পেজ সরিয়ে দিন। - ম্যানেজমেন্ট এন্ডপয়েন্ট বন্ধ করুন। Actuator এন্ডপয়েন্টগুলো অথেনটিকেশনের পেছনে রাখুন, আর যেসব WordPress সাইটে XML-RPC লাগে না সেগুলোতে এটি নিষ্ক্রিয় করুন।
এই পর্যবেক্ষণ সম্পর্কে
এই প্রতিবেদন তৈরি করেছে 291 Group এর নিরাপত্তা পর্যবেক্ষণ ব্যবস্থা 291 Heat Seeker One, যা চলে আমাদের নিজস্ব সিকিউরিটি অপারেশনস প্ল্যাটফর্ম 291 Crossband এর ওপর। এতে শুধু 291 Group এর নিজস্ব ইন্টারনেট-সংযুক্ত অবকাঠামোর ট্রাফিক ধরা হয়েছে।
সংখ্যাগুলো রাউন্ড করা। অংশ ও পরিবর্তন মাপা হয়েছে রিকোয়েস্টের সংখ্যা দিয়ে নয়, আলাদা উৎসের সংখ্যা দিয়ে। কেবল অন্তত 20টি আলাদা উৎস থেকে দেখা প্যাটার্নই অন্তর্ভুক্ত করা হয়েছে।