Smart Contract Auditing: ป้องกัน Reentrancy และ Overflow

Article author

การตรวจสอบสมาร์ตคอนแทรกต์ยังคงเป็นรากฐานสำคัญของโครงสร้างพื้นฐาน Web3 ที่มั่นคง โดยเฉพาะเมื่อ DeFi และการกำกับดูแลบนเชนดึงดูดมูลค่าที่ถูกล็อคเป็นจำนวนหลายล้านล้าน ดอลลาร์ ด้วยประสบการณ์ตรวจสอบมากกว่า 280 ครั้งที่ Soken เรามักพบช่องโหว่ร้ายแรง เช่น reentrancy และ arithmetic overflow ซึ่งหากไม่ได้รับการแก้ไข อาจนำไปสู่การโจมตีที่สร้างความเสียหายหลายล้านดอลลาร์ บทความนี้จะวิเคราะห์ช่องทางภัยคุกคามหลัก ได้แก่ reentrancy, arithmetic overflow และข้อบกพร่องด้านสิทธิ์ พร้อมนำเสนอแนวทางการพัฒนาและการตรวจสอบที่พิสูจน์แล้วเพื่อเสริมความแข็งแกร่งให้กับคอนแทรกต์ก่อนการนำไปใช้งาน

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

สมาร์ตคอนแทรกต์ reentrancy คืออะไร และป้องกันได้อย่างไร?

สมาร์ตคอนแทรกต์ reentrancy เป็นช่องโหว่ที่เกิดขึ้นเมื่อการเรียกใช้ภายนอกเปิดโอกาสให้ผู้โจมตีสามารถเข้ามาเรียกฟังก์ชันในคอนแทรกต์ซ้ำๆ ก่อนที่การทำงานในลูปแรกจะเสร็จสิ้น ทำให้สามารถแก้ไขสถานะโดยไม่ได้รับอนุญาต ช่องโหว่นี้มักก่อให้เกิดการสูญเสียทรัพย์สินอย่างรุนแรง เช่น การโจมตี DAO ในปี 2016 และเหตุการณ์โด่งดังการโจมตี DeFi ล่าสุด การป้องกันหลักคือการจัดลำดับการเปลี่ยนแปลงสถานะและการเรียกภายนอกอย่างรอบคอบ ใช้ mutexes และใช้ ReentrancyGuard ที่เป็นฟังก์ชันใน Solidity

จากประสบการณ์การตรวจสอบสมาร์ตคอนแทรกต์ reentrancy ยังคงเป็นบั๊กที่พบบ่อยและมีผลกระทบรุนแรงที่สุด คิดเป็นประมาณ 18% ของป้ายเตือนสำคัญในการตรวจสอบปี 2026 แนวปฏิบัติที่ดีที่สุดกำหนดให้การเปลี่ยนแปลงสถานะต้องเกิดขึ้นก่อนการเรียกภายนอก หรือถ้าไม่ก็ให้ใช้ตัวแก้ไข nonReentrant ของ Solidity จากไลบรารี OpenZeppelin

ตัวอย่างโค้ด reentrancy แบบง่าย:

mapping(address => uint256) public balances;

function withdraw(uint256 amount) external {
    require(balances[msg.sender] >= amount, "Insufficient funds");
    (bool success, ) = msg.sender.call{value: amount}("");
    require(success, "Transfer failed");
    balances[msg.sender] -= amount;  // ช่องโหว่: อัปเดตสถานะหลังเรียกภายนอก
}

รูปแบบปลอดภัยโดยอัปเดตสถานะก่อนเรียก:

function withdraw(uint256 amount) external {
    require(balances[msg.sender] >= amount, "Insufficient funds");
    balances[msg.sender] -= amount;  // อัปเดตสถานะก่อน
    (bool success, ) = msg.sender.call{value: amount}("");
    require(success, "Transfer failed");
}

