সার্ভার-সাইড টেমপ্লেট ইনজেকশন (SSTI) হলো এমন একটি দুর্বলতা, যেখানে ব্যবহারকারীর ইনপুট সাধারণ টেক্সট হিসেবে রেন্ডার না হয়ে একটি টেমপ্লেট ইঞ্জিন দ্বারা মূল্যায়ন করা হয়, যা একজন আক্রমণকারীকে সার্ভারে যথেচ্ছ কোড চালানোর সুযোগ করে দেয়।
সার্ভার-সাইড টেমপ্লেট ইনজেকশন নেপথ্যে কীভাবে কাজ করে
সার্ভার-সাইড টেমপ্লেট ইনজেকশন ঘটে যখন ব্যবহারকারীর ইনপুট যথাযথ স্যানিটাইজেশন বা আইসোলেশন ছাড়াই সরাসরি একটি টেমপ্লেটিং ইঞ্জিনে এমবেড করা হয় এবং মূল্যায়ন করা হয়। এটি একটি SSTI দুর্বলতা তৈরি করে যা একজন আক্রমণকারীকে বিশেষভাবে তৈরি করা SSTI পেলোড ইনজেক্ট করার সুযোগ দেয় (উদাহরণস্বরূপ, {{7*7}} জিনজা২-এর মতো, যা ইঞ্জিন মূল্যায়ন করবে, এবং এর ফলে সার্ভার কনটেক্সটে ডেটা ফাঁস থেকে শুরু করে যথেচ্ছ কোড এক্সিকিউশন পর্যন্ত সবকিছু সম্ভব হয়ে ওঠে। যেহেতু বিভিন্ন টেমপ্লেট ইঞ্জিন ভিন্ন ভিন্ন অবজেক্ট এবং এপিআই প্রকাশ করে, তাই এসএসটিআই পেলোডগুলো প্ল্যাটফর্মভেদে ভিন্ন হয়, কিন্তু এগুলোর বিপদ একই: এগুলো অবিশ্বস্ত ইনপুটকে প্রত্যাশিত রেন্ডারিং প্রবাহ থেকে বেরিয়ে অ্যাপ্লিকেশনটির রানটাইমে এক্সিকিউট হতে দেয়, যা অনিয়ন্ত্রিত থাকলে প্রায়শই সম্পূর্ণ রিমোট কোড এক্সিকিউশন বা ল্যাটারাল মুভমেন্টের দিকে নিয়ে যায়।
জিনজা২-এ ন্যূনতম ঝুঁকিপূর্ণ উদাহরণ
যদি কোনো ব্যবহারকারী পাঠায় ?name={{7*7}}অ্যাপটি এটি মূল্যায়ন করে ফেরত দেবে হ্যালো 49এটি একটি আদর্শ SSTI দুর্বলতা।
টুইগে ন্যূনতম দুর্বলতার উদাহরণ
একজন আক্রমণকারী SSTI পেলোড প্রবেশ করাতে পারে যেমন {{7*7}} কোড নির্বাহ প্রমাণ করতে। বিপদটি হলো: সাধারণ ইনজেকশন থেকে ফাইল পড়া, ওএস কমান্ড চালানো, বা অবকাঠামোর গভীরে প্রবেশ করার মতো ঘটনা ঘটতে পারে।
বাস্তব জগতের এক্সপ্লয়েট: এসএসটিআই পেলোড যা রিমোট কোড এক্সিকিউশন ট্রিগার করে
একবার কোনো SSTI দুর্বলতা তৈরি হয়ে গেলে, আক্রমণকারীরা প্রুফ-অফ-কনসেপ্ট গাণিতিক পর্যায় থেকে পূর্ণাঙ্গ রূপ দেওয়ার চেষ্টা করে। RCEবিভিন্ন টেমপ্লেট ইঞ্জিন পেলোডকে ভিন্ন ভিন্ন উপায়ে পরিচালনা করে।
জিনজা২ পেলোড
- {{7*7}} → গাণিতিক কার্যসম্পাদন
- {{config.items()}} সার্ভার কনফিগারেশন ফাঁস করে।
- {{ “”.__class__.__mro__[2].__subclasses__() }} → RCE-এর পথ
বেগ পেলোড
- #set($x=”7″)${x} → ইনজেকশন বাইপাস
- #set($a=$class.inspect(“java.lang.Runtime”)) → সরাসরি রানটাইম অ্যাক্সেস
টুইগ পেলোড
- {{7*7}} → পাটিগণিত
- {{app.request.server.all}} → পরিবেশ ভেরিয়েবল
- {{_self.env.registerUndefinedFilterCallback(‘system’)}} কোড এক্সিকিউশন
এই SSTI পেলোডগুলি দেখায় যে কীভাবে বিভিন্ন ইঞ্জিনে একই দুর্বলতা ভিন্ন ভিন্ন পরিণতির দিকে নিয়ে যায়। শোষণের পথ, কিন্তু সেগুলো সবসময় বিপজ্জনক।
সার্ভার সাইড টেমপ্লেট ইনজেকশন কোথায় লুকিয়ে থাকে CI/CD-চালিত অ্যাপ্লিকেশন
সার্ভার সাইড টেমপ্লেট ইনজেকশন শুধু ওয়েব অ্যাপের ঝুঁকিই নয়; এটি দেখা যায় আধুনিক CI/CD pipelines খুব. সাধারণত লুকানোর জায়গাগুলোর মধ্যে রয়েছে:
- হেলম চার্ট Kubernetes-এ, যেখানে টেমপ্লেট মানগুলি গতিশীলভাবে রেন্ডার করা হয়
- ইমেল টেমপ্লেট যেগুলি ব্যবহারকারী-নিয়ন্ত্রিত ইনপুটগুলিকে সংযুক্ত করে
- Dashboards যেখানে কোয়েরি স্ট্রিং বা কনফিগারেশন ডেটা টেমপ্লেটে প্রবেশ করানো হয়
- ডেভঅপস স্ক্রিপ্ট যেগুলো টেমপ্লেটিং ইঞ্জিন ব্যবহার করে এইচটিএমএল/মার্কডাউন তৈরি করে।
উদাহরণ:
If.মান.বার্তা অবিশ্বস্ত ইনপুট থেকে আসে, এটি আপনার ডেপ্লয়মেন্টে একটি সার্ভার-সাইড টেমপ্লেট ইনজেকশন চালু করে। pipeline নিজেই।
নিরাপদ টেমপ্লেট প্যাটার্ন এবং স্ট্যাটিক বিশ্লেষণের মাধ্যমে এসএসটিআই প্রতিরোধ
এসএসটিআই দুর্বলতা প্রশমিত করার জন্য উন্নততর কোডিং প্যাটার্ন এবং প্রাথমিক শনাক্তকরণ প্রয়োজন।
সুরক্ষিত প্যাটার্ন
- ❌ ব্যবহার করবেন না রেন্ডার_টেমপ্লেট_স্ট্রিং বা সমমানের
- ✅ পূর্বনির্ধারিত টেমপ্লেট ফাইল ব্যবহার করুন এবং পরিমার্জিত ভেরিয়েবল পাস করুন
- ✅ স্যান্ডবক্স টেমপ্লেট ইঞ্জিন (উপলভ্য হলে)
- ✅ রেন্ডার করার আগে ব্যবহারকারীর ইনপুট যাচাই ও এস্কেপ করুন
ডেভেলপারদের জন্য সংক্ষিপ্ত চেকলিস্ট
- ব্যবহারকারীর সরাসরি ইনপুট কখনো রেন্ডার করবেন না।
- সমর্থিত হলে স্যান্ডবক্সড টেমপ্লেট ব্যবহার করুন
- সমস্ত টেমপ্লেট ভেরিয়েবল স্যানিটাইজ এবং ভ্যালিডেট করুন।
- কাস্টম টেমপ্লেট মূল্যায়নকারী এড়িয়ে চলুন
- এর জন্য কোড স্ক্যান করুন রেন্ডার_টেমপ্লেট_স্ট্রিং অথবা স্ট্রিং সংযুক্তি প্যাটার্ন
স্ট্যাটিক বিশ্লেষণ এবং লিন্টারগুলো ঝুঁকিপূর্ণ নির্মাণগুলোকে উৎপাদনে পৌঁছানোর আগেই চিহ্নিত করতে পারে।
DevSecOps-এ SSTI চেক অন্তর্ভুক্ত করা Pipelines
সার্ভার-সাইড টেমপ্লেট ইনজেকশন পরে ঠিক করার চেয়ে আগেভাগে শনাক্ত করা সাশ্রয়ী ও নিরাপদ। DevSecOps টিমগুলোর উচিত চেক ব্যবস্থা অন্তর্ভুক্ত করা। pipelines:
- Commit hooksপ্রত্যাখ্যান করুন commitবিপজ্জনক কার্যাবলী সহ (রেন্ডার_টেমপ্লেট_স্ট্রিং)
- স্থির বিশ্লেষকটেমপ্লেটিং কোডে সার্ভার সাইড টেমপ্লেট ইনজেকশন ঝুঁকির জন্য স্ক্যান করুন
- নির্ভরতা যাচাইকরণপরিচিত SSTI দুর্বলতাযুক্ত পুরোনো টেমপ্লেট ইঞ্জিনগুলোকে চিহ্নিত করুন
- Pipeline দরজাSSTI চেক পাস না হওয়া পর্যন্ত ব্লক মার্জ করা হবে।
এসএসটিআই পেলোড সনাক্তকরণকে এর অংশ করে CI/CDএর মাধ্যমে আপনি শোষণযোগ্য কোডকে কখনোই বাজারে আসতে দেন না।
আপনার স্ট্যাকে সার্ভার-সাইড টেমপ্লেট ইনজেকশন ঢুকে পড়তে দেবেন না।
একটিমাত্র সার্ভার-সাইড টেমপ্লেট ইনজেকশন গাণিতিক কৌশল থেকে গুরুতর রূপ নিতে পারে ({{7*7}}সম্পূর্ণ রিমোট কোড এক্সিকিউশন পর্যন্ত। SSTI দুর্বলতাগুলো শুধু ওয়েব অ্যাপেই নয়, আরও অনেক ক্ষেত্রে দেখা যায়। CI/CD pipelineএস, হেলম চার্ট এবং ইমেল টেমপ্লেট।
কী টেকওয়েস
- ব্যবহারকারীর সরাসরি ইনপুট কখনো টেমপ্লেটে রেন্ডার করবেন না।
- সমস্ত ডাইনামিক ভেরিয়েবল যাচাই ও পরিমার্জন করুন।
- বিভিন্ন ইঞ্জিনের (জিনজা২, ভেলোসিটি, টুইগ) এসএসটিআই পেলোড ভিন্ন ভিন্ন, কিন্তু সবগুলোকেই অস্ত্র হিসেবে ব্যবহার করা যায়।
- স্ট্যাটিক অ্যানালাইসিস এবং ফেইল-ফাস্ট গেট ব্যবহার করুন pipelines
- আপনার স্ট্যাকে থাকা টেমপ্লেটগুলো নিয়মিত অডিট করুন।
জাইজেনি আপনার কোডবেসে ইনজেকশন ত্রুটি এবং অন্যান্য অনিরাপদ কোডিং প্যাটার্ন দেখা দেওয়ার সাথে সাথেই স্ক্যান করে, এবং OWASP বেঞ্চমার্কে সর্বনিম্ন ফলস-পজিটিভ রেট সহ, অপরিশোধিত টেমপ্লেট রেন্ডারিং-এর মতো ঝুঁকিপূর্ণ গঠনগুলোকে প্রোডাকশনে পৌঁছানোর আগেই ধরে ফেলে। Xygeni-এর CI/CD এবং IaC security স্ক্যানিং সেই একই পরিধিকে প্রসারিত করে pipeline কনফিগারেশন, হেলম চার্ট এবং বিল্ড স্ক্রিপ্ট পরীক্ষা করে, শিপ করার আগেই ভুল কনফিগারেশন এবং ক্ষতিকারক কমান্ড চিহ্নিত করে। যখন জাইজেনি কোনো দুর্বলতা খুঁজে পায়, তখন এআই অটোফিক্স সরাসরি একটি কনটেক্সট-অ্যাওয়্যার, ডেভেলপার-রেডি ফিক্স তৈরি করে। pull requestতাই প্রতিকারের জন্য পরবর্তী স্প্রিন্ট পর্যন্ত অপেক্ষা করতে হয় না।
DevSecOps-এ, টেমপ্লেট ইনজেকশন শনাক্ত করা pipeline মোতায়েনের পরে নয়, বরং প্রাথমিক পর্যায়েই একটি একক পেলোডকে সম্পূর্ণ নিরাপত্তা লঙ্ঘনে পরিণত হওয়া থেকে বিরত রাখা হয়।
বিনামূল্যে শুরু করুন। কোনো ক্রেডিট কার্ডের প্রয়োজন নেই, কয়েক মিনিটের মধ্যেই আপনার প্রথম রিপো স্ক্যান করুন।
FAQ
সার্ভার-সাইড টেমপ্লেট ইনজেকশন বলতে কী বোঝায়?
এসএসটিআই (SSTI) ঘটে যখন ব্যবহারকারীর ইনপুট কোনো টেমপ্লেট ইঞ্জিনে পাঠানো হয় এবং টেক্সট হিসেবে প্রদর্শিত না হয়ে কোড হিসেবে মূল্যায়ন করা হয়, যা একজন আক্রমণকারীকে সার্ভারের প্রেক্ষাপটে কমান্ড কার্যকর করার সুযোগ করে দেয়।
SSTI এবং XSS কি একই?
না। XSS এমন স্ক্রিপ্ট প্রবেশ করায় যা ভুক্তভোগীর ব্রাউজারে চলে; SSTI এমন কোড প্রবেশ করায় যা টেমপ্লেট ইঞ্জিন সার্ভারেই মূল্যায়ন করে, আর একারণেই SSTI সরাসরি রিমোট কোড এক্সিকিউশনের দিকে নিয়ে যেতে পারে।
কোন টেমপ্লেট ইঞ্জিনগুলো SSTI-এর জন্য ঝুঁকিপূর্ণ?
যে কোনো ইঞ্জিন যা এক্সপ্রেশন মূল্যায়ন করে, তা ঝুঁকিপূর্ণ হতে পারে যদি ব্যবহারকারীর ইনপুট অপরিশোধিত অবস্থায় তার কাছে পৌঁছায়; এর মধ্যে জিনজা২, টুইগ এবং ভেলোসিটি অন্তর্ভুক্ত, যদিও প্রত্যেকটি ভিন্ন ভিন্ন অবজেক্ট এবং ফলস্বরূপ ভিন্ন ভিন্ন এক্সপ্লয়েট পাথ প্রকাশ করে।
আপনি কীভাবে এসএসটিআই প্রতিরোধ করেন CI/CD pipelines?
বিপজ্জনক প্যাটার্নগুলির জন্য স্ক্যান করুন যেমন render_template_string at commit কোড প্রোডাকশনে যাওয়ার আগে, সময়, সমর্থিত হলে স্যান্ডবক্স টেমপ্লেট ইঞ্জিন এবং স্ট্যাটিক অ্যানালাইসিসের ফলাফলের ওপর গেট মার্জ করা হয়।





