ການທົດສອບແບບຟັດຊິງ (Fuzzing)

Fuzzing ແມ່ນວິທີການທົດສອບຊອບແວເພື່ອຊອກຫາຈຸດອ່ອນ ຫຼື ຂໍ້ຜິດພາດ (Bug) ໂດຍການປ້ອນຂໍ້ມູນແບບສຸ່ມ ຫຼື ຂໍ້ມູນທີ່ມີໂຄງສ້າງເຄິ່ງໜຶ່ງເຂົ້າໄປໃນໂປຣແກຣມເປົ້າໝາຍຢ່າງຫຼວງຫຼາຍໂດຍອັດຕະໂນມັດ ເພື່ອເຮັດໃຫ້ເກີດການຂັດຂ້ອງ (Crash) ຫຼື ພຶດຕິກຳທີ່ບໍ່ຄາດຄິດ.
ກົນໄກພື້ນຖານຂອງ Fuzzing
Fuzzing (Fuzz Testing) ແມ່ນວິທີການທົດສອບໂດຍການສ້າງຂໍ້ມູນນຳເຂົ້າ (Input) ທີ່ຜິດປົກກະຕິຈຳນວນມະຫາສານໂດຍອັດຕະໂນມັດ ແລ້ວສົ່ງເຂົ້າໄປໃນໂປຣແກຣມທີ່ຕ້ອງການທົດສອບ ເພື່ອສັງເກດເບິ່ງວ່າໂປຣແກຣມນັ້ນ "ພັງ" ແນວໃດ. ຂໍ້ມູນນຳເຂົ້າເຫຼົ່ານີ້ລວມມີ ຊຸດໄບຕ໌ແບບສຸ່ມ, ຂໍ້ຄວາມທີ່ຍາວຜິດປົກກະຕິ, ຕົວເລກທີ່ຢູ່ໃກ້ຄ່າຂອບເຂດ (Boundary value), ແລະ ໄຟລ໌ທີ່ມີຮູບແບບບໍ່ຖືກຕ້ອງ. ຖ້າໂປຣແກຣມເກີດການ Crash ຫຼື Hang, ມີຄວາມເປັນໄປໄດ້ສູງວ່າມີຊ່ອງໂຫວ່ທີ່ແຝງຢູ່.
ວິທີການນີ້ແບ່ງອອກເປັນ 2 ປະເພດໃຫຍ່ໆ: Mutation-based ແມ່ນວິທີການດັດແປງຂໍ້ມູນນຳເຂົ້າທີ່ປົກກະຕິໃຫ້ກາຍເປັນຂໍ້ມູນທີ່ຜິດປົກກະຕິເທື່ອລະເລັກລະນ້ອຍ, ເຊິ່ງຕັ້ງຄ່າໄດ້ງ່າຍ ແຕ່ເນື່ອງຈາກບໍ່ເຂົ້າໃຈໂຄງສ້າງຂອງຂໍ້ມູນ ຈຶ່ງເຮັດໃຫ້ເຂົ້າເຖິງເສັ້ນທາງການປະມວນຜົນທີ່ເລິກເຊິ່ງໄດ້ຍາກ. Generation-based ແມ່ນການກຳນົດໄວຍາກອນ (Grammar) ຫຼື ຂໍ້ມູນສະເພາະຂອງໂປຣໂຕຄອນ (Protocol specification) ເພື່ອສ້າງຂໍ້ມູນນຳເຂົ້າທີ່ຖືກຕ້ອງຕາມໄວຍາກອນແຕ່ຜິດພາດໃນດ້ານຄວາມໝາຍ. ສຳລັບຂໍ້ມູນທີ່ມີໂຄງສ້າງເຊັ່ນ HTTP Request ຫຼື ໄຟລ໌ຮູບພາບ, ວິທີຫຼັງນີ້ຈະມີປະສິດທິພາບຫຼາຍກວ່າ.
ການເພີ່ມຂຶ້ນຂອງ Coverage-guided Fuzzing
ເຄື່ອງມື Fuzzing ຫຼັກໃນປັດຈຸບັນແມ່ນ Coverage-guided Fuzzing. AFL (American Fuzzy Lop) ທີ່ Google ໄດ້ເປີດເຜີຍໃຫ້ກັບ OSS ໄດ້ເຮັດໃຫ້ຂະແໜງການນີ້ກ້າວໜ້າໄປຫຼາຍ. ມັນຈະເຮັດການ Instrumentation (ການຕິດຕັ້ງລະຫັດເພີ່ມເຕີມ) ໃສ່ໂປຣແກຣມເພື່ອຕິດຕາມວ່າຂໍ້ມູນນຳເຂົ້າຜ່ານ Code path ໃດແດ່. ຂໍ້ມູນນຳເຂົ້າທີ່ຄົ້ນພົບ Code path ໃໝ່ຈະຖືກຕັດສິນວ່າ "ໜ້າສົນໃຈ" ແລະ ຈະຖືກນຳໄປກາຍພັນ (Mutate) ເພື່ອທົດສອບຕໍ່ໄປ. ດ້ວຍ Feedback loop ແບບວິວັດທະນາການນີ້, ມັນຈຶ່ງສາມາດຂຸດຄົ້ນບັກໃນເຫດຜົນການປະມວນຜົນທີ່ເລິກເຊິ່ງ ເຊິ່ງການປ້ອນຂໍ້ມູນແບບສຸ່ມຢ່າງດຽວບໍ່ສາມາດເຂົ້າເຖິງໄດ້.
ໂຄງການ OSS-Fuzz ຂອງ Google ໄດ້ດຳເນີນການ Coverage-guided Fuzzing ຢ່າງຕໍ່ເນື່ອງກັບໂຄງການ OSS ຫຼາຍກວ່າ 1,000 ໂຄງການ ແລະ ໄດ້ຄົ້ນພົບຊ່ອງໂຫວ່ຫຼາຍກວ່າ 10,000 ຈຸດ. ນອກຈາກນີ້, ການນຳ Fuzzing ເຂົ້າໄປລວມຢູ່ໃນ CI pipeline ຂອງ DevSecOps ກໍກຳລັງແຜ່ຫຼາຍຂຶ້ນ.
ຄວາມສຳພັນກັບ AI — ຂີດຈຳກັດ ແລະ ການເສີມກັນຂອງ Fuzzing
ເຖິງວ່າ Fuzzing ຈະມີພະລັງ ແຕ່ກໍບໍ່ແມ່ນວິທີທີ່ແກ້ໄຂໄດ້ທຸກຢ່າງ. ກໍລະນີທີ່ Claude Mythos ຄົ້ນພົບບັກອາຍຸ 16 ປີໃນ FFmpeg ທີ່ຜ່ານການທົດສອບອັດຕະໂນມັດມາແລ້ວ 5 ລ້ານຄັ້ງນັ້ນ ສະແດງໃຫ້ເຫັນວ່າ ມີພື້ນທີ່ທີ່ Fuzzing ບໍ່ຖະໜັດໃນດ້ານໂຄງສ້າງ. Fuzzing ເປັນວິທີການໂຈມຕີທີ່ "Interface ລະຫວ່າງ Input ແລະ Output", ເຮັດໃຫ້ການກວດຫາຊ່ອງໂຫວ່ທາງເຫດຜົນທີ່ກວມເອົາຫຼາຍ Component ຫຼື ບັກທີ່ເກີດຂຶ້ນພຽງແຕ່ໃນການປະສົມປະສານຂອງສະຖານະ (State transition) ສະເພາະໃດໜຶ່ງນັ້ນເຮັດໄດ້ຍາກ.
ການວິເຄາະລະຫັດດ້ວຍ AI ເຊັ່ນ Project Glasswing ຈະອ່ານລະຫັດແຫຼ່ງຂໍ້ມູນ (Source code) ໂດຍລວມເຖິງບໍລິບົດ (Context) ແລະ ຄົ້ນພົບຊ່ອງໂຫວ່ໃນລະດັບຄວາມເປັນນາມມະທຳທີ່ແຕກຕ່າງຈາກ Fuzzing. ທັງສອງບໍ່ໄດ້ແຂ່ງຂັນກັນ ແຕ່ເປັນການເສີມກັນ. ໃນການປະຕິບັດ Shift-left, ແນວທາງທີ່ເປັນຈິງໃນປັດຈຸບັນຄືການລວມ Fuzzing ເຂົ້າໃນ CI ພ້ອມກັບການວິເຄາະຢ່າງເລິກເຊິ່ງໂດຍ AI ເປັນໄລຍະ.
ຄຳສັບທີ່ກ່ຽວຂ້ອງ

