รู้จัก Smart Contract Security Audit ในโลกคริปโท
Ethereum นั้นถือเป็นบล็อกเชน (Blockchain) หลักอันหนึ่งที่ถูกเริ่มใช้งานมาตั้งแต่ปี 2013 โดยมีส่วนแตกต่างจากบล็อกเชนแบบดั้งเดิมในหลายๆ ส่วน แต่ส่วนที่สร้างความแตกต่างจากบล็อกเชนโดยปกติได้มากที่สุด นั่นคือการเพิ่มส่วนของ EVM (Ethereum Virtual Machine) เข้ามาในระบบ
EVM เป็นระบบที่ทำให้บล็อกเชนนั้นสามารถจำสถานะ machine state หรือก็คือกลายเป็นระบบคอมพิวเตอร์ขึ้นมา ซึ่งระบบดังกล่าวทำให้ใครก็สามารถจะเขียนการโปรแกรมบนระบบ Ethereum ได้ ซึ่ง โปรแกรมดังกล่าวถูกเรียกในชื่อ smart contract หรือที่เราคุ้นหูกับคำว่า “สัญญาอัจฉริยะ” นั่นเอง
โดย smart contract จะดำเนินการตอบสนองหรือดำเนินการจัดการธุรกรรมและสถานการณ์ทำงานใดๆ แบบอัตโนมัติตามที่ได้ตั้งโปรแกรมไว้ กล่าวคือเมื่อโค้ดได้ดำเนินการตามคำสั่งไปแล้ว จะไม่สามารถดำเนินการแก้ไขผลการดำเนินการใดๆ ได้ทั้งสิ้น แต่จะยึดหลักตามโค้ดที่เขียนไว้เท่านั้น
จุดนี้เองถือเป็นก้าวสำคัญที่ทำให้เทคโนโลยีบล็อกเชน กลายเป็นโครงสร้างเทคโนโลยีสำคัญของโลกและระบบทางการเงินแบบไร้ศูนย์กลาง (DeFi) การมาของ Ethereum จึงเปิดโอกาสให้ใครก็สามารถดำเนินการสร้างระบบทางการเงินและระบบต่างๆ มากมายให้เกิดขึ้นได้ในโลกของบล็อกเชนไม่ว่าจะเป็น DeFi, GameFi และอื่นๆ อีกมากมาย
แต่แน่นอนเมื่อเป็นเทคโนโลยีที่ใหม่มากๆ คนก็อาจจะไม่กล้าที่จะเข้ามาใช้งานหรือลงทุน แล้วจะดึงดูดคนยังไงให้เข้ามาใช้งานได้ล่ะ? นอกเหนือจากเพียงแค่การให้ผลตอบแทนที่สูงเท่านั้น จึงต้องหาทางที่จะตอบโจทย์ของผู้ใช้งานในเรื่องของความน่าเชื่อถือและความโปร่งใส (Transparency) เพิ่มเติมขึ้นมา
การที่จะให้ developer ซึ่งเป็นคนเขียน smart contract เองแถมยังต้องทำหน้าที่ตรวจสอบยืนยันตัวเองว่าโปรแกรมปลอดภัยก็ใช่เรื่อง จึงเป็นที่มาของการกำเนิดบริษัทหรือหน่วยงานที่ตรวจสอบ smart contract เหล่านั้นว่ามีความเสี่ยงหรือไม่ และมีการดำเนินงานตามที่ผู้พัฒนาได้กล่าวจริงหรือไม่ นั่นจึงเป็นที่มาของการเกิดสิ่งที่เรียกว่า “Smart Contract Security Audit” นั่นเอง
***อะไรคือ Smart Contract Security Audit ?
Smart contract security audits ถือเป็นเรื่องปกติที่ต้องทำ สำหรับการดำเนินการธุรกิจในสายของระบบทางการเงินแบบไร้ตัวกลาง (DeFi) เพราะด้วยความที่ DeFi นั้นเป็นระบบที่พยายามจะมาแทน ลักษณะการทำงานแบบต่างๆ ของระบบทางการเงินดั้งเดิม ไม่ว่าจะเป็นการฝาก-ถอน, การแลกเปลี่ยน, การลงทุนในกองทุนและอื่นๆ ดังนั้น โปรเจกต์ DeFi ต่างๆ จึงจำเป็นต้องแสดงถึงความโปร่งใสของระบบตัวเอง
แน่นอนว่าพอเป็นระบบ DeFi นั่นหมายความว่า โปรแกรมทั้งหมดจะถูกเขียนในรูปแบบของ smart contract แล้วนำไปใช้งานบนระบบบล็อกเชน เมื่อเป็นแบบนั้นแล้วจะทราบได้อย่างไรล่ะว่า DeFi ที่บอกว่าได้ผลตอบแทนสูงๆ นั้นปลอดภัยจริงหรือไม่ ไม่ใช่เรื่องหลอกลวง หรือนักพัฒนาเขียนโค้ดได้อย่างปลอดภัยจริงๆ
โดยปกติแล้วผู้ใช้งานทั่วไปมักจะไม่สามารถอ่าน smart contract ได้ ดังนั้น ไม่มีทางที่จะตรวจสอบ smart contract ได้เองว่าปลอดภัยหรือไม่ ประกอบกับนักพัฒนาเองก็คงไม่สามารถมาบอกได้ว่า smart contract นั้นปลอดภัยเพราะตัวเองก็เป็นคนพัฒนาเอง ดังนั้น จึงจำเป็นต้องหาหน่วยงานอื่นมาช่วยยืนยันให้แทน นั่นคือ “Smart Contract Security Auditor Firm” หรือ “บริษัทให้บริการการตรวจสอบ smart contract” นั่นเอง
“Smart contract security auditor เป็นผู้ที่ต้องเข้าใจถึงวิธีการเขียนและเข้าใจถึงการดำเนินงานของ smart contract และระบบที่ตรวจสอบอย่างชัดเจนแบบที่สุด เพื่อให้สามารถเข้าใจถึง scenario การดำเนินงานต่างๆ ที่จะถูกดำเนินการโดยระบบดังกล่าวและนำไปสู่การประเมินความเสี่ยงที่อาจจะเกิดขึ้นได้ในแง่มุมต่างๆ และรวมถึงการดำเนินงานของ smart contract นั้นตรงกับที่ผู้คิดค้นระบบได้ประกาศไว้ใน white paper หรือไม่”
***5 ขั้นตอน ของกระบวนการ audit smart contract
1) เริ่มต้นด้วยการทำความเข้าใจ smart contract ของระบบก่อน
ในหลายๆ ครั้งนักพัฒนามักจะมองข้ามส่วนสำคัญของระบบไปนั่นคือ เอกสารที่เกี่ยวข้องกับโปรเจกต์เหล่านั้น ไม่ว่าจะเป็น flow ของแอปพลิเคชัน, whitepaper ที่ไม่ได้เขียนกระบวนการดำเนินงานในส่วนต่างๆ ,ความชัดเจนของ business requirement เป็นต้น ซึ่งนั่นทำให้การตรวจสอบนั้นจำเป็นต้องใช้เวลามากขึ้น เพราะสืบเนื่องด้วยทางผู้ตรวจสอบจำเป็นต้องทำความเข้าใจระบบเหล่านั้นด้วยตัวเองนั่นเอง
2) ดำเนินการตรวจสอบหาความเสี่ยงของ smart contract
หลายๆ คนอาจจะมองว่าการดำเนินการ smart contract security audit นั้นเป็นการค้นหาช่องโหว่ที่อาจเกิดขึ้นได้กับระบบนั้นๆ แต่เปล่าเลย! จริงๆ แล้ว smart contract security auditor นั้นเป็น “ผู้หาความเสี่ยงทางด้านความปลอดภัย” ให้เสียมากกว่า
ดังนั้น การตรวจสอบ smart contract จะไม่ได้เป็นเพียงการแนะนำในการป้องกันช่องโหว่ของระบบที่อาจเกิดขึ้นได้เท่านั้น (สามารถดูรายละเอียด top 10 dasp vulnerability ได้ที่ https://dasp.co/) ยังรวมถึงการเขียน smart contract ใดๆ ที่อาจส่งผลให้เกิดผลกระทบของการดำเนินงานของ dasp ในแง่มุมต่างๆ อีกด้วย
ซึ่งในหลายๆ ครั้งความเสี่ยงเหล่านั้นไม่เพียงแค่มองไปที่การดำเนินงานของ user เท่านั้น แต่รวมถึง admin หรือก็คือ high privilege user นั่นเอง
ยกตัวอย่าง transferOwnership function เป็นฟังก์ชันสำหรับการ transfer ownership ของ smart contract ดังกล่าวให้ผู้อื่น แต่จะเกิดอะไรขึ้น หากเราใส่ address ผิดล่ะ? เพราะหากเราใส่ address ผิดเพียงตัวอักษรเดียวอาจทำให้ smart contract ไม่สามารถดำเนินการได้อีกเลยก็เป็นไปได้
ดังนั้น เราอาจจะต้องมีระบบป้องกันการผิดพลาดขึ้นมาเพื่อลดความเสี่ยงดังกล่าวนั่นเอง โดยยกตัวอย่างการแก้ไขให้ทำระบบย้าย ownership ใหม่ โดยการเพิ่มระบบส่วนของการ claim smart contract ก่อนที่จะเปลี่ยนเจ้าของอย่างทันที เพื่อป้องกันความผิดพลาดนั่นเอง ซึ่งจากตัวอย่างดังกล่าวจะเห็นว่า “ความเสี่ยงของระบบ จึงไม่ใช่มีเพียงแค่เรื่องของช่องโหว่เท่านั้น”
3) ทาง Auditor แจ้งความเสี่ยงและวิธีการแก้ไขให้ทาง developer ได้รับทราบ
หลังจากดำเนินการตรวจสอบเรียบร้อยแล้ว ทางทีมงานนักพัฒนาจำเป็นต้องแก้ไขในส่วนใดบ้าง และวิธีการแก้ไขเป็นอย่างไร ซึ่งในเรื่องของวิธีการแก้ไขนั้นขึ้นอยู่กับความเชี่ยวชาญของ auditor เองว่า จะดำเนินการในลักษณะการแนะนำโดยคร่าวๆ (generic recommendation) หรือเป็นลักษณะของ code ตัวอย่างการแก้ไข (example fixed code) โดยนักพัฒนาสามารถที่จะเลือกว่าจะแก้ไขหรือไม่ก็ได้ ขึ้นอยู่กับทีมงานนักพัฒนาและเหตุผลในทางธุรกิจ
“อย่างไรก็แล้วแต่ smart contract auditor ก็ต้องดำเนินการระบุสถานะการแก้ไขดังกล่าวใน report เช่นเดียวกัน ดังนั้น ในหลายๆ ครั้งจะพบว่าใน report ของ smart contract auditor จะระบุไว้เป็น acknowledged/confirmed เท่านั้น เพราะ developer นั้นไม่ดำเนินการแก้ไขด้วยเหตุผลทาง business นั่นเอง ซึ่งถือว่าเป็นการยอมรับความเสี่ยงของทีมงานเจ้าของ platform นั้นๆ นั่นเอง”
และในการรับความเสี่ยงครั้งนี้ ก็อาจส่งผลตามมาในภายหลังก็เป็นได้เช่นเดียวกัน ยกตัวอย่าง กรณีล่าสุดที่เกิดขึ้นเมื่อวันที่ 2 ธันวาคม 2022 ที่โปรเจกต์ Ankr protocol ถูกแฮ็ก และต้องสูญเงินไปถึง 5 ล้านดอลลาร์ ซึ่งจาก twitter ของ CZ, CEO ของ Binance นั้นเหตุเกิดจาก private key ของ developer นั้นหลุดไปทำให้ผู้โจมตีสามารถไปดำเนินการชี้ไปยัง smart contract ใหม่ได้
รูปภาพ Ankr protocol incident จาก twitter ของ CZ, CEO ของ Binance
ซึ่งในประเด็นนี้จริงๆ แล้ว auditor ระดับโลกอย่าง Peckshield เคยแจ้งในตอนทำ audit ไปแล้ว แต่ทาง Ankr protocol ก็ยังเลือกที่จะใช้ private key เดียวแบบเดิม ไม่มีการใช้งาน multi-sig ตามที่ Peckshield แนะนำแต่อย่างใด นั่นหมายความว่า Peckshield ได้แจ้งความเสี่ยงดังกล่าวไปแล้ว และ Ankr protocol ก็เลือกที่จะยอมรับความเสี่ยง (Accept the risk) นั้น โดยไม่มีการแก้ไขใดๆ และด้วยความเสี่ยงดังกล่าวนำไปสู่การถูกโจมตีในที่สุดนั่นเอง
“และแม้ว่าสถานะจะเป็น acknowledged/confirmed แต่ทีมงานเจ้าของ platform ก็มักจะให้เหตุผลว่าทำไมถึงไม่ดำเนินการแก้ไขดังกล่าว เพื่อให้ผู้ใช้งานโดยทั่วไปเมื่อเข้ามาอ่าน report ดังกล่าวแล้วเป็นคนตัดสินใจเองว่าจะยังคงใช้งาน platform นั้นๆ หรือไม่”
4) Developer ดำเนินการแก้ไข smart contract และดำเนินการตรวจสอบซ้ำ
หลังจาก developer ได้ระบุแล้วว่ามีการแก้ไข smart contract ในส่วนใดบ้าง และเลือกที่จะไม่แก้ไขในส่วนใดบ้างเรียบร้อยแล้ว ทาง auditor จะดำเนินการตรวจสอบซ้ำในจุดเดิมที่เคยแจ้งไป และจากนั้นหากยังพบว่าการแก้ไขนั้นๆ ยังไม่ถูกต้องก็อาจต้องนัดพูดคุยกันเพิ่มเติมเพื่อให้เข้าใจถึงการแก้ไขปัญหาได้อย่างตรงจุดมากขึ้น แล้วให้ทาง developer ดำเนินการแก้ไขซ้ำอีกครั้งหนึ่ง เพื่อให้การแก้ไขเกิดความถูกต้องนั่นเอง
5) ดำเนินการออก final report
หลังจากที่นักพัฒนาดำเนินการแก้ไขแล้ว และทางผู้ตรวจสอบได้ตรวจสอบซ้ำเรียบร้อยแล้ว ทาง ผู้ตรวจสอบจึงจะออก final report ต่อไป เพื่อให้ทราบถึงความเสี่ยงทั้งหมดที่ตรวจพบและรวมถึงสถานะการแก้ไขของแต่ละความเสี่ยงต่อไปนั่นเอง
***บทสรุป
Smart contract security audit นั้นถือเป็นเรื่องที่จำเป็นอย่างมากสำหรับแพลตฟอร์มใดๆ ที่ดำเนินธุรกรรมบนบล็อกเชน เพราะด้วยความที่จำเป็นต้องสร้างความโปร่งใสต่อการให้บริการ และตรวจสอบการป้องกันความเสี่ยงใดๆ ที่อาจจะเกิดขึ้นได้กับแพลตฟอร์ม
“อย่างไรก็ตาม แพลตฟอร์มที่ได้รับการดำเนินการตรวจสอบไปแล้ว จะดำเนินการอย่างไรกับความเสี่ยงที่ถูกแจ้งเข้ามา ก็คงไม่มีใครที่จะบังคับได้ สิ่งสำคัญคือแพลตฟอร์มจำเป็นต้องเข้าใจต่อความเสี่ยงเหล่านั้นและต้องลดความเสี่ยงเหล่านั้นให้ได้มากที่สุดเท่าที่จะเป็นไปได้ แต่ก็ยังต้องคงไว้ซึ่งลักษณะการดำเนินงานธุรกิจได้อย่างเหมาะสมอีกด้วยนั่นเอง”
บทความโดย: สุเมธ จิตภักดีบดินทร์ - CEO & Founder at Valix Consulting
กราฟิก: ณัฐชนน พูนชัย (Boom)
Reference
[1] How Do Ethereum Smart Contracts Work?
[2] ETHEREUM VIRTUAL MACHINE (EVM)
[4] Aniverse ANIV721Land Smart Contract Audit Report
[5] https://twitter.com/cz_binance/status/1598575867311132673?t=MDgHkC6gI95QlwonnrqmNw&s=19
[6] SMART CONTRACT AUDIT REPORT for ANKR Protocol