পাবলিক ইন্টারনেটে .env ফাইল এবং ডিবাগ লগ উন্মুক্ত থাকার কারণে ৬৬৯ জন ভেন্ডরের ১,০৩৩টি লাইভ Stripe সিক্রেট কি (secret keys) ফাঁস হয়ে গেছে। এই কি (keys) ব্যবহার করে যে কেউ চার্জ তৈরি করতে পারে, ইনভয়েস সংগ্রহ করতে পারে এবং গ্রাহকের বিস্তারিত তথ্য হাতিয়ে নিতে পারে – এমন একটি লঙ্ঘন যা কয়েক মিনিটের মধ্যে পকেট খালি করে দিতে পারে এবং সুনাম নষ্ট করতে পারে।
কী কারণে এই ফাঁসটি ঘটেছে
ডেভেলপাররা সাধারণত কনফিগারেশন ডেটা – যেমন ডাটাবেস পাসওয়ার্ড, API টোকেন এবং Stripe সিক্রেট কি – .env নামক একটি ফাইলে সংরক্ষণ করেন। কোডবেসের বাইরে সিক্রেটগুলো রাখার জন্য এই ফাইলটি সোর্স কোডের সাথেই থাকে এবং রানটাইমে এটি পড়া হয়। এই পদ্ধতিটি তখনই কাজ করে যদি সার্ভার ডট (.) দিয়ে শুরু হওয়া কোনো ফাইল সার্ভ না করে। এই ক্ষেত্রে, ভুলভাবে কনফিগার করা ওয়েব সার্ভার (Nginx এবং Apache উভয়ই) “/.env”, “/.env.example”, “/.git/HEAD” এবং একটি কাস্টম “/debug” এন্ডপয়েন্টের অনুরোধে 200 OK স্ট্যাটাসসহ মূল ফাইলটি রিটার্ন করতে দিচ্ছিল।
এই ফাঁসটি Stripe-এর প্ল্যাটফর্মে কোনো দুর্বলতা বা কোনো নির্দিষ্ট ই-কমার্স প্লাগইনের ত্রুটির কারণে ঘটেনি। এটি ছিল মূলত এমন কিছু ফাইলের প্রকাশ যা বিশ্বের কাছে অদৃশ্য থাকা উচিত ছিল।
কেন এই প্রকাশটি গুরুত্বপূর্ণ
একটি Stripe সিক্রেট কি মূলত একজন মার্চেন্টের পেমেন্ট সিস্টেমের জন্য একটি মাস্টার পাসওয়ার্ডের মতো। যার কাছে এটি থাকবে সে যা করতে পারে:
- সংরক্ষিত কার্ডে যেকোনো চার্জ তৈরি করা
- ইনভয়েস এবং পেমেন্ট হিস্ট্রি (payout histories) সংগ্রহ করা
- ব্যক্তিগত তথ্য সংগ্রহ করা – নাম, ইমেল, ফোন নম্বর, ঠিকানা, IP অ্যাড্রেস
- ফ্রি বা ডিসকাউন্টেড কেনাকাটার জন্য প্রোমোশনাল কোড ব্যবহার করা
ফাঁস হওয়া ডেটাসেটে উপরের সবকিছুর পাশাপাশি পেমেন্ট ডিটেইলসও অন্তর্ভুক্ত ছিল, যা থেকে বোঝা যায় প্রতিটি ভেন্ডর কত টাকা আয় করেছেন। একটি ব্যবসার জন্য তাৎক্ষণিক ঝুঁকি হলো জালিয়াতিমূলক লেনদেন যা চার্জব্যাক তৈরি করে, গ্রাহকের বিশ্বাস হারানো এবং PCI-DSS, GDPR বা অন্যান্য ডেটা-প্রাইভেসি আইনের অধীনে সম্ভাব্য জরিমানা। দীর্ঘমেয়াদী খরচ আরও বেশি হতে পারে: আইনি ফি, প্রতিকারের খরচ এবং একটি ক্ষতিগ্রস্ত ব্র্যান্ড যা হয়তো আর কখনোই আগের অবস্থায় ফিরতে পারবে না।
দ্রুত পরীক্ষা: আপনার .env কি উন্মুক্ত?
একটি টার্মিনাল খুলুন এবং yourdomain.com এর পরিবর্তে আপনার নিজস্ব হোস্ট নেম ব্যবহার করুন:
for p in "/.env" "/.env.example" "/.git/HEAD" "/debug"; do
echo -n "$p -> "
curl -s -o /dev/null -w "%{http_code}\n" "https://yourdomain.com$p"
done
প্রতিটি লাইন 403 (forbidden) বা 404 (not found) রিটার্ন করা উচিত। একটি 200 রেসপন্স মানে ফাইলটি পাবলিকলি পড়া যাচ্ছে – এটি একটি গুরুতর নিরাপত্তা ঘটনা যার জন্য অবিলম্বে ব্যবস্থা নেওয়া প্রয়োজন।
অবিলম্বে প্রতিকারের পদক্ষেপসমূহ
১. ওয়েব সার্ভারে ডটফাইল (dotfiles) ব্লক করুন
- Nginx – একটি location block যোগ করুন যা ডট (.) দিয়ে শুরু হওয়া যেকোনো ফাইলের অনুরোধ প্রত্যাখ্যান (deny) করবে।
- Apache – ডট-প্রিফিক্সযুক্ত ফাইলগুলোর জন্য 403 রিটার্ন করতে
.htaccess-এ একটিFilesMatchডিরেক্টিভ ব্যবহার করুন।
২. আপনার Docker ওয়ার্কফ্লো আরও সুরক্ষিত করুন
.dockerignore-এ.envযোগ করুন যাতে ফাইলটি কখনোই ইমেজে কপি না হয়।- যে কোনো ফাইলে যা সিক্রেট ধারণ করে, তার জন্য
COPYইন্সট্রাকশন ব্যবহার করা এড়িয়ে চলুন।
৩. প্রতিটি আপস হওয়া (compromised) কি রোটেশন করুন
- Stripe Dashboard → Developers → API keys-এ লগ ইন করুন।
- একটি নতুন সিক্রেট কি তৈরি করুন এবং পুরনোটি অবিলম্বে বাতিল (revoke) করুন।
৪. 'Least-privilege' কি ব্যবহার করুন
- সব কাজের জন্য একটি মাত্র সিক্রেট কি ব্যবহার করা বন্ধ করুন।
- সীমাবদ্ধ (restricted) কি তৈরি করুন যা শুধুমাত্র প্রয়োজনীয় কাজগুলো করার অনুমতি দেয় – উদাহরণস্বরূপ, একটি চেকআউট সার্ভিসের পেমেন্ট ইনটেন্ট (payment intents) তৈরি করার অনুমতি প্রয়োজন হতে পারে কিন্তু রিফান্ড দেওয়া বা পেমেন্ট দেখার অনুমতি নয়।
৫. পুরনো কি-এর প্রতিটি কপি মুছে ফেলুন
- CI/CD লগ, বিল্ড আর্টিফ্যাক্ট এবং ব্যাকআপ আর্কাইভ স্ক্যান করুন।
- আপনার Git হিস্ট্রির বিরুদ্ধে Gitleaks বা TruffleHog এর মতো সিক্রেট-স্ক্যানিং টুল চালান।
সার্ভার থেকে ফাইলটি মুছে ফেললেই ফাঁস হওয়া কি অদৃশ্য হয়ে যায় না; যে এটি ডাউনলোড করেছে তার কাছে এটি চিরকাল থেকে যায়। চুরি করা ডেটাকে অকেজো করার একমাত্র উপায় হলো কি রোটেশন করা।
সমাধানের বাইরে: একটি নিরাপদ পাইপলাইন তৈরি করা
- Automated scanning – প্রতিটি পুল রিকোয়েস্ট (pull request) এবং CI জবে সিক্রেট-ডিটেকশন যুক্ত করুন।
- Configuration management – স্ট্যাটিক ফাইলের ওপর নির্ভর না করে একটি ডেডিকেটেড ভল্টে (যেমন, HashiCorp Vault, AWS Secrets Manager) সিক্রেট সংরক্ষণ করুন এবং রানটাইমে সেগুলো ইনজেক্ট করুন।
- Access reviews – কোন Stripe কিগুলো সক্রিয় আছে এবং তাদের কী কী পারমিশন আছে তা পর্যায়ক্রমিক অডিট করুন।
এই পদ্ধতিগুলো একটি ভুলভাবে কনফিগার করা সার্ভার যাতে পুরো পেমেন্ট ইনফ্রাস্ট্রাকচার উন্মুক্ত করে না, তার সম্ভাবনা কমিয়ে দেয়।
পরবর্তী করণীয় বা যা খেয়াল রাখতে হবে
সিকিউরিটি কমিউনিটি ইতিমধ্যে একই পদ্ধতি ব্যবহার করে আরও উন্মুক্ত কি (keys) খুঁজছে। স্বয়ংক্রিয় স্ক্যানারগুলো যখন Stripe টোকেনযুক্ত “/.env” ফাইল খুঁজতে ইন্টারনেটে অনুসন্ধান চালাবে, তখন আরও তথ্য প্রকাশের সম্ভাবনা রয়েছে। Stripe কি রোটেশনের সময়কাল সম্পর্কে অতিরিক্ত নির্দেশনা দিতে পারে এবং উচ্চ-ঝুঁকিপূর্ণ কাজের জন্য restricted keys ব্যবহারের পরামর্শ দিতে পারে।
সারসংক্ষেপ
যদি একটি ডটফাইল ব্রাউজারের মাধ্যমে অ্যাক্সেস করা সম্ভব হয়, তবে আপনার পেমেন্ট সিস্টেম ইতিমধ্যেই ঝুঁকির মুখে রয়েছে – জালিয়াতি আপনার লেজারে আঘাত করার আগেই ফাইলটি ব্লক করুন, কী (key) পরিবর্তন করুন এবং আপনার সিক্রেট-হ্যান্ডলিং ওয়ার্কফ্লো নতুন করে ডিজাইন করুন।
