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

Stack Canary

স্ট্যাক ক্যানারি

Buffer আর saved return address-এর মাঝে বসানো random value — return-এর আগে বদলেছে কিনা চেক করে stack-smashing ধরে।

also: stack-guard, stack-protector

[ locals | buffer | CANARY | saved frame ptr | return address ]
function entry : canary = random_value (stack-এ লেখা)
function exit  : if stack[canary_slot] != random_value: abort()
  • Linear buffer overflow return address পর্যন্ত পৌঁছাতে হলে অবশ্যই canary-র ওপর দিয়ে যেতে হয় — তাই return-এর আগে mismatch ধরা পড়ে, exploit ব্যর্থ হয়
  • যা আটকায় না: heap overflow (canary সেখানে নেই), বা এমন কোনো bug যা সরাসরি arbitrary write করে canary-কে পাশ কাটিয়ে যায়
  • StackGuard (Cowan et al., 1998) প্রথম বাস্তবায়ন — আজ প্রায় সব compiler-এ ডিফল্ট (-fstack-protector)