BTC
ETH
HTX
SOL
BNB
ดูตลาด
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

การตรวจสอบความปลอดภัยของ Art of Web 3.0 ของ ChatGPT: มีบางอย่างแต่ยังไม่ใช่ตรงนั้น

CertiK
特邀专栏作者
บทความนี้มีประมาณ 2344 คำ การอ่านทั้งหมดใช้เวลาประมาณ 4 นาที
ChatGPT พร้อมที่จะรับตำแหน่งผู้เชี่ยวชาญด้านการตรวจสอบรหัสมนุษย์หรือไม่ หรือยังไม่เพียงพอท
สรุปโดย AI
ChatGPT พร้อมที่จะรับตำแหน่งผู้เชี่ยวชาญด้านการตรวจสอบรหัสมนุษย์หรือไม่ หรือยังไม่เพียงพอท

mMSe89Pc0KUxmeqnteYC4VM64UwNFdGzEKxqizt1.jpeg

ในเดือนพฤศจิกายน 2022 OpenAI ได้เปิดตัวโครงการปัญญาประดิษฐ์ (AI) ที่เป็นนวัตกรรมใหม่

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

ตลอดทั้งปี 2022 การสูญเสียทรัพย์สินในฟิลด์ Web3.0 เนื่องจากเหตุการณ์ต่างๆ เช่น การโจมตีของแฮ็กเกอร์และการฉ้อโกงมีมูลค่าเกิน 3.7 พันล้านดอลลาร์สหรัฐ ความสูญเสียครั้งใหญ่เช่นนี้ทำให้ผู้คนในอุตสาหกรรมคิดว่า เทคโนโลยีใหม่ๆ เช่น ChatGPT สามารถทำได้หรือไม่ ใช้เพื่อปรับปรุงความปลอดภัยของรหัสสัญญาอัจฉริยะ ความปลอดภัย

ZKasino ซึ่งเป็นแพลตฟอร์มเกมแบบกระจายศูนย์เพิ่งผ่านการตรวจสอบล่วงหน้าผ่าน ChatGPT

ZKasino หวังว่าในขณะที่ CertiK ดำเนินการตรวจสอบอย่างครอบคลุม CertiK จะทำการตรวจสอบเบื้องต้นของผลลัพธ์ของ ChatGPT เพื่อทดสอบความสามารถของ ChatGPT ในการทำหน้าที่เป็น "ผู้ตรวจสอบสัญญาอัจฉริยะ" ของ AI

แล้วผลการทดสอบของ ChatGPT เป็นอย่างไร?

พร้อมที่จะรับงานผู้เชี่ยวชาญด้านการตรวจสอบรหัสมนุษย์หรือไม่?

หรือยังไม่เพียงพอที่จะทดแทนแรงงานคนได้ทั้งหมด?

ในวันที่ 23 ธันวาคม 2022 ZKasino "จ้าง" ChatGPT เพื่อระบุความเสี่ยงด้านความปลอดภัยที่อาจเกิดขึ้นในสัญญาอัจฉริยะ เครื่องมือนี้ทำให้เกิดข้อกังวลเกี่ยวกับความเสี่ยงที่ถูกต้องตามกฎหมายหลายประการ

อย่างไรก็ตาม แม้ว่า ChatGPT จะให้บริการที่มีคุณค่าบางอย่างแก่โค้ด Web3. ที่ทำงานได้ดีอย่างปฏิเสธไม่ได้ ที่นี่ เราหวังว่าข้อมูลเชิงลึกและคำแนะนำของผู้เชี่ยวชาญด้านความปลอดภัย CertiK จะช่วยให้ ChatGPT กลายเป็นเครื่องมือรักษาความปลอดภัยแอปพลิเคชัน Web3.0 ที่มีประสิทธิภาพยิ่งขึ้น

ด้านล่างนี้ เราจะแนะนำการค้นพบที่ผิดพลาดของ ChatGPT สองประเภทในเหตุการณ์นี้โดยละเอียด

ChatGPT พบปัญหาอะไรบ้างในสัญญา?

lUd4rE16SA6EZRI1GdWnKwiezkQGGpsFugrtN49R.png

ชื่อเรื่องรอง

ช่องโหว่ร้ายแรงหรือร้ายแรง?

ChatGPT กล่าวถึงปัญหาด้านความปลอดภัยทั่วไปหลายประการที่มีอยู่ในการใช้งานสัญญาอัจฉริยะ

