Bitculator

ดาวน์โหลด Bitculator บน Android

มูลค่าตลาด:

$2.58 T

ปริมาณ 24 ชม.:

$18.54 B

ต.ค. 23 การบังคับขาย:

$3.84 K

สมัครสมาชิก

Bitculator · เรียนรู้

Reentrancy Attack

Reentrancy Attack หมายถึงอะไรในทางคริปโต

# 350·อัปเดตแล้ว ต.ค. 2026·1 นาทีในการอ่าน

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

อะไรคือ Reentrancy Attack?

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


Myth

“Only old code can get hit by a Reentrancy Attack.” ไม่จริง ทุกสัญญาที่ทำการเรียกภายนอกก่อนล็อกสถานะของตนเองอาจเสี่ยงถ้าโลจิกไม่รอบคอบ


Reentrancy Attack ทำงานอย่างไร

เรื่องสั้นอย่างรวดเร็ว Typical smart contract มีฟังก์ชัน withdraw ที่ส่งเงินไปยังผู้เรียก ถ้าส่งเงินก่อนแล้วจึงล้างยอดในทีหลัง ผู้โจมตีอาจแทรก callback และขอจำนวนเงินมากขึ้นก่อนที่ยอดจะถูกตั้งเป็นศูนย์

  1. Start: ผู้โจมตีฝากเงินเพื่อดูเหมือนถูกต้อง
  2. Call: ผู้โจมตีเรียก withdraw บนสัญญาที่เป้าหมาย
  3. Fallback: สัญญาที่เป้าหมายส่งเงินออกมา ซึ่งรันฟังก์ชัน fallback ของผู้โจมตี
  4. Repeat: ฟังก์ชัน fallback นี้เรียก withdraw อีกครั้งก่อนที่ยอดจะอัปเดต
  5. Drain: ลูปดำเนินต่อไปจนสัญญาไม่มีเงินหรือ gas เพียงพอ ใช่ นั่นคือกลอุบาย

เพียงข้อผิดพลาดในการเรียงลำดับที่เล็กน้อย ก็เป็นปัญหาใหญ่


ทำไม Reentrancy Attack ถึงสำคัญ

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

  • ประโยชน์: การรู้รูปแบบช่วยให้คุณระบุโค้ดที่เสี่ยงและเก็บรักษาเงินทุนให้ปลอดภัย
  • มุมมอง: มันเติบโตบนความโปร่งใสสาธารณะเพราะทุกอย่างบน blockchain สามารถเห็นและเรียกใช้งานได้
  • ความเกี่ยวข้อง: คุณจะเห็นมันใน DeFi, สะพาน(bridges), ทรัพย์สินคลัง, แม้กระทั่งการจ่ายเงินโครงการสำหรับ DAOs.

Tip

ติดตามการตรวจสอบ затем effects แล้ว interactions อัปเดตยอดก่อน จากนั้นทำการเรียกภายนอก เพิ่มการ Guard ป้องกัน reentrancy เพื่อความปลอดภัยเพิ่มเติม


คุณลักษณะสำคัญของ Reentrancy Attack

นี่คือสิ่งที่ทำให้มันทำงาน:

  • Recursion: โค้ดภายนอกเรียกกลับเข้าไปในสัญญาเดิมก่อนที่มันจะเสร็จ
  • Ordering: ข้อบกพร่องปรากฏเมื่อส่งเงินหรือเรียกออกก่อนที่สถานะจะถูกอัปเดต
  • Cross: สามารถกระโดดข้ามหลายสัญญา ไม่ใช่แค่ฟังก์ชันเดียว
  • Assets: ทำงานร่วมกับ ETH, โทเคน และแม้กระทั่งเครดิตบัญชีหากถูกเขียนโค้ดไม่ดี

Variations

รสชาติต่างๆ แต่ headaches เดียวกันสำหรับโค้ดที่ละเลย:

  • Single: Reentering ฟังก์ชันเดียวซ้ำๆ
  • Cross: Reentering ผ่านฟังก์ชันที่ต่างกันภายในสัญญาเดียว
  • Multi: Reentering ข้ามสองสัญญาหรือมากกว่าในลูป
  • ReadOnly: มีอิทธิพลต่อ views หรือ price oracles เพื่อหลอกให้เขียนครั้งถัดไป

Reminder

การแก้ไข Reentrancy Attack ไม่ใช่แค่เกี่ยวกับฟังก์ชันเดียว รีวิวการเรียกภายนอกทุกครั้ง เพิ่มการทดสอบห่วงเรียกที่แปลกๆ และตารางการตรวจสอบ audits เป็นประจำ


ตัวอย่าง

การโจมตี The DAO ในปี 2016 ใช้ลูป reentrancy บน withdraw ก่อนที่ balances จะถูกล้าง ครองงบประมาณทรัพย์สินอย่างมากภายในไม่กี่นาที


ข้อเท็จจริงน่าสนใจ

สำนวนภาษาเชิงชุมชน checks then effects then interactions มาจากคู่มือความมั่นคงรุ่นก่อนๆ และติดอยู่เพราะสั้น จำง่าย และใช้งานได้จริง


Wrap-Up

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

เราลืมอะไรไปหรือไม่?

ข้อมูลจากคุณช่วยให้เรารักษาความถูกต้องไว้ได้ โปรดติดต่อเราหากพบข้อมูลที่ไม่ถูกต้องหรือขาดหายไป

ติดต่อ