ข้อมูลเชิงลึกจากวิธีของ Soken:

เราขอแนะนำให้ใช้ ReentrancyGuard ของ OpenZeppelin เป็นค่าเริ่มต้นสำหรับฟังก์ชันที่เปลี่ยนแปลงสถานะติดต่อภายนอกทุกฟังก์ชัน พร้อมกับตรวจสอบด้วยมืออย่างเข้มงวดในระหว่างการตรวจสอบ วิธีการสองชั้นนี้ลดความเสี่ยงจาก reentrancy ในสมาร์ตคอนแทรกต์ที่ตรวจสอบแล้วกว่า 90% ตั้งแต่ปี 2024

Arithmetic overflow และ underflow ส่งผลกระทบอย่างไรต่อความปลอดภัยของสมาร์ตคอนแทรกต์?

Arithmetic overflow หรือ underflow เกิดขึ้นเมื่อการคำนวณจำนวนเต็มเกินขีดจำกัดบนหรือต่ำกว่าขีดจำกัดล่างของชนิดตัวเลข ส่งผลให้ค่าพลิกกลับอย่างไม่คาดคิด ช่องโหว่นี้สามารถทำลายยอดคงเหลือ ตัวนับ หรือแฟล็กสิทธิ์ และเปิดโอกาสให้เกิดเงื่อนไขโจมตีเช่น การสร้างโทเค็นเกินจำนวน หรือข้ามข้อจำกัด แม้ว่า Solidity 0.8+ จะมีการตรวจสอบคณิตศาสตร์ในตัว แต่รูปแบบที่ปิดการตรวจสอบหรือใช้บล็อก unchecked ยังคงเป็นช่องทางเกิดช่องโหว่

จากข้อมูลของ Chainalysis ในปี 2025 พบว่าเกือบ 12% ของการโจมตี DeFi ใช้ประโยชน์จากข้อผิดพลาดทางคณิตศาสตร์ที่ไม่ได้รับการตรวจสอบ การตรวจสอบของเราใน Soken พบว่าโครงการมักปิดการตรวจสอบของคอมไพเลอร์เพื่อเพิ่มประสิทธิภาพ นำไปสู่ underflow ที่เล็กน้อยแต่เป็นช่องทางโจมตีได้อย่างเฉพาะเจาะจง โดยเฉพาะในสมาร์ตคอนแทรกต์รุ่นเก่า

รูปแบบที่มีช่องโหว่ (Solidity <0.8 หรือ unchecked):

uint256 public totalSupply;

function mint(uint256 amount) external {
    totalSupply += amount; // อาจเกิด overflow หากไม่ได้ตรวจสอบ
}

รูปแบบปลอดภัยด้วยการตรวจสอบคณิตศาสตร์ใน Solidity 0.8+:

function mint(uint256 amount) external {
    totalSupply += amount; // ตรวจสอบอัตโนมัติ หากเกินจะ revert
}

บล็อก unchecked อย่างชัดเจนเมื่อประสิทธิภาพสำคัญ:

function addUnchecked(uint256 a, uint256 b) internal pure returns (uint256) {
    unchecked {
        return a + b;
    }
}

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

รูปแบบการควบคุมการเข้าถึงสมาร์ตคอนแทรกต์คืออะไร และแบบใดปลอดภัยที่สุด?

การควบคุมการเข้าถึงในสมาร์ตคอนแทรกต์กำหนดว่าใครสามารถเรียกใช้งานฟังก์ชันที่สำคัญหรือเปลี่ยนแปลงสถานะของคอนแทรกต์ได้ รูปแบบที่พบบ่อยได้แก่ Ownable, Role-Based Access Control (RBAC) และ Multisig แต่ละแบบมีสมดุลระหว่างการใช้งานง่ายและความปลอดภัย Ownable ง่ายที่สุดแต่เสี่ยงจากการล้มเหลวของกุญแจเพียงกุญแจเดียว RBAC ให้สิทธิ์ที่ละเอียดแต่มีความซับซ้อนมากขึ้น Multisig เพิ่มความปลอดภัยโดยต้องอนุมัติจากหลายฝ่าย แต่อาจทำให้เกิดความยุ่งยากในการใช้งาน