อย่างไรก็ตาม ไม่สามารถระบุความเสี่ยงร้ายแรงบางอย่างได้ ซึ่งรวมถึง:

  • ช่องโหว่ลอจิกเฉพาะโครงการ

  • การคำนวณทางคณิตศาสตร์และแบบจำลองทางสถิติที่ไม่ถูกต้อง

  • ความไม่สอดคล้องกันระหว่างการใช้โค้ดกับการออกแบบโครงการ

ข้อผิดพลาด #1: ปัญหาตรรกะเฉพาะโครงการ

ChatGPT ล้มเหลวในการระบุช่องโหว่ที่สำคัญซึ่งจะทำให้ผู้โจมตีสามารถชนะอย่างต่อเนื่องและระบายเงินของผู้ใช้ในสัญญา Bankroll ผู้เล่นสามารถเข้าร่วมเกมได้โดยการเรียกฟังก์ชันสุ่มที่ตรวจสอบได้ (VRF) และ VRF ของ Chainlink จะใช้ตัวเลขสุ่มเพื่อเรียกใช้ฟังก์ชัน

รหัสของ ZKasino ช่วยให้ผู้ใช้สามารถรับเงินคืนได้หากการโทรของสมหวังแบบสุ่ม () ล้มเหลว

Aty0iZY5GFiAx3NtYsYcvicWqQL32DCP94xAc3Xl.jpeg

ในระหว่างการตรวจสอบรหัสสัญญาอัจฉริยะเดียวกันของ CertiK พบว่ามีการโทร _transferPayout() ที่อาจเป็นอันตราย ซึ่งเป็นฟังก์ชันที่ออกแบบมาเพื่อโอนเงินที่ชนะไปยังบัญชีของผู้เล่น

อย่างไรก็ตาม ผู้โจมตีสามารถเรียก _transferPayout() เพื่อย้อนกลับเมื่อสูญเสีย ซึ่งทำให้การเรียกของสมหวังแบบสุ่มคำทั้งหมด() ล้มเหลว ซึ่งจะทำให้เข้าสู่ช่วงรอ 100 บล็อก จากนั้นเรียกใช้ CoinFlip_Refund() เพื่อคืนเงิน ซึ่งหมายความว่า ผู้โจมตีจะไม่สูญเสียเงิน

แม้ว่า ChatGPT จะทราบปัญหาการโทรล้มเหลว แต่ก็ล้มเหลวในการค้นหาวิธีการโจมตีที่ใช้ประโยชน์จากความล้มเหลวในการโทรในโปรเจ็กต์นี้

ดังนั้น ChatGPT จึงไม่เห็นผลกระทบของช่องโหว่นี้รวมกับตรรกะของโครงการ สำหรับคำอธิบายของขั้นตอนการโจมตีที่เฉพาะเจาะจง โปรดดูรายงานการตรวจสอบฉบับเต็มของ ZKasino

ช่องโหว่ #2: การคำนวณทางคณิตศาสตร์และแบบจำลองทางสถิติที่ไม่ถูกต้อง

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

แม้ว่า ChatGPT จะ "เห็นด้วย" ถึงความสำคัญของสิ่งนี้ แต่ก็ไม่พบผลลัพธ์ของเกมที่ไม่ยุติธรรม มันนำมาซึ่งการใช้ VRF และผลลัพธ์ที่ไม่ยุติธรรมที่เป็นไปได้หากสัญญา VRF ถูกทำลายหรือถูกดัดแปลง:

"หากสัญญา VRF ไม่ปลอดภัยหรือถูกดัดแปลง อาจนำไปสู่ผลลัพธ์ที่ไม่ยุติธรรมในเกม"

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

การสุ่มที่ไม่ยุติธรรม

หนึ่งในความเสี่ยงระดับกลางที่เกี่ยวข้องกับการสุ่มคือการใช้หมายเลขสุ่มอย่างไม่ยุติธรรมในเกม VideoPoker ซึ่งผู้เล่นมีโอกาสน้อยลงในการได้รับไพ่บางใบ

การตัดทศนิยม

พบปัญหาความเสี่ยงอีกประการหนึ่งในเกมที่มีลักษณะคล้ายลูกเต๋าซึ่งอนุญาตให้ผู้เล่นเลือกตัวคูณเฉพาะเพื่อเพิ่มผลตอบแทนที่คาดหวัง

ช่องโหว่ #3: ความไม่สอดคล้องกันระหว่างการใช้โค้ดและการออกแบบโครงการ

ChatGPT มักจะเข้าใจการใช้งานฟังก์ชันเดียว แต่ไม่สามารถเข้าใจสาเหตุที่แท้จริงได้

