HackCert
Advanced 11 min read May 25, 2026

Browser Exploitation: ওয়েব ব্রাউজারের দুর্বলতা ব্যবহার করে সিস্টেমের নিয়ন্ত্রণ নেওয়া!

Browser Exploitation-এর গভীর কারিগরি দিক—JavaScript engine বাগ, sandbox escape, RCE এবং প্রতিরোধের আধুনিক কৌশল।

Omar Faruq Hossain
Offensive Security Researcher
share
Browser Exploitation: ওয়েব ব্রাউজারের দুর্বলতা ব্যবহার করে সিস্টেমের নিয়ন্ত্রণ নেওয়া!
Overview

আধুনিক ওয়েব ব্রাউজার আসলে একটি ক্ষুদ্র অপারেটিং সিস্টেমের মতো। এটি কোটি কোটি লাইনের কোড, ডজন খানেক প্রোগ্রামিং ল্যাঙ্গুয়েজ, এবং অগণিত API একত্রিত করে যেকোনো ওয়েবসাইট থেকে আসা কোড নিরাপদে এক্সিকিউট করে। কিন্তু এই বিশাল আক্রমণ পৃষ্ঠতলে একটি ছোট্ট বাগই যথেষ্ট একজন আক্রমণকারীকে সম্পূর্ণ সিস্টেমের নিয়ন্ত্রণ দিতে। শূন্য-দিনের ব্রাউজার এক্সপ্লয়েট কালোবাজারে কয়েক মিলিয়ন ডলারে বিক্রি হয়, কারণ এগুলো শুধু একটি ওয়েবসাইট ভিজিট করিয়ে রিমোট কোড এক্সিকিউশন পর্যন্ত নিয়ে যেতে পারে। এই আর্টিকেলে আমরা Browser Exploitation-এর জটিল কারিগরি দিক, আক্রমণের চেইন, এবং প্রতিরোধের কৌশল বিশ্লেষণ করব।

আধুনিক ব্রাউজার আর্কিটেকচার

Browser Exploitation বুঝতে হলে প্রথমে ব্রাউজারের অভ্যন্তরীণ গঠন বোঝা জরুরি। Chrome, Firefox এবং Safari সবাই Multi-Process Architecture অনুসরণ করে। প্রতিটি ট্যাব বা সাইট আলাদা Renderer Process-এ চলে, যা একটি কঠোর Sandbox-এর মধ্যে বন্দী। Browser Process নিজেই ফাইল সিস্টেম ও নেটওয়ার্ক অ্যাক্সেসের অনুমতি দেয়, GPU Process গ্রাফিক্স রেন্ডারিং পরিচালনা করে, এবং Network Service নেটওয়ার্ক রিকোয়েস্ট হ্যান্ডেল করে।

প্রতিটি Renderer Process-এর মূল উপাদানগুলো হলো JavaScript Engine (V8, SpiderMonkey, JavaScriptCore), Layout Engine (Blink, Gecko, WebKit), এবং বিভিন্ন Web API-এর বাস্তবায়ন। এর প্রতিটি কম্পোনেন্টেই দুর্বলতা থাকতে পারে এবং প্রতিটির জন্য ভিন্ন শোষণ কৌশল প্রয়োজন।

JavaScript Engine শোষণ

আধুনিক ব্রাউজার এক্সপ্লয়েটের সিংহভাগই JavaScript Engine-এ পাওয়া বাগের ওপর নির্ভরশীল। V8 এবং SpiderMonkey JIT (Just-In-Time) Compilation ব্যবহার করে JavaScript-কে নেটিভ মেশিন কোডে রূপান্তর করে গতি বাড়ায়। কিন্তু JIT কম্পাইলেশনের সময় Type Confusion, Bounds Check Elimination, বা Speculative Execution-এর ভুল করলে গুরুতর দুর্বলতা তৈরি হয়।

একটি সাধারণ আক্রমণ চেইনে আক্রমণকারী প্রথমে একটি Type Confusion বাগ ব্যবহার করে আপাত-অসংলগ্ন দুটি অবজেক্টকে একই মেমরি অবস্থানে ম্যাপ করেন। এর ফলে একটি Float Array-কে যদি Object Array হিসেবে আক্রমণকারী ব্যবহার করতে পারেন, তাহলে তিনি ইচ্ছেমতো মেমরি ঠিকানা পড়তে ও লিখতে পারেন। এই ক্ষমতাকে বলা হয় arbitrary read/write primitive।

