Cryptodee Blockchain Cryptodee Blockchain
Security

รับตรวจสอบ Smart Contract (Audit) หาช่องโหว่ก่อนขึ้นระบบจริง

Smart Contract ที่ deploy ขึ้น Mainnet แล้วแก้ไม่ได้ ช่องโหว่หนึ่งบรรทัดอาจทำให้เงินในสัญญาหายทั้งหมดภายในไม่กี่วินาที เราตรวจโค้ดก่อนคุณกดปุ่มนั้น

ReentrancyAccess ControlInteger OverflowGas OptimizationSlitherFoundry

ทำไม Smart Contract ต้องผ่านการ Audit

ธรรมชาติของ Smart Contract คือเมื่อ deploy ลงเครือข่ายแล้วโค้ดจะเปลี่ยนไม่ได้ ต่างจากเว็บไซต์หรือแอปที่พบบั๊กแล้วแก้แล้วอัปเดตใหม่ได้ทันที ถ้า Smart Contract มีช่องโหว่ ผู้ไม่หวังดีจะใช้ช่องโหว่นั้นได้ตลอดเวลาและคุณหยุดมันไม่ได้ นอกจากจะออกแบบระบบ Pause หรือ Upgrade Proxy ไว้ล่วงหน้า

ความเสียหายจากช่องโหว่ Smart Contract ในวงการคริปโตนับรวมกันเป็นมูลค่ามหาศาล และเกือบทั้งหมดเกิดจากรูปแบบความผิดพลาดที่รู้จักกันดีอยู่แล้ว เช่น การเรียกซ้ำ (Reentrancy) การคำนวณล้น การตั้งสิทธิ์ผิด หรือการพึ่งพาราคาจากแหล่งเดียวที่ปั่นได้ ทั้งหมดนี้ตรวจเจอได้ถ้ามีคนอ่านโค้ดอย่างเป็นระบบก่อนขึ้นระบบจริง

อีกเหตุผลที่สำคัญไม่แพ้กันคือความน่าเชื่อถือ นักลงทุนและกระดานเทรดจำนวนมากขอดูรายงาน Audit ก่อนตัดสินใจ โปรเจกต์ที่ไม่มีรายงานมักถูกมองว่ามีความเสี่ยงสูงตั้งแต่ต้น

เราตรวจอะไรบ้าง

การตรวจของเราแบ่งเป็นสองชั้น ชั้นแรกใช้เครื่องมือวิเคราะห์อัตโนมัติกวาดหารูปแบบช่องโหว่ที่รู้จัก ชั้นที่สองคือการอ่านโค้ดด้วยคนเพื่อหาปัญหาเชิงตรรกะที่เครื่องมือจับไม่ได้ ซึ่งมักเป็นช่องโหว่ที่อันตรายที่สุด

ขั้นตอนการทำงาน

  1. รับโค้ดและทำความเข้าใจโจทย์เราขอ Source Code, เอกสารประกอบ และคำอธิบายว่าสัญญาควรทำงานอย่างไร เพราะการจะบอกว่าโค้ด "ผิด" ได้ ต้องรู้ก่อนว่าอะไรคือ "ถูก"
  2. สแกนอัตโนมัติรันเครื่องมือวิเคราะห์แบบ static และ fuzzing เพื่อกวาดรูปแบบช่องโหว่ที่รู้จักออกไปก่อน
  3. อ่านโค้ดด้วยคนไล่อ่านทีละฟังก์ชันเทียบกับเจตนาที่ควรจะเป็น จุดนี้คือที่ที่ช่องโหว่เชิงตรรกะถูกเจอ
  4. เขียน Test จำลองการโจมตีสำหรับข้อสงสัยที่พบ เราเขียนเทสต์จำลองการโจมตีจริงเพื่อพิสูจน์ว่าเป็นช่องโหว่จริงหรือแค่ดูน่าสงสัย
  5. ส่งรายงานฉบับแรกจัดระดับความรุนแรงเป็น Critical / High / Medium / Low / Informational พร้อมอธิบายว่าโจมตีอย่างไรและควรแก้อย่างไร
  6. ตรวจซ้ำหลังแก้เมื่อทีมพัฒนาแก้เสร็จ เราตรวจซ้ำเฉพาะส่วนที่แก้และออกรายงานฉบับสมบูรณ์

สิ่งที่คุณจะได้รับ

ตรวจภายในทีมกับตรวจโดยบริษัทภายนอก ต่างกันอย่างไร

การตรวจโดยเราคือการหาและปิดช่องโหว่ให้ครบก่อนขึ้นระบบ ส่วนบริษัท Audit ระดับโลกอย่าง CertiK หรือ SlowMist ให้ผลลัพธ์เพิ่มเติมคือตราประทับที่ตลาดยอมรับ ซึ่งมีผลต่อการยื่นเข้ากระดานเทรดใหญ่ เราแนะนำให้ตรวจกับเราก่อนเพื่อเก็บช่องโหว่ให้หมด แล้วค่อยส่งเข้าบริษัทภายนอก จะประหยัดกว่าและผ่านง่ายกว่าการส่งโค้ดดิบเข้าไปเลย เพราะค่าตรวจรอบสองมักถูกกว่ารอบแรกมาก

