HackCert
Advanced 12 min read May 25, 2026

Heap Exploitation: মেমোরির ডাইনামিক অ্যালোকেশন দুর্বলতা কাজে লাগিয়ে সিস্টেম হ্যাকিং!

Heap Exploitation-এর গভীর কৌশল: Use-After-Free, Double Free, Heap Overflow, glibc Internals এবং আধুনিক প্রতিরক্ষা বাইপাস।

Ahmed Rafiq Khan
Exploit Developer
share
Heap Exploitation: মেমোরির ডাইনামিক অ্যালোকেশন দুর্বলতা কাজে লাগিয়ে সিস্টেম হ্যাকিং!
Overview

বাইনারি এক্সপ্লয়টেশনের জগতে Stack Buffer Overflow ছিল প্রথম প্রজন্মের আক্রমণ—Aleph One-এর "Smashing the Stack for Fun and Profit" নিবন্ধ যুগের পর যুগ ধরে গবেষকদের অনুপ্রাণিত করেছে। কিন্তু সময়ের সাথে Stack Cookie, ASLR, DEP/NX, এবং Control Flow Integrity-এর মতো প্রতিরক্ষা ব্যবস্থা Stack-Based আক্রমণকে কঠিন করে তুলেছে। ঠিক তখনই গবেষকদের নজর পড়ে আরেকটি জটিল কিন্তু সমৃদ্ধ ক্ষেত্রে—Heap Exploitation। Heap হলো প্রোগ্রামের ডাইনামিক মেমোরি অঞ্চল, যেখানে malloc, new, এবং অন্যান্য Allocator রানটাইমে মেমোরি প্রদান করে। এই অঞ্চলের ব্যবস্থাপনা অত্যন্ত জটিল, এবং সেই জটিলতাই Use-After-Free, Double Free, Heap Overflow, এবং আরও সূক্ষ্ম আক্রমণের ভিত্তি। Project Zero, Chromium Security, এবং Microsoft MSRC আজকের অধিকাংশ Critical RCE-এর পেছনে Heap-Related Memory Corruption-কে দায়ী করছে। আধুনিক CTF প্রতিযোগিতা এবং Browser Exploitation-এ Heap Exploitation একটি অপরিহার্য দক্ষতা।

Heap Memory Layout-এর মৌলিক ধারণা

Linux-এ glibc-এর malloc/free Implementation ptmalloc2-এর উপর ভিত্তি করে তৈরি, যা Wolfram Gloger-এর গবেষণা থেকে এসেছে। প্রতিটি Allocation একটি Chunk হিসেবে সংরক্ষিত হয়, যার একটি Metadata Header থাকে। Chunk-এর গঠন: prev_size, size, fd (Forward Pointer), bk (Backward Pointer)—যেখানে fd এবং bk শুধু Freed Chunk-এ থাকে।

Heap কয়েকটি Bin-এ সংগঠিত: Fast Bin (16-80 byte ছোট Chunk), Small Bin, Large Bin, Unsorted Bin, এবং Tcache (Thread-Local Cache, glibc 2.26+-এ পরিচয়প্রাপ্ত)। প্রতিটি Bin আলাদা Allocation এবং Deallocation আচরণ অনুসরণ করে।

Tcache-এর পরিচয় glibc 2.26-এ সংযোজিত একটি গুরুত্বপূর্ণ পরিবর্তন। প্রতিটি Thread-এর জন্য আলাদা Cache, যেখানে ছোট Chunk দ্রুত পুনঃব্যবহার করা যায়। Tcache পুরাতন আক্রমণ পদ্ধতিগুলোকে কঠিন করেছে কিন্তু নতুন কিছু কৌশলও উন্মুক্ত করেছে।

প্রতিটি Chunk-এর Size Field-এর শেষ তিনটি বিট Flag হিসেবে ব্যবহৃত হয়: PREV_INUSE (P), IS_MMAPPED (M), এবং NON_MAIN_ARENA (N)। এই বিটগুলোর অপব্যবহার অনেক আক্রমণের ভিত্তি।

Top Chunk একটি বিশেষ Chunk যা Heap-এর শেষে থাকে এবং সব Allocation-এর জন্য Reservoir হিসেবে কাজ করে। এটি Manipulate করতে পারলে Arbitrary Address Allocation সম্ভব—"House of Force" আক্রমণের ভিত্তি।

প্রধান Heap Vulnerability শ্রেণিসমূহ

Heap Overflow সবচেয়ে সাধারণ দুর্বলতা। যখন একটি প্রোগ্রাম Allocated Buffer-এর সীমার বাইরে লেখে, তখন পরবর্তী Chunk-এর Metadata দূষিত হয়। সাবধানে Crafted Overflow-এ আক্রমণকারী Size Field পরিবর্তন করে Allocator-কে বিভ্রান্ত করতে পারে।

