পাথ ট্রাভার্সাল কী: ডট-ডট-স্ল্যাশ ভালনারেবিলিটি কীভাবে কাজ করে ও প্রতিরোধের উপায়
এক নজরে টেকনিক্যাল সারসংক্ষেপ (Quick Technical Summary): মূল ধারণা: পাথ ট্রাভার্সাল হলো এমন একটি ত্রুটি যার মাধ্যমে আক্রমণকারী ../ সিকোয়েন্স ব্যবহার করে সার্ভারের গোপন ফাইল পড়ে ফেলতে পারে।

[!TIP] এক নজরে টেকনিক্যাল সারসংক্ষেপ (Quick Technical Summary):
- মূল ধারণা: পাথ ট্রাভার্সাল হলো এমন একটি ত্রুটি যার মাধ্যমে আক্রমণকারী ../ সিকোয়েন্স ব্যবহার করে সার্ভারের গোপন ফাইল পড়ে ফেলতে পারে। পাথ নরমালাইজেশন ও হোয়াইটলিস্ট চেকিং এর প্রধান সমাধান।
- প্রতিরোধের উপায়: কঠোর ইনপুট ভ্যালিডেশন নিশ্চিত করা, অপ্রয়োজনীয় শেল/ইভাল বন্ধ রাখা এবং সর্বনিম্ন অধিকার নীতি মেনে চলা।
- ভেরিফিকেশন: অ্যাপ্লিকেশন লগ নিয়মিত মনিটর করা এবং স্বয়ংক্রিয় রিগ্রেশন টেস্ট রান করা।
আধুনিক সফটওয়্যার ইঞ্জিনিয়ারিংয়ে সিকিউরিটি নিশ্চিত করতে কোড এবং আর্কিটেকচার উভয় স্তরেই সতর্ক থাকা অত্যন্ত জরুরি।
ক্যারিয়ারের অগ্রগতির পাশাপাশি ডেভেলপারদের আন্তর্জাতিক ক্যারিয়ার গাইডলাইন জানতে পড়ে দেখতে পারেন বাংলাদেশি ডেভেলপারদের জন্য হাই-পেয়িং রিমোট জব গাইড।
টেকনিক্যাল বিশ্লেষণ এবং মূল কারণ
যখন ব্যবহারকারীর কাছ থেকে পাওয়া ইনপুট যাচাই ছাড়া সরাসরি সার্ভারের ইন্টারনাল রিসোর্স বা অপারেটিং সিস্টেমে যায়, তখন এই সিকিউরিটি ঝুঁকি তৈরি হয়:
Client Input ===> Web Handler ===> [Unvalidated Parameter] ===> Internal Resource / OS / Network
নিরাপদ আর্কিটেকচার নিশ্চিত করতে নিচের টেস্টেড রেফারেন্স কোডটি অনুসরণ করুন:
// SAFE: Normalize path and assert boundary constraint
const path = require('node:path');
const fs = require('node:fs');
function serveUploadedFile(userFilename, baseDirectory) {
const safePath = path.normalize(path.join(baseDirectory, userFilename));
// Verify that the resolved path strictly starts with the authorized directory
if (!safePath.startsWith(path.resolve(baseDirectory))) {
throw new Error('Access denied: directory traversal detected');
}
return fs.readFileSync(safePath);
}
ডিফেন্সিভ কোডিং চেকলিস্ট
১. ইনপুট নরমালাইজেশন: পাথ বা ইউআরএল যাচাই করার পূর্বে ইনপুটকে অবশ্যই নরমালাইজ করে নিন। ২. হোয়াইটলিস্ট চেকিং: ব্লকলিস্টের ওপর নির্ভর না করে শুধু অনুমোদিত ক্যারেক্টার বা ডোমেনের হোয়াইটলিস্ট ব্যবহার করুন। ৩. শেল এক্সিকিউশন পরিহার: শেলের মাধ্যমে কমান্ড না চালিয়ে সরাসরি বাইনারি এক্সিকিউট করুন। ৪. লিস্ট প্রিভিলেজ (Least Privilege): কন্টেইনার এবং সার্ভিসগুলোকে নন-রুট ইউজার হিসেবে রান করুন।
সাধারণ ভুল ধারণা যা এড়িয়ে চলা উচিত
- শুধুমাত্র ডাব্লুএএফ (WAF)-এর ওপর নির্ভর করা এবং সোর্স কোডের বাগ ঠিক না করা।
- ডাবল-এনকোডিং বা ইউনিকোড টেকনিকের মাধ্যমে সহজ রেজেক্স ফিল্টার বাইপাস করা সম্ভব তা ভুলে যাওয়া।
লগ মনিটরিং ও অ্যালার্টিং
ওয়েব সার্ভার ও অ্যাক্সেস লগে কোনো সন্দেহজনক এনকোডেড প্যারামিটার বা অস্বাভাবিক এরর কোড (যেমন ঘনঘন 403 Forbidden) এলে তাৎক্ষণিক অ্যালার্ট সেট করুন।
উপসংহার
নেটওয়ার্ক, রানটাইম এবং অ্যাপ্লিকেশন কোড—প্রতিটি স্তরেই ডিফেন্স-ইন-ডেপথ নিশ্চিত করুন।