ตัวอย่างเช่น อาจเข้าใจวิธีการดำเนินการของฟังก์ชันบางอย่างในระดับเทคนิค แต่ไม่สามารถเข้าใจวัตถุประสงค์ของฟังก์ชันในสัญญาอัจฉริยะทั้งหมดได้

เพื่อให้แน่ใจว่า ChatGPT ไม่มีปัญหาในการเข้ารหัส จำเป็นต้องเข้าใจตรรกะของรหัสของสัญญาอัจฉริยะให้ดียิ่งขึ้น

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

การตรวจสอบอินพุตไม่ถูกต้อง

เราพบปัญหาการตรวจสอบอินพุตในสัญญา Plinko ที่ทำให้ตั้งค่าตัวคูณไม่ถูกต้อง

ตาม ZKasino จำนวนบรรทัดที่ใช้ใน Plinko ควรเป็น 8 ถึง 16 อย่างไรก็ตาม เนื่องจากข้อผิดพลาดในการตรวจสอบต่อไปนี้ เจ้าของสัญญา Bankroll สามารถตั้งค่าบรรทัดนอกช่วงที่คาดไว้ได้โดยใช้ฟังก์ชัน setPlinkoMultipliers()

nSJEOVmcmfNwKQD0Qeepd2clUcHZ6irKh1tzfA0Q.png

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

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

ChatGPT ให้คำตอบที่แตกต่างกันสำหรับคำถามที่สอง: ฟังก์ชันจะตรวจสอบว่าค่าของ "numRows" อยู่ระหว่าง 8 ถึง 16 และถ้าค่าของ "risk" น้อยกว่า 3 หากไม่เป็นไปตามเงื่อนไขข้างต้น ฟังก์ชันจะส่งกลับข้อผิดพลาด "InvalidNumberToSet"

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

ความไม่สอดคล้องกันในการอัปเดตค่า

เขียนในตอนท้าย

uoHHVv3zU14xMxzHFYzdx4yKX41jvaXpPYV09Y11.png

เขียนในตอนท้าย

แม้จะมีการฝึกอบรมที่เหมาะสม แต่ ChatGPT ก็พลาดประเด็นด้านความปลอดภัยที่สำคัญบางประการในการตรวจสอบ นี่เป็นเพราะข้อจำกัดของปัญญาประดิษฐ์ในการทำความเข้าใจอย่างถ่องแท้ถึงความซับซ้อนและความแตกต่างของโค้ด รวมถึงการขาดประสบการณ์เชิงปฏิบัติในสถานการณ์จริง

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

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

รูปภาพด้านล่างเน้นจุดแข็งและจุดอ่อนของบริการที่อิงกับมนุษย์และ ChatGPT ตามเกณฑ์ต่างๆ

I0Dq6lQyvGi4NXmfibRvzNxu80ZxnI0ROfOJjSUp.jpeg

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

ในบทความนี้ เราเปรียบเทียบผลการตรวจสอบล่วงหน้าของ ZKasino ที่โต้ตอบกับ ChatGPT กับผลการตรวจสอบขั้นสุดท้ายที่ดำเนินการโดยผู้เชี่ยวชาญ CertiK

เมื่อเทคโนโลยีก้าวหน้าและมีความเข้าใจที่ชัดเจนขึ้นเกี่ยวกับวิศวกรรมที่รวดเร็ว วิศวกรจะสามารถใช้ ChatGPT ได้ดีขึ้น

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

แต่ตอนนี้ ChatGPT สามารถช่วยให้เรามีส่วนร่วมในการแข่งขันชิงธง: [ฉันให้ AI เขียนบทความ วิเคราะห์โค้ด หรือแม้แต่แข่งขันใน CTF เพื่อชิงธงให้ฉัน!】ยินดีต้อนรับสู่คลิกเพื่ออ่าน!

ความปลอดภัย
สัญญาที่ชาญฉลาด
เทคโนโลยี
AI
Web3.0
ยินดีต้อนรับเข้าร่วมชุมชนทางการของ Odaily
กลุ่มสมาชิก:
https://t.me/Odaily_News
กลุ่มสนทนา:
https://t.me/Odaily_GoldenApe
บัญชีทางการ:
https://twitter.com/OdailyChina
สารบัญบทความ
คลังบทความของผู้เขียน
CertiK
ดาวน์โหลดแอพ Odaily พลาเน็ตเดลี่
ให้คนบางกลุ่มเข้าใจ Web3.0 ก่อน
IOS
Android