Use-After-Free (UAF) আরেকটি গুরুত্বপূর্ণ শ্রেণি। যখন একটি অবজেক্ট free() করার পরও তার Pointer ব্যবহার করা হয়, এবং সেই মেমোরি অঞ্চল ইতিমধ্যে আক্রমণকারীর নিয়ন্ত্রণে আছে, তখন Code Execution সম্ভব হয়। Browser এবং Kernel-এ UAF সবচেয়ে ঘন ঘন পাওয়া যায়।

Double Free-তে একই Pointer দুইবার free() করা হয়। আগে এটি সরাসরি Exploit করা যেত, কিন্তু আধুনিক glibc-এ Double Free Detection যুক্ত হয়েছে। Tcache-এর মাধ্যমে এখনো অনেক Double Free আক্রমণ সম্ভব।

Off-by-One Overflow ছোট কিন্তু বিধ্বংসী। যখন একটি Loop ১ বাইট বেশি লেখে, তখন পরবর্তী Chunk-এর Size Field-এর LSB পরিবর্তন হয়। এটি Poison Null Byte Attack-এর ভিত্তি।

Type Confusion-এ একটি Memory Region-কে এক ধরনের Object হিসেবে Allocate করে অন্য ধরনের Object হিসেবে Interpret করা হয়। C++ এবং JavaScript Engine-এ Type Confusion প্রায়ই RCE-এর দিকে নিয়ে যায়।

Heap Spray একটি সহায়ক কৌশল যেখানে আক্রমণকারী Heap-এ ব্যাপক পরিমাণে Predictable Data Allocate করে যাতে যেকোনো Hijacked Pointer তার Controlled Data-তে Land করে।

বিখ্যাত আক্রমণ কৌশল ("House of" সিরিজ)

Heap Exploitation-এ "House of" নামক একটি বিখ্যাত আক্রমণ সিরিজ রয়েছে, যা phrack এবং বিভিন্ন CTF থেকে এসেছে।

House of Force-এ Top Chunk-এর Size Field-কে একটি বিশাল মান (যেমন 0xffffffff) দিয়ে Overwrite করা হয়। এরপর malloc(target - top_chunk) কল করলে Allocator যেকোনো Memory Address-এ Allocate করে দেয়। glibc 2.29 থেকে Top Chunk Integrity Check যুক্ত হওয়ায় এটি এখন কঠিন।

House of Spirit-এ একটি Fake Chunk তৈরি করে Fast Bin-এ Insert করা হয়। পরবর্তী malloc সেই Fake Chunk Return করে, যা যেকোনো Memory অঞ্চলে হতে পারে।

House of Lore Large Bin Manipulation-এর মাধ্যমে Arbitrary Read/Write প্রদান করে। House of Einherjar Off-by-One Null Byte-কে কাজে লাগিয়ে Backward Consolidation-এ ফাঁকি দেয়।

House of Orange একটি অসাধারণ আক্রমণ যেখানে Heap Vulnerability-কে File Stream Exploitation-এর সাথে যুক্ত করা হয়। _IO_FILE Structure Manipulate করে _IO_vtable Hijack করে Code Execution পাওয়া যায়।

House of Rabbit, House of Storm, House of Gods—এই সিরিজ ক্রমশ বেড়েই চলেছে যেহেতু গবেষকরা glibc-এর প্রতিরক্ষার বিরুদ্ধে নতুন কৌশল আবিষ্কার করছেন।

আধুনিক যুগে Tcache Poisoning সবচেয়ে জনপ্রিয় কৌশল। Free Chunk-এর fd Pointer Overwrite করে পরবর্তী Allocation কোথায় হবে তা নিয়ন্ত্রণ করা যায়। glibc 2.32 থেকে "Safe-Linking" যুক্ত হয়েছে যা এই Pointer-কে XOR-Mangle করে, কিন্তু Heap Leak থাকলে এটি বাইপাস করা সম্ভব।

Browser এবং JavaScript Engine Exploitation

Modern Browser Exploitation-এর সিংহভাগ Heap Exploitation। V8 (Chrome), SpiderMonkey (Firefox), JavaScriptCore (Safari), এবং Chakra (এজ-এর পুরাতন)—সব JavaScript Engine-এ Custom Garbage Collector এবং Heap Allocator রয়েছে।

