টানেল ছেড়ে যাওয়া যেকোনো VPN ট্র্যাফিকের জন্য দুটি গবেষণার নাম পরস্পরের বদলে ব্যবহার করা হয়, অথচ তাদের পেছনের কৌশল এক নয়। TunnelCrack রাউটিং ব্যতিক্রমের দুটি পরিবার বর্ণনা করে; TunnelVision শেষ প্রান্তে DHCP-প্রদত্ত রুট বর্ণনা করে। কোনোটিই এনক্রিপশন ভাঙে না, এবং কোনোটিই আপনাকে বলে না আজ কোনো নির্দিষ্ট ক্লায়েন্ট বিল্ড কী করে। পাঁচটি পরীক্ষা কৌশলগুলোকে শিরোনাম থেকে আলাদা করে।

প্রথম ধাপ: যে কৌশলটি পর্যালোচনা করছেন তার নাম দিন

2023 সালের আগস্টে প্রকাশিত TunnelCrack দুটি আক্রমণ পরিবার বর্ণনা করে। স্থানীয় নেটওয়ার্কের ক্ষেত্রে, ক্লায়েন্ট যে ট্র্যাফিককে স্থানীয় নেটওয়ার্কের অংশ মনে করে তা স্থানীয়-প্রবেশাধিকারের ব্যতিক্রম নিয়ে টানেল ছেড়ে যায়। সার্ভার ঠিকানার ক্ষেত্রে, VPN সার্ভারে পৌঁছাতে ক্লায়েন্টের যে রুট দরকার তা টানেলের বাইরে থাকে, এবং যে প্রতিপক্ষ ওই ঠিকানা নিয়ন্ত্রণ করে সে ব্যতিক্রমটি কাজে লাগাতে পারে।

TunnelVision হলো DHCP-প্রদত্ত ক্লাসহীন স্ট্যাটিক রুট নিয়ে একটি আলাদা প্রতিবেদন। একটি দুষ্ট DHCP সার্ভার শেষ প্রান্তকে এমন রুট দিতে পারে যা ট্র্যাফিকের পথ বদলে দেয়, VPN সার্ভারের দিকের পথসহ। প্রতিবেদনটি সম্পর্কিত রাউটিং প্রভাব নিয়ে আগের কাজের কথা স্বীকার করে, যা মনে করিয়ে দেয় মূল কৌশলটি নামের চেয়ে পুরোনো।

CaseException it abuses
TunnelCrack local networkTraffic classified as local bypasses the tunnel
TunnelCrack server addressThe route to the VPN server sits outside the tunnel
TunnelVisionDHCP option 121 installs routes that redirect traffic

নামগুলো তাদের কৌশলের সঙ্গে যুক্ত রাখুন। অন্যটি খবরে থাকায় একটির জন্য সমাধান প্রয়োগ করাই হলো সেই উপায় যেখানে পর্যালোচনা আচ্ছাদন ছাড়াই গতি তৈরি করে।

দ্বিতীয় ধাপ: স্থানীয়-প্রবেশাধিকারের ব্যতিক্রমটি দেখুন

বেশিরভাগ ক্লায়েন্ট স্থানীয় নেটওয়ার্কের ট্র্যাফিক ছাড় দেয় যাতে টানেল চালু থাকা অবস্থায় প্রিন্টার, কাস্টিং ও ফাইল শেয়ারিং কাজ করে। এই ছাড় নিরাপত্তার মূল্যসহ একটি নীতি-সিদ্ধান্ত: একই নেটওয়ার্কের প্রতিপক্ষ নিজেকে স্থানীয় হোস্ট হিসেবে উপস্থাপন করতে পারে, এবং যে ট্র্যাফিক তার কাছে পৌঁছায় তা কখনো টানেলে ঢোকেনি।

