ข้ามไปยังเนื้อหา

การวางยาพิษที่อยู่

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

อัปเดต

จัดทำขึ้นเพื่อการศึกษาเท่านั้น ไม่ใช่คำแนะนำการลงทุน การลงทุนอาจทำให้สูญเสียเงินลงทุนได้

คำตอบโดยตรง

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

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

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

การวางยาพิษที่อยู่
0 / 5
0 ตรวจสอบรายการแล้ว; 5 รายการยังไม่ได้รับการแก้ไข

การเสร็จสิ้นการตรวจสอบนี้ไม่ได้พิสูจน์ว่าสินทรัพย์ ธุรกรรม หรือระบบมีความปลอดภัย

กลไกการทำงาน

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

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

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

ชื่อและการจ่ายทดสอบเป็นมาตรการเสริม ไม่ใช่หลักฐานยืนยันตัวตน ให้ resolve ชื่อ ENS สำหรับเชนและระเบียนที่ตั้งใจใช้ ณ เวลาลงนาม หากแสดงชื่อแบบ reverse ต้อง resolve แบบ forward กลับไปยังที่อยู่เดียวกัน การทดสอบจำนวนเล็กน้อยช่วยได้เฉพาะเมื่อผู้รับยืนยันอย่างเป็นอิสระและการจ่ายหลักใช้ปลายทางที่ตรึงไว้เดิม การคัดลอกจากประวัติอีกครั้งทำให้การป้องกันนี้หมดผล

ใช้ขั้นตอนดังต่อไปนี้:

  1. ตรึงเชน เครือข่าย สินทรัพย์และสัญญาโทเคนที่แน่นอน ประเภทผู้รับ รูปแบบที่อยู่ จำนวน และบันทึกกำกับ แท็ก calldata รุ่น หรือวันหมดอายุ จากแหล่งอิสระที่ผ่านการยืนยัน
  2. resolve ชื่อหรือ QR เพียงครั้งเดียว ตรวจรูปแบบและเช็กซัม แล้วผูกไบต์ปลายทางทั้งหมดกับเชนที่ตั้งใจใช้ ยืนยันชื่อแบบ reverse ด้วยการ resolve แบบ forward แทนการถือว่าป้ายชื่อคือหลักฐานตัวตน
  3. เปรียบเทียบปลายทางกับ allowlist ที่ควบคุมได้ สมุดที่อยู่ หรือใบแจ้งหนี้ที่ลงนามไว้ ห้ามใช้ประวัติธุรกรรม และกำหนดให้ผู้รับใหม่หรือผู้รับที่เปลี่ยนสาระสำคัญต้องผ่านการอนุมัติอิสระหรือสองชั้น
  4. ถอดรหัสธุรกรรมที่ยังไม่ลงนามอย่างครบถ้วน แยกฟิลด์ native to ออกจากสัญญาโทเคนหรือบริดจ์ แล้วตรวจผู้รับ โทเคน จำนวนดิบ การอนุมัติ เส้นตาย และความหมายของปลายทางใน calldata
  5. เมื่อเหมาะสม ให้ส่งจำนวนเล็กน้อยไปยังปลายทางที่ตรึงไว้และขอให้ผู้รับยืนยันอย่างเป็นอิสระ ห้ามคัดลอกที่อยู่จากประวัติอีกครั้งสำหรับการจ่ายหลัก
  6. ลงนามการโอนหลักจากระเบียนที่ตรวจแล้วเท่านั้น เปรียบเทียบปลายทางเต็มและจำนวนบนจอที่เชื่อถือได้ จากนั้นตรวจใบรับ สัญญาผู้ปล่อย ล็อก และส่วนต่างยอดคงเหลือบนเชนที่ถูกต้อง
  7. หากสงสัยว่าถูกวางยาพิษหรือส่งผิด ให้หยุดการจ่ายครั้งต่อไป เก็บแฮชและหลักฐาน และรีบติดต่อบริการผู้รับ ผู้ออกสินทรัพย์ หรือหน่วยงานบังคับใช้กฎหมายตามความเหมาะสม โดยถือว่าการอายัด การคืน และการกู้คืนเป็นเพียงความเป็นไปได้ตามเงื่อนไข ไม่ใช่สิ่งรับประกัน