JavaScript-এ Heap Spray অপেক্ষাকৃত সহজ—new ArrayBuffer(0x1000) বা new Float64Array(0x100) দিয়ে আক্রমণকারী মেমোরি লেআউট নিয়ন্ত্রণ করে। Type Confusion JIT Compiler-এর Optimization Bug থেকে আসে—যেখানে Compiler ভুলভাবে অনুমান করে কোনো Variable কোন Type।

WebAssembly এবং Just-In-Time (JIT) Compiled কোড RWX (Read-Write-Execute) Memory অঞ্চল তৈরি করে, যা DEP-কে কার্যকরভাবে বাইপাস করে। JIT Spray একটি কৌশল যেখানে আক্রমণকারী JavaScript-এ এমন কোড লেখে যা JIT-এ Compile হলে নির্দিষ্ট ROP Gadget তৈরি হয়।

Project Zero-র গবেষক Mark Brand, Lucas Pinheiro, এবং Samuel Groß অসংখ্য Browser RCE পাবলিকলি প্রকাশ করেছেন। Pwn2Own প্রতিযোগিতায় Browser Exploit প্রায়শই Heap Use-After-Free এবং Type Confusion-এর উপর নির্ভর করে।

Linux Kernel Heap Exploitation

Kernel-এ Heap Exploitation আরেকটি বিশেষায়িত শাখা। Linux Kernel SLAB/SLUB/SLOB Allocator ব্যবহার করে, যা ptmalloc থেকে ভিন্ন। প্রতিটি Object Type-এর জন্য আলাদা "kmem_cache" থাকে।

Kernel UAF-এর সবচেয়ে বিখ্যাত উদাহরণ Dirty Pipe (CVE-2022-0847) এবং Dirty COW (CVE-2016-5195)। msg_msg, pipe_buffer, tty_struct, seq_operations—এগুলো Kernel Exploitation-এ ব্যাপকভাবে ব্যবহৃত Object।

kASLR, SMEP, SMAP, KPTI-এর মতো প্রতিরক্ষা ব্যবস্থা Kernel Exploitation-কে চ্যালেঞ্জিং করেছে, কিন্তু StackRot (CVE-2023-3269) এবং StackOverflow-এর মতো সাম্প্রতিক CVE প্রমাণ করেছে এই ক্ষেত্রে এখনও সক্রিয় গবেষণা চলছে।

বাস্তব উদাহরণ ও CVE

WhatsApp-এর CVE-2019-3568-এর মাধ্যমে NSO Group-এর Pegasus Spyware ইনস্টল করা হয়েছিল—যা একটি Heap Buffer Overflow ছিল VoIP প্রটোকলে। শুধু একটি Missed Call দিয়েই Device Compromise সম্ভব ছিল।

Chrome-এর V8 Engine-এ ২০২৩ সালে আবিষ্কৃত CVE-2023-2033 একটি Type Confusion ছিল যা সক্রিয়ভাবে Exploit হচ্ছিল। Google Project Zero নিয়মিতভাবে এমন Zero-Day আবিষ্কার করে।

Apple-এর WebKit-এ ২০২২ সালে CVE-2022-32893 ব্যবহার করে iPhone Hack করা হয়েছিল—একটি Use-After-Free যা WebContent Process-এ RCE প্রদান করত।

Internet Explorer-এর IE 0day Aurora আক্রমণ (২০১০) Google-এর বিরুদ্ধে চীনা অপারেশনে ব্যবহৃত হয়েছিল—যা UAF ছিল।

Adobe Flash Player-এর অসংখ্য UAF এবং Heap Overflow Exploit-এ ব্যবহৃত হয়েছে, যা শেষ পর্যন্ত Flash-কে Discontinue করার একটি কারণ হয়ে দাঁড়িয়েছিল।

আধুনিক প্রতিরক্ষা ব্যবস্থা এবং বাইপাস

আধুনিক Heap Allocator-এ বহু সুরক্ষা ব্যবস্থা যুক্ত হয়েছে। glibc-তে: Chunk Size Sanity Check, Double Free Detection (Tcache এবং Fast Bin), Unsorted Bin Integrity Check, Top Chunk Size Validation, এবং Safe-Linking।

Compiler-Level প্রতিরক্ষায় AddressSanitizer (ASan) এবং HardenedMalloc মেমোরি ত্রুটি দ্রুত শনাক্ত করে। Control Flow Integrity (CFI), Indirect Function Call Tracking, এবং Shadow Stack Pointer Hijacking কঠিন করে।

Microsoft Windows-এ Low Fragmentation Heap (LFH), Heap Cookie, এবং Heap Address Randomization যুক্ত হয়েছে। CET (Control-flow Enforcement Technology) Hardware-Level Shadow Stack প্রদান করে।