জিজ্ঞাসা করুন, মোতায়েন করা প্রোফাইলের আদৌ এই ছাড় দরকার কি না। যে দূরবর্তী কর্মীবাহিনী কখনো স্থানীয় আবিষ্কার ব্যবহার করে না তারা প্রায়ই এটি বন্ধ করতে পারে, আর বাকি স্থানীয় সেবাগুলো নথিভুক্ত পথে পাওয়া যেতে পারে। যেখানে ছাড় আবশ্যক, সেখানে এটিকে স্থানীয় ট্র্যাফিক বলে বর্ণনা না করে বলুন এটি কোন গন্তব্যগুলো কভার করে।

পরীক্ষাটি কনফিগারেশনের প্রশ্ন, প্যাকেট ক্যাপচারের নয়। প্রোফাইল সেটিং এবং আপনি যে বিল্ড মোতায়েন করছেন তার ক্লায়েন্ট ডকুমেন্টেশন পড়ুন, কারণ ডিফল্ট পণ্যভেদে এবং একই পণ্যের সংস্করণভেদে আলাদা। উত্তরটি প্রোফাইলের পাশে লিখুন, যাতে পরবর্তী পর্যালোচককে তা আচরণ থেকে অনুমান করতে না হয়। যে ছাড় কেউ নথিভুক্ত করেনি, তা এমন ছাড় যা কেউ পর্যালোচনা করে না।

তৃতীয় ধাপ: সার্ভারের ঠিকানা কীভাবে শেখা হয় তা দেখুন

কোনো টানেল তৈরির আগেই ক্লায়েন্টকে VPN সার্ভারে পৌঁছাতে হয়, তাই ওই গন্তব্য নকশা অনুযায়ী টানেলের বাইরে রাউট হয়। ঠিকানাটি যদি নাম থেকে শেখা হয়, তবে রিজলিউশনের ধাপটি বিশ্বাসের পথের অংশ, এবং ওই প্রশ্নের উত্তর দিতে সক্ষম প্রতিপক্ষ ক্লায়েন্টকে তার নিয়ন্ত্রিত হোস্টে পাঠাতে পারে।

ঠিকানাটি পিন করা, সঠিক নামসহ যাচাইকৃত সার্টিফিকেট ব্যবহার করা এবং অযাচাইকৃত সার্ভারে ফিরে না যেতে অস্বীকার করা — এগুলোর প্রত্যেকটি ঝুঁকি কমায়। এগুলোর কোনোটিই টানেলের বাইরে সার্ভারে পৌঁছানোর প্রয়োজন মেটায় না; এরা বদলে দেয় কে ওই ঠিকানার পক্ষে উত্তর দিতে পারে।

resolvectl query vpn.lab.example
ip route get 198.51.100.24
ip rule show

রুট অনুসন্ধান দেখায় ক্লায়েন্ট সার্ভারের ঠিকানার জন্য কোন ইন্টারফেস ব্যবহার করত, যা ব্যতিক্রমটির মূর্ত রূপ। যদি ওই অনুসন্ধান টানেল ইন্টারফেস ফেরত দেয়, তবে ক্লায়েন্ট আদৌ টানেল প্রতিষ্ঠা করতে পারে না, তাই বাইরের রুট প্রত্যাশিত এবং প্রশ্ন শুধু তার গন্তব্য কীভাবে বেছে নেওয়া হয়।

চতুর্থ ধাপ: DHCP-প্রদত্ত রুটগুলো দেখুন

ক্লাসহীন স্ট্যাটিক রুট DHCP সার্ভারকে রাউটিং টেবিলের এন্ট্রি বিতরণ করতে দেয়, এবং শেষ প্রান্ত সাধারণত না জিজ্ঞেস করেই সেগুলো গ্রহণ করে। যে নেটওয়ার্কে প্রতিপক্ষ বৈধ সার্ভারের চেয়ে দ্রুত DHCP-এর উত্তর দিতে পারে, সেখানে ওই এন্ট্রিগুলো ব্যবহারকারীর টানেলের ভেতরে ভাবা ট্র্যাফিক পুনর্নির্দেশ করতে পারে।

