รายการอภิธานศัพท์
Reentrancy Attack (การโจมตีแบบเรียกซ้ำ)
วอลเล็ตและความปลอดภัยReentrancy attack เรียกกลับเข้าสัญญาก่อนที่ยอดคงเหลือจะถูกอัปเดต ทำให้ผู้โจมตีถอนเงินซ้ำได้หลายรอบในธุรกรรมเดียว
คำจำกัดความ
Reentrancy attack คือการโจมตีสัญญาอัจฉริยะที่ส่งเงินออกไปก่อนจะอัปเดตบันทึกยอดคงเหลือภายในของตัวเอง สัญญาฝ่ายรับจะฉวยจังหวะนั้นเรียกกลับเข้าไปยังฟังก์ชันเดิม ซึ่งยังเห็นยอดเก่าอยู่ แล้วถอนเงินซ้ำหลายรอบภายในธุรกรรมเดียว นี่คือช่องโหว่ของสัญญาอัจฉริยะประเภทที่เก่าแก่และเป็นที่รู้จักมากที่สุด และมีส่วนกำหนดแนวปฏิบัติการเขียน Solidity ในปัจจุบัน แนวป้องกันมาตรฐานคือรูปแบบ checks-effects-interactions ที่บันทึกสถานะก่อนเรียกภายนอกเสมอ และตัวป้องกัน reentrancy ที่ล็อกฟังก์ชันระหว่างทำงาน บทเรียนของช่องโหว่นี้คือในโค้ดที่ประกอบร่วมกันได้ ทุกการเรียกภายนอกอาจยกการควบคุมให้ฝ่ายที่ไว้ใจไม่ได้ การตรวจสอบจึงเน้นลำดับการเรียกเป็นพิเศษ
ขั้นต่อไป
คำที่เกี่ยวข้อง
เพิ่มเติมใน วอลเล็ตและความปลอดภัย
การยึดบัญชีAddress Poisoning (การวางที่อยู่ปลอม)รหัสป้องกันฟิชชิงสิทธิ์ของคีย์ APIBridge Exploit (การเจาะสะพานข้ามเชน)โครงการรางวัลค้นหาช่องโหว่การสับเปลี่ยนคลิปบอร์ดการเก็บแบบเย็น (cold storage)การอนุมัติทั้งคอลเลกชัน (setApprovalForAll)ฟิชชิงคริปโตแบบมีผู้ดูแล vs ไม่มีผู้ดูแล (custodial vs non-custodial)ประกันการเก็บรักษาสินทรัพย์