কিন্তু প্রতিটি প্রতিরক্ষার বিরুদ্ধে বাইপাস আবিষ্কৃত হচ্ছে। Heap Leak (Address Disclosure) ASLR বাইপাসের ভিত্তি। ROP Chain Construction এখনও কার্যকর। JIT Spray DEP বাইপাস করে।

Heap Feng Shui—Alex Sotirov-এর প্রবর্তিত একটি কৌশল—যেখানে আক্রমণকারী সাবধানে Heap-এ অবজেক্ট Allocate এবং Free করে নির্দিষ্ট লেআউট তৈরি করে। এটি আধুনিক Heap Exploitation-এর কেন্দ্রীয় দক্ষতা।

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

Heap Exploitation থেকে সুরক্ষায় Defensive Coding প্রথম পদক্ষেপ। প্রথমত, Memory-Safe Language ব্যবহার করুন যেখানে সম্ভব। Rust, Go, Swift-এ Heap Memory Corruption Bug প্রায় অসম্ভব। Microsoft এবং Google ক্রমশ Rust-এ Core System Code লিখছে।

দ্বিতীয়ত, C/C++ কোডে Smart Pointer (std::unique_ptr, std::shared_ptr), Container (std::vector), এবং RAII Pattern ব্যবহার করুন। Manual malloc/free এড়িয়ে চলুন।

তৃতীয়ত, Sanitizer প্রয়োগ করুন। AddressSanitizer, MemorySanitizer, এবং HeapSanitizer Development এবং Fuzzing পর্যায়ে অসংখ্য Bug ধরে।

চতুর্থত, Allocator Hardening Library ব্যবহার করুন। GrapheneOS-এর hardened_malloc, Chromium-এর PartitionAlloc, এবং mimalloc Modern Security Features প্রদান করে।

পঞ্চমত, Static Analysis টুল যেমন Coverity, Klocwork, এবং CodeQL দিয়ে কোডবেস স্ক্যান করুন।

ষষ্ঠত, Fuzzing চালান। AFL++, libFuzzer, এবং Honggfuzz Heap Corruption Bug শনাক্ত করতে অত্যন্ত কার্যকর।

সপ্তমত, Compiler Hardening Flag ব্যবহার করুন: -D_FORTIFY_SOURCE=2, -fstack-protector-strong, -fcf-protection, -fsanitize=address

অষ্টমত, Library Update নিয়মিত করুন। glibc, OpenSSL, এবং অন্যান্য সিস্টেম লাইব্রেরির নিরাপত্তা প্যাচ সময়মতো প্রয়োগ করুন।

নবমত, Operating System-Level Protection চালু রাখুন: ASLR (kernel.randomize_va_space=2), DEP, KPTI, এবং SMEP।

দশমত, Threat Modeling-এ Heap Attack Surface অন্তর্ভুক্ত করুন। Untrusted Input কোথায় Heap Allocation ট্রিগার করে তা চিহ্নিত করুন।

Key Takeaways

Heap Exploitation আধুনিক বাইনারি এক্সপ্লয়টেশনের শিখর। glibc-এর জটিল Allocator Logic, Browser-এর Custom Heap, Kernel SLAB Allocator—প্রতিটির নিজস্ব আক্রমণ পৃষ্ঠ এবং প্রতিরক্ষা ব্যবস্থা রয়েছে। Use-After-Free, Double Free, Heap Overflow, Type Confusion, এবং Tcache Poisoning-এর মতো কৌশল আজকের অধিকাংশ Critical Browser এবং Kernel RCE-এর ভিত্তি। গবেষকদের জন্য Heap Exploitation একটি বুদ্ধিবৃত্তিকভাবে চ্যালেঞ্জিং কিন্তু গভীরভাবে ফলপ্রসূ ক্ষেত্র—Project Zero, Pwn2Own, এবং বড় Bug Bounty Program এই দক্ষতাকে অভূতপূর্ব মূল্য দেয়। Defender-দের জন্য বার্তা স্পষ্ট: Memory-Safe Language গ্রহণ, Allocator Hardening, Sanitizer-Based Development, এবং Continuous Fuzzing—এই চারটি স্তম্ভ ছাড়া আধুনিক সফটওয়্যার নিরাপদ রাখা প্রায় অসম্ভব। Microsoft-এর প্রতিবেদন অনুযায়ী তাদের কোডবেসে ৭০% সিকিউরিটি বাগ Memory Safety সংক্রান্ত—এই পরিসংখ্যানই বলছে কেন আগামী দশকে এই ক্ষেত্রে নতুন বিপ্লব আবশ্যক।

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

Related articles

back to all articles