การทบทวนโครงการ DeFi และ NFT ล่าสุดพบว่า การนำ RBAC มาใช้เพิ่มขึ้น 34% ระหว่างปี 2024-2026 เนื่องจากความยืดหยุ่นของสิทธิ์สอดคล้องกับความต้องการกำกับดูแลที่ซับซ้อนขึ้น อย่างไรก็ตาม 40% ของสมาร์ตคอนแทรกต์ที่ตรวจสอบยังคงใช้ Ownable เพียงอย่างเดียว ทำให้โครงการเหล่านั้นเสี่ยงต่อการล้มเหลวจากจุดเดียว

เปรียบเทียบรูปแบบควบคุมการเข้าถึง:

รูปแบบ ความละเอียดของสิทธิ์ ระดับความปลอดภัย ความซับซ้อน กรณีการใช้งานในอุตสาหกรรม
Ownable เจ้าของคนเดียว ปานกลาง (เสี่ยงกุญแจเดียว) ต่ำ โครงการเล็ก, MVP ระยะแรก
RBAC หลายบทบาท สูง (มอบหมายหลายบทบาท) ปานกลาง โปรโตคอล DeFi, DAO, แอปหลายบริการ
Multisig ผู้ลงนามหลายคน สูงมาก (ฉันทามติหลายฝ่าย) สูง การจัดการคลัง, โถมูลค่าสูง

ตัวอย่างโค้ด Solidity ที่ใช้ RBAC ของ OpenZeppelin:

import "@openzeppelin/contracts/access/AccessControl.sol";

contract MyContract is AccessControl {
    bytes32 public constant ADMIN_ROLE = keccak256("ADMIN_ROLE");

    constructor() {
        _setupRole(DEFAULT_ADMIN_ROLE, msg.sender);
        _setupRole(ADMIN_ROLE, msg.sender);
    }

    function secureFunction() external onlyRole(ADMIN_ROLE) {
        // ตรรกะสำคัญที่นี่
    }
}

ข้อมูลเชิงลึกจาก Soken:

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

วิธีการพัฒนาสมาร์ตคอนแทรกต์อย่างปลอดภัยเพื่อป้องกันช่องโหว่?

การพัฒนาสมาร์ตคอนแทรกต์อย่างปลอดภัยต้องรวมการรักษาความปลอดภัยตลอดวงจรชีวิต ตั้งแต่การออกแบบ การเขียนโค้ด การทดสอบ และการนำไปใช้งาน แนวปฏิบัติรวมถึงการใช้ไลบรารีที่ผ่านการตรวจสอบแล้ว (OpenZeppelin), ลดการเรียกภายนอก, หลีกเลี่ยงตรรกะซับซ้อนใน constructor และการทดสอบอย่างเข้มข้นด้วย fuzzing และเครื่องมือ symbolic execution สมาร์ตคอนแทรกต์ที่ไม่เปลี่ยนแปลงควรใช้นโยบายอัปเกรดอย่างระมัดระวังพร้อมการกำกับดูแลที่โปร่งใส

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

รายการตรวจสอบการพัฒนาอย่างปลอดภัย:

ขั้นตอน คำอธิบาย เครื่องมือ / ไลบรารี
ใช้ไลบรารีที่ปลอดภัย ใช้คอนแทรกต์ที่ผ่านการพิสูจน์แล้ว เช่น OpenZeppelin OpenZeppelin Contracts
จำกัดการเรียกภายนอก ลดพื้นผิวโจมติโดยจำกัดการตอบสนองภายนอก ตรวจสอบด้วยมือ + ทดสอบ reentrancy
ทดสอบอย่างละเอียด ใช้ fuzzing, symbolic execution, unit test และ integration test Echidna, MythX, Slither
ใช้โมเดลสิทธิ์ บังคับใช้ RBAC หรือ multisig ในการดำเนินการที่สำคัญ OpenZeppelin AccessControl
คำนึงถึงการอัปเกรดอย่างระมัดระวัง ใช้ proxy pattern พร้อมระบบการกำกับดูแลที่เข้มงวด OpenZeppelin Upgrades, Transparent Proxy
จดบันทึกและทบทวนโค้ด รักษาความชัดเจนของคอมเมนต์และรีวิวจากเพื่อนร่วมงาน ตรวจสอบภายใน + ตรวจสอบความปลอดภัยภายนอก

ตัวอย่างแนวปฏิบัติที่ดีที่สุดของ Solidity: รีเซ็ตตัวแปรสถานะก่อนเรียกภายนอก

mapping(address => uint256) public balances;

function safeWithdraw(uint256 amount) external {
    require(balances[msg.sender] >= amount, "Insufficient balance");
    balances[msg.sender] = 0; // รีเซ็ตยอดก่อนเพื่อป้องกัน reentrancy
    (bool sent, ) = msg.sender.call{value: amount}("");
    require(sent, "Failed to send Ether");
}

ช่องโหว่ reentrancy และสิทธิ์ที่พบบ่อยในการตรวจสอบล่าสุดมีอะไรบ้าง?

ในการตรวจสอบล่าสุดของ Soken พบช่องโหว่ reentrancy โดยเฉพาะในสมาร์ตคอนแทรกต์รุ่นเก่าของ yield farming และ staking ที่ขาดการจัดลำดับธุรกรรมอย่างเหมาะสมหรือขาด ReentrancyGuard ความผิดพลาดในการจัดการสิทธิ์สัมผัสได้แก่ กุญแจผู้ดูแลที่ฝังแบบ hardcoded ไม่มี multisig ไม่มีฟังก์ชันสละสิทธิ์ผู้ดูแล และการเปิดให้ใครก็ได้เรียกฟังก์ชันภายนอก ส่งผลให้การควบคุมถูกทำลาย

การตรวจสอบที่น่าสังเกตในปี 2025 เปิดเผยโปรโตคอล DeFi ที่อนุญาตให้สมาร์ตคอนแทรกต์ภายนอกแบบปลอมแปลงเรียกฟังก์ชันถอนรางวัลซ้ำๆ เนื่องจากขาดการล็อก ทำให้มีความเสี่ยงสูงถึงประมาณ 45 ล้านดอลลาร์ โครงการที่มีการตั้งค่า RBAC ผิดพลาดมีความเสี่ยงสูงต่อการยกระดับสิทธิ์โดยเฉพาะเมื่อฟังก์ชัน setter ขาดข้อจำกัดบทบาท

สรุปช่องโหว่ทั่วไป:

ประเภทช่องโหว่ คำอธิบาย สาเหตุหลัก ผลกระทบ
Reentrancy เรียกภายนอกก่อนอัปเดตสถานะ การจัดลำดับเรียกผิดพลาดหรือไม่มี mutex สูญเสียเงินทุนโดยไม่คาดคิด
Arithmetic overflow การเพิ่มหรือลดแบบไม่ได้ตรวจสอบ ปิดการตรวจสอบ Solidity 0.8+ ผลกระทบการสร้างหรือโอนโทเค็น
การควบคุมการเข้าถึงผิดพลาด ฟังก์ชันเปิดให้ทุกคนหรือเสี่ยงจาก admin เดียว ขาด RBAC หรือ multisig การเปลี่ยนข้อมูลหรือเงินทุนโดยไม่ได้รับอนุญาต
กุญแจฝังในโค้ด กุญแจผู้ดูแลหรือที่อยู่ส่วนตัวฝังในโค้ด จัดการกุญแจไม่ปลอดภัย ถูกครอบครองโดยผู้โจมตี