ตัวอย่าง

  • การย่อซ่อนความแตกต่าง ที่อยู่จริง 0x12ab1111111111111111111111111111111189ef และที่อยู่ผู้โจมตี 0x12ab9999999999999999999999999999999989ef แสดงผลเหมือนกันเป็น 0x12ab...89ef ทั้งคู่มีอักขระเลขฐานสิบหกที่แสดงตรงกัน 4 + 4 = 8 ตัว แต่แตกต่างกันในอักขระตรงกลางทั้ง 32 ตัว การเปรียบเทียบเฉพาะส่วนต้นและท้ายที่แสดงจึงให้ผลตรงกันผิด ส่วนการเปรียบเทียบทุกไบต์ไม่เป็นเช่นนั้น
  • ภาระงานค้นหา vanity การจับคู่ตัวอักษรฐานสิบหกที่เลือก k = 8 ตัว มีงานคาดหมาย 16^8 = 4,294,967,296 ตัวเลือก เมื่อสมมติอัตรา 50,000,000 candidates/s เวลาคาดหมายคือ 4,294,967,296 / 50,000,000 = 85.89934592 s นี่เป็นเพียงภาพของพื้นที่ค้นหา ไม่ใช่เวลาทำงานที่รับประกันหรือเกณฑ์เตือนของกระเป๋าเงินดิจิทัล
  • ล็อกเทียบกับ state สัญญาโทเคนปล่อย Transfer(victim, lookalike, 0) ยอดคงเหลือของเหยื่อเปลี่ยนจาก 250,000.000000 เป็น 250,000.000000 ดังนั้นส่วนต่างคือ 0.000000 แต่ตัวทำดัชนีกิจกรรมอาจยังแสดงแถวการโอน ตรวจสัญญาผู้ปล่อยและการอนุญาตการเรียก เพราะแถวเพียงอย่างเดียวไม่ได้พิสูจน์ทั้งการเคลื่อนย้ายมูลค่าหรือลายมือชื่อของเหยื่อ
  • การทดสอบต้องตรึงปลายทาง คลังวางแผนส่ง 50,000 USDC ส่ง 1 USDC ไปยังที่อยู่ที่ตรวจแล้ว ได้รับคำยืนยันอิสระ แล้วส่ง 49,999 USDC จากระเบียนที่ตรึงไว้เดิม: 1 + 49,999 = 50,000 USDC หากเจ้าหน้าที่คัดลอกที่อยู่คล้ายกันจากประวัติอีกครั้งสำหรับส่วนที่สอง การทดสอบจะไม่ปกป้องการจ่าย 49,999 USDC

ความเสี่ยง

  • ผู้ส่งคัดลอกที่อยู่คล้ายกันจากประวัติธุรกรรมที่ถูกวางยาพิษ
  • หน้าจอที่ย่อที่อยู่ซ่อนอักขระตรงกลางที่แตกต่าง
  • ผู้ใช้เข้าใจว่า vanity prefix หรือ suffix คืออัตลักษณ์ของผู้รับ
  • การโอน ERC-20 มูลค่าศูนย์สร้างแถวประวัติที่ทำให้เข้าใจผิด
  • โทเคนปลอมหรือล็อกของโทเคนถูกเข้าใจว่าเป็นกิจกรรมของสินทรัพย์หลัก
  • ตัวทำดัชนีจำแนกฟิลด์เหตุการณ์ผิดหรือแก้ไขช้าเกินไป
  • ชื่อ สัญลักษณ์ หรือไอคอนของโทเคนสแปมปลอมเป็นสินทรัพย์ที่เชื่อถือได้
  • มัลแวร์คลิปบอร์ดแทนที่ที่อยู่ที่ตรวจแล้วก่อนลงนาม
  • สมุดที่อยู่ในเครื่องหรือที่ซิงค์ถูกวางยาพิษหรือล้าสมัย
  • allowlist ผูกเชน สินทรัพย์ บทบาท หรือรุ่นที่อยู่ผิด
  • ผู้ใช้เพิกเฉยต่อคำเตือนเช็กซัมที่ไม่ถูกต้องหรือไม่มีเช็กซัม
  • ผู้ใช้เข้าใจว่าเช็กซัมที่ถูกต้องเป็นหลักฐานยืนยันตัวตนผู้รับ
  • การ resolve ENS เปลี่ยนไป ใช้ชนิดเหรียญผิด หรือล้าสมัย
  • มีการแสดงชื่อ reverse โดยไม่ยืนยันแบบ forward
  • หลังจ่ายทดสอบมีการคัดลอกใหม่จากแหล่งที่ไม่น่าเชื่อถือ
  • ที่อยู่ฝากของศูนย์ซื้อขาย เครือข่าย บันทึกกำกับ หรือแท็กผิดหรือหมดอายุ
  • ผู้ใช้เข้าใจปลายทางบริดจ์ พร็อกซี หรือสัญญาและ calldata ที่จำเป็นผิด
  • ผู้ลงนามตรวจเฉพาะข้อความที่ย่อ แม้บนอุปกรณ์ฮาร์ดแวร์
  • การโอนไปยังผู้รับผิดกลายเป็นข้อมูลหลักของเชนก่อนเข้าแทรกแซง
  • เหยื่อพึ่งพาการอายัดตามดุลยพินิจของผู้ออกหรือถูกหลอกซ้ำด้วยการกู้คืน

ความเข้าใจผิดที่พบบ่อย

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

หัวข้อที่เกี่ยวข้อง

แหล่งข้อมูล

การนำทาง

ค้นหาในวิกิ...