กำไร:
- ความสามารถในการเข้าใจว่าปัญญาประดิษฐ์ขยายขอบเขตของผู้ตรวจสอบ แต่ไม่ได้แทนที่ขอบเขตดังกล่าว และมีประโยชน์ในการสแกนหมวดหมู่และการค้นหาแบบร่าง
- ความสามารถในการรับรู้ว่าปัญญาประดิษฐ์ได้พลาดจุดอ่อนดั้งเดิมและข้อผิดพลาดด้านตรรกะทางธุรกิจ และคำกล่าวที่ 'ปลอดภัย' อย่างคล่องแคล่วนั้นไม่รับประกัน
- ความสามารถในการจำแนกสิ่งที่ค้นพบตามระดับความจริงจัง และเข้าใจว่าการอนุมัติขั้นสุดท้ายและความรับผิดชอบทางวิชาชีพนั้นขึ้นอยู่กับผู้ตรวจสอบที่มีความสามารถ
การตรวจสอบความปลอดภัย (การตรวจสอบช่องโหว่ของสัญญาอัจฉริยะอย่างเป็นระบบ) เป็นงานที่มีความรับผิดชอบมากที่สุดของ Web3 ผู้ตรวจสอบบัญชีพลาดบรรทัดเดียวอาจส่งผลให้ขาดทุนหลายล้านดอลลาร์ ในหน่วยนี้คุณจะได้เรียนรู้วิธีใช้ AI เป็นผู้ช่วยในการตรวจสอบ เราจะเรียนรู้ตั้งแต่การสร้างเบาะแสไปจนถึงการเขียนโครงร่างข้อค้นพบ แต่ประโยคที่สำคัญที่สุดคือ: AI ไม่สามารถควบคุมได้ เป็นตัวช่วยที่ลับสายตาผู้ตรวจสอบบัญชี การอนุมัติขั้นสุดท้ายขึ้นอยู่กับผู้ตรวจสอบที่มีอำนาจซึ่งรับผิดชอบทางวิชาชีพ
เหตุใดการตรวจสอบจึงมีความสำคัญด้านความปลอดภัย
รายงานการตรวจสอบทำให้โครงการและนักลงทุนมั่นใจว่า “รหัสนี้ได้รับการตรวจสอบแล้ว” หากการรับประกันนี้เป็นเท็จ ผลที่ตามมาคือหายนะ: โปรโตคอลที่ถูกเอารัดเอาเปรียบ สูญเสียเงินทุน โครงการพังทลาย ดังนั้น การใช้ AI ในการตรวจสอบจึงเป็นส่วนที่ระมัดระวังที่สุดของโมดูลนี้ AI ขยายขอบเขตของผู้ตรวจสอบ (จำรูปแบบได้มากขึ้น อ่านเร็วขึ้น) แต่ไม่ได้เข้ามาแทนที่ผู้ตรวจสอบ
ทำไมมันไม่ผ่าน? เพราะ:
- AI ไม่สามารถมองเห็นช่องโหว่เฉพาะ/ใหม่ที่ไม่ได้อยู่ในข้อมูลการฝึกอบรม
- AI มักจะพลาดข้อบกพร่องในตรรกะทางธุรกิจของโปรโตคอล นั่นคือโค้ดมีความถูกต้องทางเทคนิค แต่สามารถหาประโยชน์ได้ในเชิงเศรษฐกิจ
- AI สามารถให้ความมั่นใจแบบผิดๆ ได้ด้วยการพูดว่า "ปลอดภัย" ในภาษาที่คล่องแคล่ว นี่คือผลลัพธ์ที่อันตรายที่สุด
ชั้นของการใช้ AI ในการควบคุม
1. การสแกนเริ่มต้นและการแจ้งเตือนรูปแบบ AI ต้องผ่านรูปแบบช่องโหว่ที่รู้จัก เช่น รายการตรวจสอบ: การกลับเข้ามาใหม่ การควบคุมการเข้าถึง การจัดการแบบออราเคิล การดำเนินหน้า ซึ่งจะทำให้ผู้ตรวจสอบไม่พลาดหมวดหมู่ใดๆ
2. คำอธิบายรหัส การอธิบายฟังก์ชันที่ซับซ้อนให้กับ AI ในภาษาธรรมดาช่วยให้ผู้ตรวจสอบเข้าใจตรรกะได้อย่างรวดเร็ว แต่คำอธิบายจะถูกเปรียบเทียบกับโค้ดเสมอ
3. การเขียนร่างข้อค้นพบ เมื่อผู้ตรวจสอบพบช่องโหว่ AI จะช่วยประหยัดเวลาในการเขียนร่างรายงาน (คำอธิบาย ผลกระทบ วิธีแก้ไขที่เสนอ)
4. การสร้างสมมติฐานที่ขัดแย้ง ถาม AI ว่า "ฟังก์ชันนี้จะถูกนำไปใช้ในทางที่ผิดได้อย่างไร" การถาม " ทำให้เรานึกถึงมุมมองที่ก้าวร้าว
ข้อควรสนใจ: เพียงเพราะ AI บอกว่า "ฉันไม่พบช่องโหว่ใด ๆ ในโค้ดนี้" ไม่ได้หมายความว่า "โค้ดนี้ปลอดภัย" หลักฐานการขาดหายไปไม่ใช่การขาดหลักฐาน การที่ AI ไม่สามารถค้นหาบางสิ่งบางอย่างไม่ได้ทำให้ผู้ตรวจสอบบัญชีไม่จำเป็นต้องตรวจสอบพื้นที่นั้น
ค้นหาระดับความรุนแรง
ผลการตรวจสอบจะจัดประเภทตามระดับความรุนแรง AI ควรใช้เฟรมเวิร์กนี้เมื่อสร้างแบบร่าง:
ระดับ
ความหมาย
ตัวอย่าง
สำคัญ
การสูญเสียกองทุน/การล็อคเป็นไปได้โดยตรง
การถอนเงินด้วยการกลับเข้ามาใหม่
สูง
ผลกระทบร้ายแรงในบางสภาวะ
การพิมพ์ที่ไม่ได้รับอนุญาต (มิ้นต์)
ปานกลาง
ผลกระทบจำกัดหรือสภาวะที่ยากลำบาก
การสูญเสียเล็กน้อยจากการเบี่ยงเบนของ Oracle
ต่ำ
ความเสี่ยงเล็กน้อย การละเมิดแนวปฏิบัติที่ดี
ขาดการถ่ายทอดกิจกรรม
ข้อมูล
ไม่ปลอดภัย อ่านง่าย
ขาด NatSpec
พรอมต์อ่อน / พรอมต์แรง
พรอมต์ที่อ่อนแอ:
สัญญานี้ปลอดภัยหรือไม่?
คำถามนี้บังคับให้ AI ทำการตัดสินที่สมบูรณ์และไม่สมเหตุสมผลเช่น "ใช่/ไม่ใช่" ซึ่งเป็นสิ่งที่เราไม่ต้องการ
พรอมต์อันทรงพลัง:
บทบาทของคุณ: ผู้ช่วยผู้ตรวจสอบสัญญาอัจฉริยะอาวุโส สแกนสัญญาต่อไปนี้เพื่อความปลอดภัย พิจารณาหมวดหมู่ต่างๆ ต่อไปนี้ทีละหมวดหมู่: การกลับเข้าใหม่ การควบคุมการเข้าถึง การดำเนินการจำนวนเต็ม การตรวจสอบความถูกต้องอินพุต ข้อมูลออราเคิล/ข้อมูลภายนอก การดำเนินหน้า ขีดจำกัดก๊าซ สำหรับการค้นหาแต่ละรายการ: (1) บรรทัดรหัสที่เกี่ยวข้อง (2) ทำให้เกิดความเสี่ยง (3) ความรุนแรงโดยประมาณ (วิกฤต/สูง/ปานกลาง/ต่ำ) (4) ข้อเสนอวิธีแก้ปัญหา สิ่งเหล่านี้เป็นสมมติฐานที่ต้องได้รับการยืนยัน อย่าให้คำตัดสินที่ "ปลอดภัย" ทำเครื่องหมายบริเวณที่คุณไม่แน่ใจอย่างชัดเจนว่า "ให้ผู้ตรวจสอบบัญชียืนยัน"
เทมเพลตที่สามารถคัดลอกได้สี่แบบ
1) การเรียกดูตามหมวดหมู่:
สแกนสัญญานี้เพื่อดูหมวดหมู่ต่อไปนี้: การกลับเข้าใหม่ การควบคุมการเข้าถึง จำนวนเต็มล้น การตรวจสอบอินพุต การขึ้นต่อกันของ Oracle การดำเนินหน้า DoS/gas สำหรับแต่ละหมวดหมู่ ให้พูดว่า "มี/ไม่มีความเสี่ยง/ฉันไม่แน่ใจ" และเชื่อมโยงเหตุผลของคุณกับบรรทัดในโค้ด อย่าตัดสินถึงที่สุด
2) สมมติฐานตอบโต้จากมุมมองของผู้โจมตี:
คิดเหมือนผู้โจมตี: มีวิธีใดบ้างที่จะใช้ฟังก์ชันนี้ในทางที่ผิด? เขียนแต่ละสถานการณ์ทีละขั้นตอนและระบุเงื่อนไขที่จำเป็น สถานการณ์เหล่านี้เป็นสมมติฐานที่ต้องทดสอบ อย่าสร้างโค้ดการหาประโยชน์จริง เพียงอธิบายความเสี่ยง
3) รายงานผลการค้นพบร่าง:
รายงานการค้นพบที่ได้รับการยืนยันต่อไปนี้ในภาษาการตรวจสอบอย่างเป็นทางการ: ชื่อ ความรุนแรง คำอธิบาย ผลกระทบ รหัสที่ได้รับผลกระทบ ขั้นตอนในการทำซ้ำ โซลูชันที่เสนอ ใช้ภาษาที่วัดผลและทางเทคนิค การพูดเกินจริง สมมติว่าการค้นพบนี้ได้รับการยืนยันจากผู้ตรวจสอบบัญชีแล้ว อย่าสร้างการค้นพบใหม่
4) แก้ไขการยืนยัน:
ด้านล่างนี้คือช่องโหว่และการแก้ไขที่นักพัฒนานำไปใช้ ตรวจสอบว่าการแก้ไขปิดช่องโหว่จริงหรือไม่ ทำเครื่องหมายว่าจะสร้างผลข้างเคียงหรือช่องโหว่ใหม่หรือไม่ อย่าพูดว่า "ปิด" อย่างแน่นอน ลงท้ายด้วย "ต้องได้รับการยืนยันจากการทดสอบ"
มินิเคส 3 อัน (เป็นตัวเลข)
กรณีที่ 1 — AI ป้องกันการข้ามหมวดหมู่ ผู้ตรวจสอบบัญชีกำลังจะมุ่งเน้นไปที่สัญญา 400 บรรทัดและข้ามหมวด Oracle การสแกนหมวดหมู่ของ AI ให้คำเตือนว่า "ข้อมูลราคามาจากแหล่งเดียว และเปิดให้มีการบิดเบือน" ผู้ตรวจสอบบัญชีตรวจสอบแล้วพบว่ามีความเสี่ยงปานกลางจริงๆ บทเรียน: AI รักษาวินัยในการครอบคลุม
กรณีที่ 2 — การรับประกัน “ปลอดภัย” ที่เป็นเท็จ อีกทีมถาม AI ว่า “ปลอดภัยไหม?” เขาถาม; “ดูเหมือนจะไม่มีปัญหาสำคัญอะไร” AI กล่าว การตรวจสอบลูกเรือเป็นไปอย่างไม่ซับซ้อน จากนั้นผู้ตรวจสอบอิสระพบข้อบกพร่องด้านตรรกะทางธุรกิจ นั่นคือการคำนวณที่ถูกต้องทางเทคนิคแต่มีสิ่งจูงใจที่สามารถหาประโยชน์ได้ บทเรียน: AI พลาดข้อผิดพลาดทางตรรกะทางธุรกิจ เขาไว้ใจไม่ได้ว่าพูดว่า "ปลอดภัย"
กรณีที่ 3 — การร่างรายงานประหยัดเวลาได้ 3 ชั่วโมง ผู้ตรวจสอบบัญชีใช้เวลาครึ่งวันด้วยตนเองในการรายงานผลการค้นพบ 8 รายการ เมื่อฉันให้ผลการตรวจสอบกับ AI และพิมพ์ร่างอย่างเป็นทางการ เวลาก็ลดลงประมาณ 3 ชั่วโมง ผู้ตรวจสอบบัญชีทุ่มเทเวลาในการเจาะลึก บทเรียน: AI มีความปลอดภัยและมีประสิทธิภาพในการรายงาน เนื่องจากการค้นพบนี้ได้รับการตรวจสอบโดยมนุษย์แล้ว
ช่องโหว่ด้านตรรกะทางธุรกิจ: จุดบอดของ AI
ช่องโหว่ที่แพงที่สุดมักไม่ได้มาจากข้อผิดพลาดทางเทคนิคในโค้ด แต่มาจากความสามารถในการหาประโยชน์จากตรรกะทางธุรกิจ: การปัดเศษการหาผลประโยชน์จากบัญชีรางวัล การขโมยคะแนนโหวตแบบแฟลช การเปลี่ยนแปลงราคาโดยทันที เหล่านี้เป็นกรณีที่โค้ดทำงาน "ถูกต้อง" แต่โปรโตคอลสามารถถูกหลอกได้ในเชิงเศรษฐกิจ AI มีแนวโน้มที่จะพลาดข้อผิดพลาดดังกล่าว โดยเฉพาะข้อผิดพลาดเฉพาะโปรโตคอล ดังนั้นการตรวจสอบตรรกะทางธุรกิจจึงเป็นพื้นที่ที่ผู้ตรวจสอบต้องใช้มนุษย์มากที่สุดและพึ่งพา AI น้อยที่สุด
คำแนะนำ: ถาม AI “จะใช้ประโยชน์จากแรงจูงใจทางเศรษฐกิจของโปรโตคอลนี้ได้อย่างไร” และใช้สถานการณ์ที่เกิดขึ้นเป็นจุดเริ่มต้น แต่จำไว้ว่าคุณและทีมควรทำการวิเคราะห์จริง
ข้อผิดพลาดทั่วไป
- ถาม AI ว่า "ปลอดภัยไหม?" การถามและไว้วางใจใช่ของคุณ ไม่จำเป็นต้องมีวิจารณญาณโดยเด็ดขาด
- หยุดรีวิวเมื่อ AI แจ้งว่า “หาไม่เจอ” การไม่มีตัวตนไม่ใช่หลักฐาน
- การมอบหมายการตรวจสอบตรรกะทางธุรกิจให้กับ AI มันเป็นจุดบอดที่ใหญ่ที่สุดของเขา
- ไม่ใช้เครื่องมืออิสระ (Slither ฯลฯ ) AI เพียงอย่างเดียวไม่เพียงพอ
- นำสิ่งที่ AI สร้างขึ้นมาใส่ลงในรายงานโดยไม่ตรวจสอบ เสี่ยงต่อการเกิดภาพหลอน
- พยายามมอบความรับผิดชอบในการควบคุมให้กับ AI ความรับผิดชอบอยู่ที่ผู้เชี่ยวชาญ
โดยสรุป
- การตรวจสอบมีความสำคัญด้านความปลอดภัย AI ขยายขอบเขตของผู้ตรวจสอบแต่ไม่ได้เข้ามาแทนที่
- AI พลาดจุดอ่อนดั้งเดิมและข้อบกพร่องด้านตรรกะทางธุรกิจ การพูดว่า "ปลอดภัย" ไม่ใช่ความมั่นใจ
- สิ่งที่ค้นพบแบ่งตามระดับความรุนแรง AI มีประโยชน์ในการสร้างแบบร่าง
- สมมติฐานที่โต้แย้งและการคัดกรองหมวดหมู่จะรักษาระเบียบวินัยในการรวมไว้
- การอนุมัติขั้นสุดท้ายและความรับผิดชอบทางวิชาชีพจะขึ้นอยู่กับผู้ตรวจสอบที่มีความสามารถเสมอ
งานสมัคร
ค้นหาสัญญาตัวอย่างที่มีช่องโหว่ที่ทราบ (เพื่อวัตถุประสงค์ทางการศึกษา ตัวอย่างของ "สัญญาที่มีช่องโหว่" มีอยู่ในโอเพ่นซอร์ส) ใช้ข้อความแจ้ง "การสแกนตามหมวดหมู่" กับ AI โปรดทราบว่า AI: (1) พบช่องโหว่ที่แท้จริง (2) สร้างการค้นพบที่ปลอมแปลง/เท็จ (3) ตัดสินอย่างเด็ดขาด เช่น "ปลอดภัย" จากนั้นเปรียบเทียบกับเครื่องมือวิเคราะห์แบบคงที่
รายการตรวจสอบ
- [ ] ถาม AI ว่า "ปลอดภัยไหม?" แต่ฉันมีการสแกนตามหมวดหมู่แทน
- [ ] ฉันถือว่าการค้นพบแต่ละครั้งเป็นเพียงสมมติฐาน
- [ ] ฉันได้ตรวจสอบตรรกะทางธุรกิจกับตัวเอง/ทีมแล้ว
- [ ] ฉันตรวจสอบความถูกต้องข้ามด้วยเครื่องมือวิเคราะห์สแตติกอิสระ
- [ ] I have confirmed that the AI does not fabricate findings.
- [ ] ฉันจำแนกสิ่งที่ค้นพบตามระดับความรุนแรง
- [ ] ฉันยอมรับว่าการอนุมัติขั้นสุดท้ายขึ้นอยู่กับผู้ตรวจสอบที่มีอำนาจ