เปรียบเทียบเครื่องมือและเทคนิคการตรวจสอบสมาร์ตคอนแทรกต์

การตรวจสอบสมัยใหม่ผสมผสานการวิเคราะห์สแตติกอัตโนมัติ, symbolic execution และการรีวิวโค้ดด้วยมือเพื่อหาบั๊กทั่วไปและบั๊กเฉพาะบริบท เครื่องวิเคราะห์สแตติก (Slither, Mythril) ตรวจพบปัญหาระดับสูงได้รวดเร็ว แต่พลาดข้อผิดพลาดเชิงตรรกะ เครื่องมือ symbolic execution (Echidna, Manticore) ทดสอบ input ต่างๆ อย่างครอบคลุม การตรวจสอบด้วยมือช่วยตรวจสอบความปลอดภัยของสถาปัตยกรรมและตรรกะอย่างลึกซึ้ง

ประเภทเครื่องมือ ตัวอย่าง จุดแข็ง ข้อจำกัด
Static Analyzer Slither รวดเร็ว, ตรวจจับรูปแบบเช่น reentrancy, บั๊กตัวเลข อาจมี false positives, พลาดตรรกะซับซ้อน
Symbolic Execution Echidna สร้างสถานการณ์ฟัซซิง, หาบั๊กกรณีพิเศษ ใช้ทรัพยากรสูง, ซับซ้อน
Manual Audit การรีวิวด้วยมือ วิเคราะห์ตรรกะลึก, ครอบคลุม ใช้เวลานาน, ต้องผู้เชี่ยวชาญ

Soken ใช้วิธีแบบผสมผสานนี้ โดยใช้ระบบอัตโนมัติกรองบั๊กชัดเจน และผู้เชี่ยวชาญทบทวนช่องทางโจมตีใหม่ๆ ตามบริบทและนวัตกรรมของโปรโตคอล

เคล็ดลับมือโปร: ผนวกเครื่องมือทดสอบอัตโนมัติต่อเนื่องใน CI/CD pipeline ควบคู่กับการตรวจสอบมืออาชีพเป็นประจำที่ออกแบบตามความซับซ้อนและความเสี่ยงของคอนแทรกต์คุณ


ความปลอดภัยสมาร์ตคอนแทรกต์พัฒนาอย่างรวดเร็ว แต่ช่องโหว่เช่น reentrancy, arithmetic overflow และการควบคุมสิทธิ์ผิดพลาดยังคงมีอยู่แม้ในปี 2026 โครงการที่ปล่อยคอนแทรกต์โดยไม่ออกแบบด้านความปลอดภัยอย่างพิถีพิถันและตรวจสอบอย่างละเอียดเสี่ยงต่อความเสียหายครั้งใหญ่ตามที่เกิดในหลายเหตุการณ์โด่งดัง

สังเคราะห์ข้อมูลจากบทความนี้เผยให้เห็นความสำคัญสูงสุดของการรวมการเขียนโค้ดที่ปลอดภัย (เช่น การเปลี่ยนแปลงสถานะก่อนการเรียกภายนอก) ฟีเจอร์ความปลอดภัยของภาษาในตัว (ตรวจสอบคณิตศาสตร์ Solidity 0.8+) และระบบสิทธิ์ที่แข็งแกร่ง (RBAC หรือ multisig) ยิ่งไปกว่านั้น วิธีการตรวจสอบแบบหลายชั้น—ผสมการตรวจสอบอัตโนมัติด้วยมือผู้เชี่ยวชาญ—ยังให้การป้องกันที่ดีที่สุดต่อการโจมตีใหม่ๆ การมองภาพรวมการพัฒนาสมาร์ตคอนแทรกต์ที่ปลอดภัยช่วยลดความเสี่ยงทางการเงินและชื่อเสียงอย่างมาก

