11.4.2. ຄວາມເສຍຫາຍຄວາມຈໍາ
ຄວາມເສຍຫາຍຂອງຄວາມຊົງຈໍາຈະເກີດຂຶ້ນໃນເວລາທີ່ສະຖານທີ່ຢູ່ພາຍໃນຊ່ອງຄວາມຊົງຈໍາຂອງຂະບວນການໄດ້ຖືກແກ້ໄຂອຸບັດຕິເຫດເນື່ອງຈາກຄວາມຜິດພາດຂອງໂຄງການ. ແມງໄມ້ການສໍ້ລາດບັງຫຼວງຂອງຫນ່ວຍຄວາມຈໍາປົກກະຕິແລ້ວນໍາໄປສູ່ພຶດຕິກໍາຂອງໂປລແກລມທີ່ບໍ່ສາມາດຄາດເດົາໄດ້, ແນວໃດກໍ່ຕາມ, ໃນຫຼາຍໆກໍລະນີ, ແມງໄມ້ເຫຼົ່ານີ້ອະນຸຍາດໃຫ້ການຈັດການຫນ່ວຍຄວາມຈໍາຂອງຂະບວນການໃນແບບທີ່ຂະບວນການປະຕິບັດໂຄງການສາມາດຄວບຄຸມໄດ້, ອະນຸຍາດໃຫ້ກິດຈະກໍາທີ່ຖືກກໍານົດໂດຍຜູ້ໂຈມຕີ.
ການໂຈມຕີເຫຼົ່ານີ້ຖືກເອີ້ນໂດຍປົກກະຕິວ່າເປັນ buffer overflows, ເຖິງແມ່ນວ່າຄໍາສັບນີ້ແມ່ນ over-simplification. ປະເພດທົ່ວໄປທີ່ສຸດຂອງການສໍ້ລາດບັງຫຼວງຂອງຄວາມຊົງຈໍາແມ່ນແຕກຕ່າງກັນຢ່າງຫຼວງຫຼາຍຈາກອັນອື່ນແລະມີກົນລະຍຸດແລະເຕັກນິກຂອງຕົນເອງທີ່ຕ້ອງການສໍາລັບການຂຸດຄົ້ນສົບຜົນສໍາເລັດ.
• Stack Buffer Overflow: ເມື່ອໂປຣແກມຂຽນຂໍ້ມູນໃສ່ buffer ເທິງ stack ຫຼາຍກວ່າພື້ນທີ່ຫວ່າງສຳລັບມັນ, ໜ່ວຍຄວາມຈຳທີ່ຢູ່ຕິດກັນສາມາດເສຍຫາຍໄດ້, ມັກຈະເຮັດໃຫ້ໂປຣແກຣມຂັດຂ້ອງ.
• Heap Corruption: ຫນ່ວຍຄວາມຈໍາ Heap ຖືກຈັດສັນໃນເວລາແລ່ນແລະປົກກະຕິແລ້ວມີຂໍ້ມູນຈາກໂຄງການທີ່ກໍາລັງແລ່ນ. ການສໍ້ລາດບັງຫຼວງຂອງ heap ເກີດຂຶ້ນໂດຍການຫມູນໃຊ້ຂໍ້ມູນເພື່ອຂຽນທັບຜ່ານບັນຊີລາຍຊື່ທີ່ເຊື່ອມຕໍ່ຂອງຕົວຊີ້ຫນ່ວຍຄວາມຈໍາ heap.
• Integer Overflow: ການ overflows ເຫຼົ່ານີ້ເກີດຂຶ້ນເມື່ອແອັບພລິເຄຊັນພະຍາຍາມສ້າງຄ່າຕົວເລກທີ່ບໍ່ສາມາດບັນຈຸຢູ່ໃນພື້ນທີ່ເກັບຮັກສາທີ່ຈັດສັນຂອງມັນ.
• Format String: ເມື່ອໂປຣແກມຍອມຮັບການປ້ອນຂໍ້ມູນຂອງຜູ້ໃຊ້ ແລະຈັດຮູບແບບໂດຍບໍ່ໄດ້ກວດເບິ່ງມັນ, ສະຖານທີ່ໜ່ວຍຄວາມຈຳສາມາດຖືກເປີດເຜີຍ ຫຼືຂຽນທັບໄດ້, ຂຶ້ນກັບຮູບແບບໂທເຄັນທີ່ນຳໃຊ້.