กำไร:
- ความสามารถในการรับรู้รูปแบบช่องโหว่ทั่วไป เช่น การกลับเข้ามาใหม่ การควบคุมการเข้าถึง การจัดการของออราเคิล และการรันนิ่ง และสแกนสิ่งเหล่านั้นด้วยเครื่องมือวิเคราะห์แบบคงที่ + ปัญญาประดิษฐ์ + มนุษย์
- ความสามารถในการแยกแยะระหว่างจุดแข็งของ AI ในการอธิบายผลลัพธ์ของเครื่องมือ และจัดลำดับความสำคัญของผลบวกลวงและจุดอ่อนใน MEV และตรรกะทางธุรกิจ
- ทำความเข้าใจว่า 'การสแกนทั้งหมด' ไม่ใช่ใบรับรองความปลอดภัย การสแกนเป็นเพียงการควบคุมชั้นเดียว
เราเห็นระเบียบวินัยแบบองค์รวมของการตรวจสอบในหน่วยที่แล้ว ในหน่วยนี้ เรามุ่งเน้นไปที่หัวข้อทางเทคนิคเพิ่มเติม: การสแกนช่องโหว่ — การค้นหารูปแบบช่องโหว่ที่ทราบในโค้ดอย่างเป็นระบบ ที่นี่เราจะใช้ AI ร่วมกับเครื่องมือวิเคราะห์แบบคงที่ ในฐานะผู้ช่วยที่สแกนและอธิบายรูปแบบช่องโหว่ที่ทราบ เป้าหมาย: เพื่อทำความเข้าใจช่องโหว่ที่พบบ่อยที่สุดในเชิงลึก และแยกแยะว่าจุดใดที่ AI เชื่อถือได้ และจุดใดที่ไม่เพียงพอในการสแกน
การสแกนแบบคงที่และไดนามิก
การสแกนมีสองประเภท การวิเคราะห์แบบคงที่ — ตรวจสอบโค้ดโดยไม่ต้องรัน: เครื่องมือ เช่น Slither และ Mythril สแกนโค้ดสัญญาและทำเครื่องหมายรูปแบบที่ทราบ การวิเคราะห์แบบไดนามิก/เชิงสัญลักษณ์ (การรันโค้ดด้วยอินพุตที่แตกต่างกันหรือการสำรวจเชิงคณิตศาสตร์): การคลุมเครือ (การทิ้งระเบิดด้วยการป้อนข้อมูลแบบสุ่ม) และการดำเนินการเชิงสัญลักษณ์ (การสำรวจเส้นทางที่เป็นไปได้ทั้งหมด) ตกอยู่ในกลุ่มนี้
AI ไม่ได้มาแทนที่เครื่องมือเหล่านี้ แต่ทำหน้าที่เสริม: เมื่อยานพาหนะออกคำเตือน AI จะอธิบายคำเตือนเป็นภาษาธรรมดา AI สามารถเตือนเมื่อเครื่องมือขาดรูปแบบ แต่ AI เพียงอย่างเดียวไม่สามารถรับประกันว่าจะสแกนได้มากเพียงใด ขั้นตอนการทำงานที่เหมาะสม: เครื่องมือ + AI + มนุษย์
เคล็ดลับ: ให้ผลลัพธ์ของเครื่องมือวิเคราะห์แบบคงที่แก่ AI (เช่น รายงาน Slither) และขอให้ “อธิบายการแจ้งเตือนแต่ละรายการเป็นภาษาธรรมดา ซึ่งถือเป็นความเสี่ยงที่แท้จริง และสิ่งใดอาจเป็นผลบวกลวง” ถาม. AI มีคุณค่าอย่างยิ่งในการทำให้เอาท์พุตเครื่องมือดิบเป็นที่เข้าใจและจัดลำดับความสำคัญสำหรับมนุษย์
รูปแบบช่องโหว่ที่พบบ่อยที่สุด
1. การกลับเข้ามาใหม่ หากฟังก์ชันเรียกใช้สัญญาภายนอกโดยไม่อัปเดตสถานะ สัญญาที่เรียกสามารถย้อนกลับ เรียกใช้ฟังก์ชันเดิมอีกครั้ง และถอนกองทุนได้หลายครั้ง วิธีแก้ไข: ลำดับการตรวจสอบผลกระทบและการโต้ตอบและการกลับเข้าใหม่
2. ขาดการควบคุมการเข้าถึง ฟังก์ชั่นที่สำคัญ (การถอน การถอน การอัพเกรด) ถูกเปิดเผยสู่สาธารณะโดยไม่ได้ตั้งใจ มันเป็นหนึ่งในข้อผิดพลาดที่พบบ่อยที่สุดและมีราคาแพง
3. การจัดการของออราเคิล การพึ่งพาแหล่งราคาภายนอก (ออราเคิล) อย่างไร้เหตุผลของสัญญา ผู้โจมตีจะบิดเบือนราคาทันทีและหลอกลวงโปรโตคอล วิธีแก้ไข: ราคาเฉลี่ยถ่วงน้ำหนักตามเวลา (TWAP) หลายแหล่ง
4. จำนวนเต็มล้น/อันเดอร์ฟอล เมื่อตัวเลขเกินค่าสูงสุดที่อนุญาตและกลับไปยังจุดเริ่มต้น Modern Solidity จะตรวจจับส่วนใหญ่โดยอัตโนมัติ แต่ความเสี่ยงยังคงอยู่ในโค้ดระดับต่ำ (แอสเซมบลี)
5. วิ่งหน้า ธุรกรรมปรากฏในพูลสาธารณะ (mempool) ก่อนที่จะได้รับการยืนยัน ผู้โจมตีสามารถดูธุรกรรมของคุณและแทรกธุรกรรมของเขาเองไว้ข้างหน้าได้ MEV (Maximal Extractable Value — ค่าที่แยกจากลำดับธุรกรรม) คือชื่อทั่วไปของหัวข้อนี้
6. การปฏิเสธการให้บริการ (DoS) การวนซ้ำมีราคาแพงเกินไปและทำให้ฟังก์ชันใช้งานไม่ได้ หรือการขึ้นต่อกันของที่อยู่ถูกล็อค
7. อัพเกรดความเสี่ยง การชนกันของพื้นที่เก็บข้อมูลและการใช้อำนาจในทางที่ผิดในสัญญาที่อัปเกรดได้
ช่องโหว่
ความน่าเชื่อถือในการสแกน AI
ทำไม
การกลับเข้ามาใหม่
สูง
เป็นที่รู้จักรูปแบบที่ชัดเจน
การควบคุมการเข้าถึง
สูง
สามารถสแกนแม่พิมพ์ได้
การดำเนินการจำนวนเต็ม
สูง
การควบคุมมาตรฐาน
การจัดการของออราเคิล
ปานกลาง
ต้องมีบริบท
วิ่งหน้า/MEV
ปานกลาง-ต่ำ
เฉพาะโปรโตคอล
ข้อผิดพลาดทางตรรกะทางธุรกิจ
ต่ำ
ของแท้ตามบริบท
พรอมต์อ่อน / พรอมต์แรง
พรอมต์ที่อ่อนแอ:
มีช่องโหว่ในรหัสนี้หรือไม่?
พรอมต์อันทรงพลัง:
บทบาทของคุณ: ผู้ช่วยคัดกรองความปลอดภัย สแกนสัญญาด้านล่างเพื่อดูรูปแบบที่ทราบต่อไปนี้และ "มีความเสี่ยง/ไม่มี/ไม่แน่ใจ" สำหรับแต่ละรูปแบบ: การกลับเข้าใหม่ การควบคุมการเข้าถึง การดำเนินการจำนวนเต็ม การขึ้นต่อกันของออราเคิล การทำงานส่วนหน้า DoS อัปเกรดความปลอดภัย เชื่อมโยงการตัดสินใจแต่ละรายการเข้ากับบรรทัดที่เกี่ยวข้อง และอธิบายว่าเหตุใดจึงมีความเสี่ยง สิ่งเหล่านี้เป็นสมมติฐานที่จะได้รับการยืนยันด้วยเครื่องมือวิเคราะห์คงที่และผู้ตรวจสอบบัญชี โปรดทราบว่าอาจมีผลบวกลวง
เทมเพลตที่สามารถคัดลอกได้สี่แบบ
1) คำอธิบายผลลัพธ์ของเครื่องมือ:
ด้านล่างนี้คือรายงานเครื่องมือวิเคราะห์แบบคงที่ (Slither) อธิบายการแจ้งเตือนแต่ละรายการเป็นภาษาธรรมดา: หมายความว่าอย่างไร เป็นความเสี่ยงที่แท้จริงหรือผลบวกลวงที่เป็นไปได้ สิ่งใดควรมีความสำคัญเป็นอันดับแรก อย่าตัดสินใจเด็ดขาด จัดลำดับความสำคัญสำหรับการยืนยันของผู้ตรวจสอบบัญชี
2) การคัดกรองที่เน้นการกลับเข้าใหม่:
ค้นหาฟังก์ชันทั้งหมดที่โทรออกภายนอกในสัญญานี้ ตรวจสอบว่ามีการปฏิบัติตามลำดับการตรวจสอบผลกระทบและการโต้ตอบสำหรับแต่ละรายการหรือไม่ และมียามกลับเข้าใหม่หรือไม่ แสดงกลุ่มเสี่ยงด้วยเส้น ทำเครื่องหมายหากคุณไม่แน่ใจ กำลังสร้างโค้ดการหาประโยชน์
3) แผนที่ควบคุมการเข้าถึง:
แสดงรายการฟังก์ชันภายนอก/สาธารณะทั้งหมดในสัญญานี้ และระบุ "ใครสามารถโทรได้" (ทุกคน/เจ้าของ/บทบาท) สำหรับแต่ละฟังก์ชัน ดำเนินการที่สำคัญ (ถอนออก พิมพ์ อัปเกรด) และทำเครื่องหมายการดำเนินการที่มีการควบคุมการเข้าถึงที่อ่อนแอ นำเสนอพร้อมกับโต๊ะ
4) การกำจัดผลบวกลวง:
พิจารณาว่าเหตุใดคำเตือนการสแกนนี้อาจไม่ใช่ความเสี่ยงที่แท้จริง (ผลบวกลวง): บริบทหรือเงื่อนไขของโค้ดใดที่จะทำให้คำเตือนนี้เป็นโมฆะ แต่อย่าพูดว่า "ไม่มีปัญหาเลย"; ระบุประเด็นที่ต้องการการยืนยัน
มินิเคส 3 อัน (เป็นตัวเลข)
กรณีที่ 1 — ยานพาหนะ + AI ประสิทธิภาพเพิ่มขึ้นสองเท่า ทีมหนึ่งดำเนินการ Slither ในโครงการ 12 สัญญาและได้รับคำเตือน 140 ครั้ง เมื่อเราให้ AI อธิบายและจัดลำดับความสำคัญของการแจ้งเตือน ปรากฎว่าการแจ้งเตือน 95 รายการจากทั้งหมด 140 รายการเป็นผลบวกลวง ทีมงานมุ่งเน้นไปที่ผู้สมัครจริง 45 คน เวลาทดสอบลดลงจาก 2 วันเป็น 5 ชั่วโมง บทเรียน: AI ทรงพลังในการปรับผลผลิตของยานพาหนะให้มีความเป็นมนุษย์
กรณีที่ 2 – AI แย่งชิง MEV ในสัญญา DEX (การแลกเปลี่ยนแบบกระจายอำนาจ) AI พบว่ารูปแบบมาตรฐานนั้นสะอาด แต่ไม่สามารถตรวจจับช่องโหว่ที่อยู่เบื้องหน้าได้ เพราะนี่เป็นเรื่องเฉพาะเจาะจงกับลำดับการดำเนินงานของโปรโตคอล ผู้ตรวจสอบบัญชีมนุษย์และการจำลองถูกจับได้ บทเรียน: ความเสี่ยงเฉพาะโปรโตคอล เช่น MEV/front-running คือจุดอ่อนของ AI
กรณีที่ 3 — หลีกเลี่ยงการเสียเวลากับผลบวกลวง ทีมงานไม่ต้องเขียนซ้ำโดยไม่จำเป็นเมื่อ AI อธิบายว่าคำเตือนการกลับเข้าใหม่นั้นแท้จริงแล้วเป็นผลบวกที่ผิดพลาด (ฟังก์ชันนี้ได้รับการปกป้องแล้ว) แต่ทีมงานยังคงยืนยันด้วยการทดสอบเพียงครั้งเดียว บทเรียน: AI จัดลำดับความสำคัญ การยืนยันมาพร้อมกับการทดสอบอีกครั้ง
ข้อจำกัดของการสแกน
การสแกนจะค้นหารูปแบบที่ทราบ ทั้งเครื่องมือและ AI ไม่รับประกันว่าจะตรวจพบช่องโหว่ใหม่ที่ไม่ซ้ำใครหรือเฉพาะโปรโตคอล ดังนั้นการคัดกรองจึงเป็นส่วนหนึ่งของการตรวจสอบ ไม่ใช่ตัวเขาเอง แนวคิดที่ว่า "การสแกนนั้นสะอาด จึงหมายความว่าปลอดภัย" เป็นหนึ่งในความเข้าใจผิดที่อันตรายที่สุดในสาขานี้ การขุดลอกจะหยิบผลไม้ที่ห้อยต่ำขึ้นมา สำหรับความเสี่ยงที่ลึกซึ้งและไม่เหมือนใคร ความเชี่ยวชาญของมนุษย์ การทดสอบ การคลุมเครือ และการตรวจสอบอย่างเป็นทางการถือเป็นสิ่งสำคัญ
ข้อควรระวัง: รายงาน "สะอาด" ของเครื่องมือสแกนหรือ AI ไม่ใช่ใบรับรองความปลอดภัย การนำเสนอในลักษณะนั้น — โดยเฉพาะต่อนักลงทุน — ถือเป็นการทำให้เข้าใจผิดและผิดจรรยาบรรณ
ข้อผิดพลาดทั่วไป
- ทดแทนการตรวจคัดกรอง การสแกนเป็นชั้นเดียว ไม่ใช่ทั้งหมด
- การใช้ AI โดยไม่มีเครื่องมือ การวิเคราะห์แบบคงที่ + AI + การทำงานร่วมกันของมนุษย์
- กำจัดผลบวกลวงโดยไม่มีการยืนยัน แต่ละหน้าจอได้รับการทดสอบ/ตรวจสอบโดยมนุษย์
- หลีกเลี่ยงความเสี่ยงเฉพาะโปรโตคอล (MEV) โดยอาศัย AI จุดอ่อนของ AI
- การคิดว่า "สแกนสะอาด" = "ปลอดภัย" มันไม่สามารถค้นหาสิ่งที่ไม่รู้จักได้
- กำลังสร้างโค้ดการหาประโยชน์ คำอธิบายความเสี่ยงในการป้องกันเท่านั้นที่ถูกต้องตามกฎหมาย
โดยสรุป
- การสแกนช่องโหว่จะค้นหารูปแบบช่องโหว่ที่ทราบด้วยยานพาหนะ + AI + มนุษย์
- AI มีประสิทธิภาพในการอธิบายและจัดลำดับความสำคัญของเอาท์พุตของเครื่องมือวิเคราะห์แบบคงที่
- เชื่อถือได้ในรูปแบบที่ชัดเจน เช่น การกลับเข้าใหม่และการควบคุมการเข้าถึง MEV และตรรกะทางธุรกิจอ่อนแอ
- แม้แต่การกำจัดผลบวกลวงก็ยังต้องมีการยืนยัน
- "การสแกนใหม่ทั้งหมด" ไม่ใช่ใบรับรองความปลอดภัย มันไม่ได้ทดแทนการควบคุมดูแล
งานสมัคร
เรียกใช้เครื่องมือวิเคราะห์แบบคงที่ตามสัญญาตัวอย่าง (ถ้าเป็นไปได้) หรือค้นหารายงาน Slither สำเร็จรูป ใช้พร้อมท์ "คำอธิบายผลลัพธ์เครื่องมือ" กับ AI ประเมินว่า AI: (1) อธิบายคำเตือนอย่างถูกต้อง (2) สมเหตุสมผลในการแยกแยะระหว่างผลบวกลวง และ (3) พลาดความเสี่ยงเฉพาะโปรโตคอล กรอกคอลัมน์ “พบยานพาหนะ / อธิบายโดย AI / ยืนยันโดยมนุษย์” ในตาราง
รายการตรวจสอบ
- [ ] ฉันวางตำแหน่งฟักเป็นเลเยอร์ของส่วนควบคุม
- [ ] ฉันใช้เครื่องมือวิเคราะห์แบบคงที่ + AI + มนุษย์ร่วมกัน
- [ ] ฉันค้นหารูปแบบตามหมวดหมู่เพื่อดูรูปแบบที่รู้จัก
- [ ] ฉันกำจัดผลบวกลวงด้วยการยืนยัน
- [ ] ฉันอาศัยมนุษย์ในด้านที่อ่อนแอ เช่น MEV/ตรรกะทางธุรกิจ
- [ ] ฉันไม่ได้เสนอ "การกวาดล้าง" เป็นหลักประกัน
- [ ] ฉันทำงานเพื่อการป้องกันเท่านั้น ฉันไม่ได้สร้างการหาประโยชน์