สำหรับทีมที่เตรียมคอนแทรกต์สำหรับเปิดตัวหรือการอัปเกรดระบบเก่า การยืนยันทฤษฎีสิทธิ์ที่มั่นคงพร้อมการป้องกัน reentrancy เป็นสิ่งสำคัญ ขั้นตอนถัดไปทันทีควรคือการตรวจสอบสิทธิ์และ reentrancy อย่างละเอียด โดยคอนแทรกต์ต้องผ่านแนวปฏิบัติที่ได้กล่าวถึงด้านบน บริการตรวจสอบสมาร์ตคอนแทรกต์และทดสอบเจาะระบบของ Soken เสนอบริการตรวจสอบอย่างผู้เชี่ยวชาญ พร้อมด้วย บทวิจารณ์ความปลอดภัย DeFi เพื่อปกป้องการไหลของสินทรัพย์ในโปรโตคอลของคุณ อย่าลืมสำรวจ Crypto Map ของเราเพื่อข้อมูลภาพรวมด้านกฎระเบียบที่เปลี่ยนแปลง และใช้บริการตรวจสอบเบื้องต้นฟรี Security X-Ray เพื่อค้นหาจุดอ่อนก่อนการตรวจสอบอย่างเป็นทางการ


ข้อสรุปสำคัญ: การป้องกันที่มีประสิทธิภาพที่สุดจากช่องโหว่ร้ายแรงของสมาร์ตคอนแทรกต์ คือการนำการตรวจสอบคณิตศาสตร์ของ Solidity และรูปแบบ ReentrancyGuard มาใช้คู่กับโมเดลควบคุมสิทธิ์ที่ละเอียดและมีหลายผู้ลงนาม รวมทั้งการตรวจสอบแบบผสมผสานซึ่งรวมเครื่องมืออัตโนมัติและการรีวิวโดยผู้เชี่ยวชาญ

Article author

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

Reentrancy ใน smart contract คืออะไรและอันตรายอย่างไร?

Reentrancy ใน smart contract คือการที่สัญญาเรียกสัญญาภายนอกก่อนจะปรับสถานะของตัวเอง ทำให้นักโจมตีสามารถใช้ช่องโหว่นี้เรียกซ้ำได้เรื่อยๆ เสี่ยงต่อการสูญเสียเงินและการถูกเปลี่ยนแปลงตรรกะของสัญญาอย่างร้ายแรง

Arithmetic overflow สามารถส่งผลต่อ smart contract อย่างไร?

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

แนวทางปฏิบัติที่ดีที่สุดสำหรับการควบคุมสิทธิ์ใน smart contract คืออะไร?

ควรใช้บทบาทสิทธิ์ที่ชัดเจน เช่น การควบคุมสิทธิ์แบบ role-based (RBAC) หรือการลงนามแบบ multi-signature พร้อมตรวจสอบสิทธิ์เป็นประจำ เพื่อป้องกันการดำเนินการที่ไม่ได้รับอนุญาต

การตรวจสอบ smart contract ช่วยเพิ่มความปลอดภัยได้อย่างไร?

การตรวจสอบ smart contract ช่วยค้นหาช่องโหว่ เช่น reentrancy, overflow และข้อบกพร่องสิทธิ์ ก่อนนำขึ้นใช้งาน ช่วยให้โค้ดมีความมั่นคงผ่านการรีวิวและเครื่องมืออัตโนมัติ ลดความเสี่ยงจากการถูกโจมตี

แนะนำเครื่องมืออะไรสำหรับการพัฒนา smart contract ที่ปลอดภัย?

แนะนำเครื่องมือเช่น Static analyzer อย่าง Slither, MythX และ Formal verification รวมกับการตรวจสอบด้วยมือ ช่วยให้นักพัฒนาค้นหาและแก้ไขปัญหาความปลอดภัยได้ตั้งแต่ต้น

แชท