Foundationপ্রথম নীতি থেকে
LEVEL 10 · Computer Security

Double-Free

ডাবল-ফ্রি

একই pointer-এ free() দুইবার ডাকলে allocator-এর free-list metadata corrupt হয় — arbitrary write primitive পর্যন্ত পৌঁছাতে পারে।

free(p);
free(p);   // p এখনো একই free-list-এ দুইবার ঢোকে — linkage করাপ্ট হয়
  • বেশিরভাগ allocator free-list linkage freed chunk-এর ভেতরেই রাখে — double-free সেই metadata নিজেই নষ্ট করে
  • সঠিকভাবে crafted double-free পরবর্তী malloc() call-কে attacker-নির্ধারিত arbitrary address ফেরত দিতে বাধ্য করতে পারে — write-what-where primitive
  • সহজ প্রতিরোধ: free()-এর পরপরই pointer-কে NULL করা (“nulling”) — সস্তা কিন্তু অসম্পূর্ণ, কারণ dangling copy অন্য জায়গায় থেকে যেতে পারে