এরপর আক্রমণকারী WebAssembly-এর একটি RWX (Read-Write-Execute) মেমরি পেজ খুঁজে বের করেন এবং সেখানে নিজস্ব শেলকোড লিখে এক্সিকিউট করেন। CFI (Control Flow Integrity) এবং CET (Control-flow Enforcement Technology) থাকলেও JOP (Jump-Oriented Programming) বা ROP (Return-Oriented Programming) ব্যবহার করে এগুলো বাইপাস করা সম্ভব।

DOM ও Use-After-Free

দ্বিতীয় বড় আক্রমণ পৃষ্ঠতল হলো DOM (Document Object Model) বাস্তবায়ন। Use-After-Free (UAF) বাগ ব্রাউজারে অত্যন্ত সাধারণ, কারণ DOM-এ অনেক অবজেক্ট একে অপরের সাথে জটিলভাবে সংযুক্ত এবং তাদের আজীবন ব্যবস্থাপনা চ্যালেঞ্জিং। একটি DOM উপাদান মুছে ফেলার পরও যদি কোনো JavaScript ভেরিয়েবল সেই উপাদানের ঠিকানা ধরে রাখে, তাহলে দাঙ্গাটে পরিস্থিতি তৈরি হয়।

আক্রমণকারী Heap Spraying কৌশল ব্যবহার করে মুক্ত হওয়া মেমরি অবস্থানে নিজস্ব নিয়ন্ত্রিত ডেটা স্থাপন করেন। যখন ব্রাউজার আবার সেই অবজেক্ট ব্যবহার করার চেষ্টা করে, তখন এটি প্রকৃতপক্ষে আক্রমণকারীর ডেটা ব্যবহার করে, যা বিভিন্ন প্রিমিটিভ তৈরিতে সহায়তা করে। Project Zero-এর গবেষকরা Chrome-এর Blink রেন্ডারিং ইঞ্জিনে ডজন খানেক এমন UAF বাগ আবিষ্কার করেছেন।

Sandbox Escape

JavaScript Engine বা DOM-এ RCE পাওয়াই Browser Exploitation-এর শেষ নয়। কারণ Renderer Process একটি কঠোর Sandbox-এ চলে যেখানে ফাইল সিস্টেম বা সিস্টেম কল-এর অ্যাক্সেস অত্যন্ত সীমিত। Chrome-এর Sandbox বিভিন্ন OS-নির্দিষ্ট প্রযুক্তি ব্যবহার করে—Windows-এ Job Objects এবং Restricted Tokens, Linux-এ Seccomp-BPF, এবং macOS-এ Sandbox.framework।

Sandbox থেকে বের হতে আক্রমণকারীকে দ্বিতীয় একটি দুর্বলতা প্রয়োজন—সাধারণত GPU Process, Browser Process, অথবা Kernel-এ। GPU Process-এ IPC (Inter-Process Communication) মেসেজ পার্স করার সময় বাগ থাকতে পারে। Browser Process মাঝে মাঝে Privileged API এক্সপোজ করে যা অপব্যবহার করা যায়। সবচেয়ে শক্তিশালী আক্রমণে সরাসরি Kernel-লেভেলের দুর্বলতা ব্যবহার করে রুট প্রিভিলেজ পাওয়া হয়।

বাস্তব উদাহরণ ও CVE বিশ্লেষণ

২০২১ সালের CVE-2021-30551 ছিল Chrome-এর V8 JavaScript Engine-এ একটি Type Confusion দুর্বলতা যা North Korea-সম্পর্কিত হ্যাকার গোষ্ঠী শূন্য-দিনের আক্রমণে ব্যবহার করেছিল। ভুক্তভোগীরা একটি দূষিত লিঙ্কে ক্লিক করার সাথে সাথেই তাদের কম্পিউটার আপস হয়ে যেত।

CVE-2022-1364 ছিল আরেকটি V8 Type Confusion যা Pwn2Own প্রতিযোগিতায় প্রদর্শিত হয়েছিল। গবেষক এটি ব্যবহার করে শুধু একটি ওয়েবপেজ দেখার মাধ্যমে calc.exe লঞ্চ করে দেখিয়েছিলেন। Pwn2Own-এ প্রতি বছর Chrome, Firefox, Safari ও Edge-এর বিরুদ্ধে নতুন এক্সপ্লয়েট চেইন প্রদর্শিত হয়, প্রতিটির পুরস্কার মূল্য কয়েক লাখ ডলার।

