Buffer Overflow သူက application ေတြရဲ့ user data input လက္ခံရာမွာ ယုိေပါက္ျဖစ္ေနတာပါ။
eg, array and pointer , dynamic memory
void function (char* input)
{
char buffer [5];
strcpy(buffer,input);
}
void main()
{
char *str="More than 5";
function(str);
}
ဒါဆုိရင္ input size က buffer size ကုိေက်ာ္သြားပါတယ္။
ပုံမွန္ဆုိရင္ memory ေပၚမွာ buffer ထဲကုိ input ထဲ့ပီးတာနဲ႔ ေနာက္ဆက္ပီး execute လုပ္ရမယ့္ address ကုိသြားမွာပါ။ ခုေတာ့ user input က အဲဒါကုိ overwrite လုပ္သြားပါတယ္။ program crash ျဖစ္သြားပါတယ္။
user input ေနရာမွာ hacker က malicious code ေတြ နဲ႔ memory ေပၚမွာ အဲဒီကုတ္ ရွိေနမယ့္ address ကုိ ထည့္လုိက္ရင္ input ပီး၊ေနာက္ဆက္ပီး run မွာက malicious code ျဖစ္သြားပါတယ္။ ဒါက stack overflow ပါ။
ံHeap overflow က heap memory ကုိသုံးတဲ့ dynamic memory နဲ႔ ဆုိ္င္ပါတယ္။ သူက C++ မွာ new နဲ႔ စ ရပီး delete နဲ႔ အမွဳိက္ ေကာက္ရမွာပါ။ new နဲ႔ စပုံေဖာ္တာကုိ buffer size ေက်ာ္သြားေအာင္ input ေပးပီး delete ကုိိ overwrite လုပ္လုိက္ပီး ေနာက္ .... အေပၚကလုိပဲ malicious code နဲ႔ address ကုိ run ေစတာပါ။
library attack ဆုိတာရွိပါေသးတယ္။အဲဒါကိုေတာ့ ေသခ်ာနားမလည္ပါဘူးခင္ဗ်ာ။
တစ္ကယ္ေတာ့ buffer overflow ေတာ္ေတာ္ အသုံးမ်ားပီး အေသးစိတ္ေတြက လဲ ေတာ္ေတာ္ေလးကုိ လက္ေပါက္ကပ္ပါတယ္။