AI ROI (ຜົນຕອບແທນຈາກການລົງທຶນ AI)
AI ROI ແມ່ນຕົວຊີ້ວັດທີ່ໃຊ້ວັດແທກຜົນໄດ້ຮັບຢ່າງເປັນປະລິມານ ເຊັ່ນ: ການປັບປຸງປະສິດທິພາບການເຮັດວຽກ ແລະ ກາ

AI ຄາດຄະເນຄວາມຕ້ອງການ (Demand Forecasting AI)
AI ຄາດການຄວາມຕ້ອງການ (Demand Forecasting AI) ແມ່ນລະບົບທີ່ໃຊ້ການຮຽນຮູ້ຂອງເຄື່ອງຈັກ (Machine Learning)

AI ສ້າງສັນ (Generative AI)
Generative AI ແມ່ນຄຳສັບລວມຂອງຕົວແບບ AI ທີ່ສາມາດສ້າງເນື້ອຫາຕ່າງໆ ເຊັ່ນ: ຂໍ້ຄວາມ, ຮູບພາບ, ສຽງ ແລະ ວິດີ

AI ອ້ອມຂ້າງ
ອຳບຽງ AI (Ambient AI) ໝາຍເຖິງລະບົບ AI ທີ່ຝັງຕົວຢູ່ໃນສະພາບແວດລ້ອມຂອງຜູ້ໃຊ້ງານ, ຄອຍຕິດຕາມຂໍ້ມູນຈາກເຊັນ