শেষ প্রান্তের রুটগুলোর সঙ্গে আপনার প্রত্যাশিত রুটগুলোর তুলনা করুন। টানেল চালু থাকা অবস্থায় স্থানীয় গেটওয়ের দিকে নির্দেশ করা ডিফল্ট রুট বা বিস্তৃত প্রিফিক্স হলো তদন্তযোগ্য স্বাক্ষর, এবং এটি কোনো আক্রমণ ট্র্যাফিক ছাড়াই দৃশ্যমান।

ip route show table all
ip route get 203.0.113.55
nmcli -g ipv4.ignore-auto-routes con show "Wired connection 1"

শেষ সেটিংটি হলো শেষ প্রান্তের দিকের নিয়ন্ত্রণ যা অনেক ক্লায়েন্ট ও প্ল্যাটফর্ম কোনোভাবে প্রকাশ করে: নেটওয়ার্কের দেওয়া রুট উপেক্ষা করা। স্বয়ংক্রিয় রুট গ্রহণ বন্ধ করা একটি সমঝোতা, কারণ এটি কর্পোরেট DHCP সার্ভার থেকে বৈধ বিভক্ত রাউটিংও বন্ধ করে, তাই এটি বিশ্বব্যাপী নয়, নেটওয়ার্ক শ্রেণি অনুযায়ী ঠিক করুন।

পঞ্চম ধাপ: বিজ্ঞপ্তিকে বর্তমান বিল্ড থেকে আলাদা করুন

প্রকাশিত আক্রমণটি নির্দিষ্ট সময়ে নির্দিষ্ট ক্লায়েন্ট সংস্করণে পর্যবেক্ষণ করা আচরণ বর্ণনা করে। এটি প্রমাণ করে না যে আপনার সামনের ল্যাপটপটি প্রভাবিত, এবং প্রমাণ করে না যে এটি ঠিক করা হয়েছে। দুটি দাবিরই প্রকৃত বিল্ড নম্বর এবং বিক্রেতার বর্তমান বিজ্ঞপ্তি দরকার।

ক্লায়েন্ট সংস্করণ, প্ল্যাটফর্ম, উপরের ব্যতিক্রমগুলো নিয়ন্ত্রণকারী প্রোফাইল সেটিং এবং আপনি যে তারিখে যাচাই করেছেন তা লিখে রাখুন। ওই রেকর্ড সৎভাবে পুরোনো হয়, অথচ TunnelCrack-এর জন্য VPN প্যাচ করা হয়েছে—এমন একটি নোট পুরোনো হয় না। ক্লায়েন্ট আপডেট হলেই এটি আবার পড়ুন, কারণ আপনি যে সংস্করণ স্পর্শ করেননি তার অধীনেও প্রোফাইলের ডিফল্ট বদলাতে পারে।

আপনি যখন সত্যিই যাচাই করেন, তখন নিজের শেষ প্রান্ত ও নিরীহ গন্তব্যের বিরুদ্ধে অনুমোদিত পরিকল্পনা ব্যবহার করুন। শেয়ার করা নেটওয়ার্কে অন্য ব্যবহারকারীদের বিরুদ্ধে আক্রমণ পুনরুৎপাদন করা পরীক্ষা নয়, আর পর্যবেক্ষণ সহজ করতে পিয়ার যাচাই বা অ্যাপ্লিকেশন এনক্রিপশন বন্ধ করা আপনি যে সুরক্ষা মাপতে চেয়েছিলেন তা সরিয়ে দেয়।

শেষে, অ্যাপ্লিকেশন-স্তরের সুরক্ষা দৃশ্যে রাখুন। একটি রাউটিং ব্যতিক্রম টানেল যে ট্র্যাফিক বহন করত তা প্রকাশ করতে পারে, এবং অ্যাপ্লিকেশনের TLS এখনও ওই ট্র্যাফিককে প্রান্ত থেকে প্রান্ত রক্ষা করে। দুটি স্তর স্বাধীনভাবে ব্যর্থ হয়, তাই একটি সংযুক্ত নিয়ন্ত্রণ চ্যানেল প্রমাণ নয় যে প্রতিটি প্রবাহ অভীষ্ট পথে গেছে।

সম্পর্কিত নিবন্ধ