আরেকটি উল্লেখযোগ্য উদাহরণ হলো FORCEDENTRY এক্সপ্লয়েট, যা NSO Group-এর Pegasus স্পাইওয়্যারে ব্যবহৃত হয়েছিল। যদিও এটি সরাসরি ব্রাউজার নয় বরং iMessage-এর মাধ্যমে কাজ করত, এর কোর প্রিন্সিপাল ছিল একই—একটি PDF/GIF পার্সিং দুর্বলতা থেকে শূন্য-ক্লিক RCE।

টুলিং ও গবেষণা পদ্ধতি

ব্রাউজার দুর্বলতা গবেষণায় Fuzzing সবচেয়ে কার্যকর কৌশল। AFL++, Honggfuzz, এবং libFuzzer ব্যবহার করে JavaScript Engine-এ লক্ষ লক্ষ র‌্যান্ডম ইনপুট পাঠিয়ে ক্র্যাশ খোঁজা হয়। Google-এর ClusterFuzz Chrome-এর ফাজিং অবকাঠামো হিসেবে প্রতিদিন কোটি কোটি টেস্ট কেস চালায়।

Fuzzilli হলো JavaScript Engine ফাজিংয়ের জন্য বিশেষায়িত একটি টুল যা সিনট্যাকটিক্যালি বৈধ এবং সিম্যান্টিকালি জটিল JavaScript কোড তৈরি করে। Domato-ও DOM ফাজিংয়ের জন্য ব্যবহৃত একটি জনপ্রিয় টুল।

রিভার্স ইঞ্জিনিয়ারিংয়ের জন্য গবেষকরা V8-এর ডিবাগ বিল্ড কম্পাইল করেন এবং --allow-natives-syntax ফ্ল্যাগ সহ চালান, যা অভ্যন্তরীণ অবজেক্ট স্ট্রাকচার পরিদর্শনের অনুমতি দেয়। %DebugPrint(obj)-এর মতো বিল্ট-ইন ফাংশন অবজেক্টের মেমরি লেআউট প্রিন্ট করে।

প্রতিরোধ ও প্রতিকার

ব্রাউজার বিক্রেতারা একাধিক স্তরের সুরক্ষা প্রয়োগ করেন। প্রথমত, Site Isolation নিশ্চিত করে প্রতিটি অরিজিন আলাদা প্রসেসে চলে, যা cross-site তথ্য চুরি কঠিন করে। দ্বিতীয়ত, V8-এর Sandbox আইসোলেশন JavaScript-এর মেমরি কর্পশন বাগের প্রভাব সীমিত করে।

তৃতীয়ত, ASLR (Address Space Layout Randomization), DEP/NX (Data Execution Prevention), Stack Canaries, এবং Control Flow Integrity-র মতো প্রচলিত মেমরি সুরক্ষা ব্যবস্থা প্রয়োগ করা হয়। চতুর্থত, Rust-এর মতো মেমরি-নিরাপদ ভাষায় ব্রাউজার কম্পোনেন্ট পুনঃলিখন একটি ক্রমবর্ধমান প্রবণতা—Firefox-এর Servo এবং Quantum প্রকল্প এর উদাহরণ।

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

উচ্চ-ঝুঁকিপূর্ণ ব্যবহারকারীদের জন্য Chrome-এর Enhanced Safe Browsing বা Apple Safari-এর Lockdown Mode সক্রিয় করা উচিত। প্রতিষ্ঠানগত পরিবেশে Group Policy-এর মাধ্যমে JavaScript JIT নিষ্ক্রিয় করা যেতে পারে, যদিও এটি কর্মক্ষমতায় প্রভাব ফেলে। নেটওয়ার্ক স্তরে URL Filtering এবং DNS Sinkhole ব্যবহার করে পরিচিত দূষিত ডোমেইন ব্লক করা যায়।

Key Takeaways

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

আপনার জ্ঞান যাচাই করতে প্রস্তুত? আজই HackCert-এ Browser Exploitation MCQ Quiz-টি দিন!

Related articles

back to all articles