เทคโนโลยีและเครื่องมือที่ใช้

Solidity, Vyper, Hardhat, Foundry, Slither, Mythril, Echidna และชุดเทสต์ที่เขียนขึ้นเฉพาะโปรเจกต์ เรารองรับสัญญาบนเครือข่ายที่เข้ากันได้กับ EVM ทั้งหมด ทั้ง Ethereum, BNB Chain, Polygon, Arbitrum, Optimism, Avalanche รวมถึงเชนส่วนตัวที่สร้างขึ้นเอง

คำถามที่พบบ่อย

ตรวจ Smart Contract ใช้เวลานานเท่าไร

ขึ้นกับขนาดและความซับซ้อนของโค้ด สัญญา Token มาตรฐานทั่วไปใช้เวลาไม่กี่วัน ส่วนระบบที่ซับซ้อนอย่าง DeFi หรือ Staking ที่มีหลายสัญญาเชื่อมกันอาจใช้เวลาหนึ่งถึงสองสัปดาห์ เราประเมินเวลาให้หลังดูโค้ดแล้ว

ต้องส่งอะไรให้บ้างถึงจะเริ่มตรวจได้

ส่ง Source Code ฉบับที่ตั้งใจจะ deploy จริง พร้อมเอกสารหรือคำอธิบายว่าแต่ละฟังก์ชันควรทำงานอย่างไร ถ้ามีเทสต์เดิมอยู่แล้วส่งมาด้วยจะช่วยให้เข้าใจเจตนาได้เร็วขึ้น

ถ้าตรวจแล้วเจอช่องโหว่ ช่วยแก้ให้ด้วยไหม

ได้ เรารับแก้ไขให้ด้วยหากต้องการ แต่โดยหลักการที่ดี ผู้ตรวจกับผู้แก้ควรเป็นคนละคนเพื่อให้มีมุมมองที่เป็นอิสระ ถ้าให้เราแก้ เราจะจัดคนละทีมกับผู้ตรวจ

สัญญาที่ deploy ไปแล้วยังตรวจได้ไหม

ตรวจได้ และควรตรวจ แม้จะแก้โค้ดเดิมไม่ได้ แต่ถ้ารู้ว่ามีช่องโหว่ตรงไหน คุณยังวางแผนรับมือได้ เช่น ย้ายไปสัญญาใหม่ จำกัดวงเงินที่เก็บไว้ในสัญญา หรือแจ้งเตือนผู้ใช้ล่วงหน้า

รายงาน Audit ใช้ยื่นเข้ากระดานเทรดได้ไหม

กระดานเทรดแต่ละแห่งมีเกณฑ์ต่างกัน บางแห่งรับรายงานจากผู้ตรวจอิสระทั่วไป บางแห่งกำหนดชื่อบริษัทที่ยอมรับ เราช่วยดูเกณฑ์ของกระดานที่คุณต้องการยื่น และเตรียมเอกสารให้ตรงตามนั้น

รับแก้ไข Smart Contract ที่มีปัญหาด้วยไหม

รับครับ ทั้งกรณีที่พบช่องโหว่จากการตรวจ และกรณีที่สัญญาทำงานไม่ตรงตามที่ตั้งใจ ถ้าสัญญา deploy ไปแล้วแก้โค้ดเดิมไม่ได้ เราจะช่วยวางแผนทางออก เช่น ย้ายไปสัญญาใหม่พร้อมระบบโอนย้ายสถานะเดิมให้ผู้ถือ

ตรวจช่องโหว่ Smart Contract ก่อนเปิดขายควรทำเมื่อไร

ควรตรวจเมื่อโค้ดนิ่งแล้วแต่ยังไม่ deploy เพราะการแก้ในขั้นนั้นยังไม่มีต้นทุน ถ้าตรวจหลังเปิดขายแล้วพบปัญหา ทางเลือกจะเหลือน้อยลงมากและกระทบผู้ถือที่ซื้อไปแล้ว

รับเขียน Smart Contract พร้อม Audit ในงานเดียวได้ไหม

ได้ แต่เราจะจัดคนละทีมระหว่างผู้เขียนกับผู้ตรวจ เพื่อให้การตรวจมีมุมมองที่เป็นอิสระ ถ้าต้องการความเป็นกลางสูงสุด แนะนำให้ส่งตรวจกับผู้ตรวจภายนอกอีกชั้นหลังเราปิดช่องโหว่ให้หมดแล้ว

คุยกับทีมงานก่อนตัดสินใจ

บอกเราว่าโจทย์ของคุณคืออะไร ทีม Solution Architect ตอบกลับภายใน 24 ชั่วโมง พร้อมประเมินขอบเขตงานและแนวทางเบื้องต้นให้ฟรี ถ้าเราประเมินแล้วว่าสิ่งที่คุณต้องการไม่คุ้มค่า เราจะบอกตรง ๆ