เมื่อโต้ตอบกับ DApps ผู้ใช้ต้องใส่ใจกับการควบคุมจำนวนโทเค็นที่ได้รับอนุญาต การตรวจสอบเนื้อหาลายเซ็น และสถานการณ์การอนุญาตที่ผิดปกติ
เขียนโดย: ลิซ่า
เมื่อวันที่ 11 พฤษภาคม ผู้ใช้ Twitter "pineapple.eth" ทวีตว่ากระเป๋าเงินของเขาถูกขโมยเนื่องจากการคลิกผิดพลาดบนเว็บไซต์ฟิชชิ่ง (syncswap[.]network) และเขาเสียเงินมากกว่า $100
(
แม้ว่าจำนวนเงินที่สูญเสียจะไม่มากแต่มีความเสี่ยงด้านความปลอดภัยสูงซ่อนอยู่ผู้ที่ตกเป็นเหยื่อมักจะสูญเสียทรัพย์สินจำนวนมากเนื่องจากความเสี่ยงที่ "ไม่เด่น" ของลายเซ็นคือ "ไม่สามารถมองเห็นได้" นั่นเป็นเหตุผลที่เราเขียนบทความนี้
ตามคำอธิบายของเหยื่อ ธุรกรรมที่ถูกขโมยมีดังนี้:
จากธุรกรรมทั้งสองนี้ ผู้โทรตามสัญญา (0x00002…d0000) โอน 34.87 USDC ตามที่อยู่ของเหยื่อ (0xA4089…82C3) ไปยัง (0x8256…D6B8) และโอน 81.36 USDC ไปยัง (0x5A69… 1C17) หากคุณดูที่ฟังก์ชัน TransferFrom คุณจะพบได้ไม่ยากว่าฟังก์ชันนี้คือการอนุญาตให้บุคคลที่สามเริ่มธุรกรรมเพื่อโอนสินทรัพย์ดิจิทัลที่เกี่ยวข้องจากบัญชีของเจ้าของไปยังบัญชีของผู้รับ
จากนั้นวิเคราะห์ที่อยู่ของผู้โทรตามสัญญา (0x00002...d0000) และพบว่ามีการดำเนินการขอใบอนุญาตเพิ่มเติม ซึ่งไม่ได้อยู่ในบันทึกธุรกรรมของเหยื่อ ใบอนุญาตมีบทบาทอย่างไร?
ตามคำแนะนำอย่างเป็นทางการ ใบอนุญาตได้รับการแนะนำในโปรโตคอล ERC20 ใน EIP-2612 และผู้ใช้สามารถโต้ตอบกับสัญญาการสมัครได้โดยการแนบลายเซ็นอนุญาต (ใบอนุญาต) โดยไม่ต้องมีการอนุญาตล่วงหน้า โดยเฉพาะอย่างยิ่ง เราทุกคนทราบดีว่าในการทำธุรกรรมของสกุลเงิน ERC20 A สามารถเรียกใช้ฟังก์ชันการอนุมัติเพื่ออนุญาต B นั่นคือการอนุญาตโทเค็นที่ระบุโดย A ไปยังบัญชีอื่นเพื่อดำเนินการ และต้องเป็นเจ้าของบัญชีนี้จึงจะเรียกการอนุมัติได้ การทำงาน. ฟังก์ชั่นของฟังก์ชั่นใบอนุญาตคือ A ลงนามวัตถุการอนุญาตล่วงหน้าภายใต้ห่วงโซ่ และแจ้งให้ B ทราบถึงลายเซ็นที่ได้รับ และ B สามารถใช้ลายเซ็นนี้เพื่อเรียกใบอนุญาตเพื่อดำเนินการอนุญาตของ A (ใช้การโอนจากเพื่อโอนการอนุญาต ) , A สามารถโอนโทเค็นที่ระบุโดยไม่ต้องส่งธุรกรรม และไม่ว่าเขาจะเป็นเจ้าของบัญชีหรือไม่ก็ตาม เขาสามารถดำเนินการตามใบอนุญาตเพื่ออนุญาตการดำเนินการได้ นอกจากนี้ Uniswap ได้เปิดตัว Permit2 มาตรฐานการอนุญาตโทเค็นใหม่
ต่อไปนี้เป็นการเปรียบเทียบระหว่างอนุมัติและอนุญาต:
ฟังก์ชั่นอนุมัติ (ที่อยู่ usr, uint wad) ผลตอบแทนภายนอก (บูล)
{
ค่าเผื่อ [msg.sender] [usr] = ปึก;
…
}
ใบอนุญาตทำงาน (
เจ้าของที่อยู่, คนใช้ที่อยู่,
uint256 nonce, uint256 หมดอายุ, อนุญาตบูล,
uint8 v, ไบต์ 32 r, ไบต์ 32 วินาที
) ภายนอก {
เบี้ยเลี้ยง [holder] [spender] = ปึก;
หลังจากทำความเข้าใจพื้นฐานแล้ว กลับไปที่เหตุการณ์ฟิชชิง คุณสามารถส่งฟังก์ชันใบอนุญาตนี้ด้วยพารามิเตอร์ 7 ตัว:
ในหมู่พวกเขา กำหนดเวลาคือ 1714509304969 และค่าคือ 116239404 ซึ่งหมายความว่าการให้สิทธิ์มีผลจนถึงเวลา 00:42 น. ของวันที่ 22 สิงหาคม 56300 (GMT) เกือบจะไม่มีกำหนด และจำนวนโทเค็นที่ได้รับอนุญาตคือ 116.239404 USDC ซึ่งเท่ากับจำนวนเงินที่เหยื่อขโมยไป ค่าของ v, r และ s เป็นข้อมูลลายเซ็นหลังจากที่ผู้ใช้ (เจ้าของ) ลงนามในเว็บไซต์ฟิชชิ่ง และฟังก์ชันอนุญาตจะตรวจสอบความถูกต้องของข้อมูลลายเซ็น หลังจากผ่านการยืนยันลายเซ็นแล้ว โทเค็นของผู้ใช้จะได้รับอนุญาตให้แฮ็กเกอร์ (spender)
กระบวนการทั้งหมดมีความชัดเจนมาก: เหยื่อลงนามในลายเซ็นและส่งไปยังเว็บไซต์ฟิชชิ่งแต่ไม่ได้อัปโหลดไปยังเชน หลังจากได้รับข้อมูลลายเซ็นแล้ว แฮ็กเกอร์ก็ส่งใบอนุญาตบนเชน ซึ่งเรียกว่าการอนุมัติเพื่ออนุญาต . การเซ็นชื่อเสร็จสิ้นแบบออฟไลน์โดยไม่ต้องใช้น้ำมันใดๆ แต่ต้องชัดเจนว่าไม่มีก๊าซที่นี่ไม่ได้หมายความว่าไม่มีการใช้ก๊าซ แต่ผู้ลงนาม (เหยื่อ) ไม่จำเป็นต้องจ่ายก๊าซสำหรับการอนุญาตและการโอน
ไม่ต้องสงสัยเลยว่า คล้ายกับการอนุมัติฟิชชิงที่ได้รับอนุญาต ใบอนุญาตนั้นอันตรายกว่าการอนุมัติฟิชชิงที่ได้รับอนุญาต ท้ายที่สุดแล้ว ตราบใดที่ลายเซ็นถูกขโมย การอนุญาตก็จะได้รับ ตัวอย่างเช่น ฟังก์ชันคำสั่งที่รอดำเนินการใน dex ต้องการให้ผู้ใช้ลงนามในข้อความบางอย่างเท่านั้นและผู้ใช้สามารถมอบทรัพย์สินให้กับ dex เพื่อดำเนินการโดยไม่ต้องจ่ายน้ำมัน อย่างไรก็ตาม หาก dex เป็นเว็บไซต์ฟิชชิ่งและปลอมแปลงข้อความที่เป็นอันตรายสำหรับ ผู้ใช้ลงนาม ทรัพย์สินของผู้ใช้อาจสูญหาย เท่าที่เราทราบ กระเป๋าเงินบางประเภทจะถอดรหัสและแสดงข้อมูลลายเซ็นของฟิชชิงการให้สิทธิ์ที่อนุมัติ แต่กระเป๋าเงินแทบไม่มีคำเตือนสำหรับการฟิชชิงลายเซ็นที่อนุญาต และผู้ใช้มีความเสี่ยงสูงที่จะถูกโจมตี ในขณะเดียวกัน ลายเซ็นใบอนุญาตเป็นพฤติกรรมแบบออฟไลน์ และผู้ใช้จะสังเกตได้ยากว่าลายเซ็นของพวกเขารั่วไหลหรือไม่
ปัจจุบัน ที่อยู่ของแฮ็กเกอร์ถูกทำเครื่องหมายว่าเป็นที่อยู่ฟิชชิ่งที่เป็นอันตรายโดย MistTrack
ที่อยู่ 1: 0x00002644e79602F056B03235106A9963826d0000
ที่อยู่ 2: 0x82563Ba592986Cb277d67B2E7c56ab3BB3FDD6B8
ที่อยู่ 3: 0x5A697967F0791d12db8A0f92344Abc6DD07a1C17
ทั้งสอง USDC ของเหยื่อถูกแลกเปลี่ยนเป็น ETH
ใช้ MistTrack เพื่อวิเคราะห์สกุลเงิน ETH, WBTC, USDT, USDC, SHIB, DAI, WETH, DAI, stETH, APE ปัจจุบัน ที่อยู่ 1 ทำกำไรได้ประมาณ 120,000 เหรียญสหรัฐ ที่อยู่ 2 ทำกำไรได้ประมาณ 200,000 เหรียญสหรัฐ และที่อยู่ 3 ทำกำไรได้ประมาณ 2,000 ดอลลาร์ นอกจากนี้ จากการวิเคราะห์ของ Scam Sniffer ซึ่งเป็นแพลตฟอร์มต่อต้านการฉ้อโกง Web3 ณ วันที่ 9 พฤษภาคม มีเหยื่อทั้งหมดมากกว่า 300 รายที่ถูกขโมยทรัพย์สินมูลค่าประมาณ 690,000 ดอลลาร์สหรัฐโดยลายเซ็นที่เป็นอันตรายตาม Permit2 จากการเปิดตัว Permit2 บน Uniswap จนถึงวันที่ 9 พฤษภาคม จนถึงตอนนี้เกือบ 670,000 ที่อยู่บน Ethereum mainnet ได้อนุญาต Permit2 แล้ว แน่นอนว่าข้อมูลนี้เป็นเพียงยอดภูเขาน้ำแข็งสำหรับภาพรวมของแก๊งนี้
บทความนี้ส่วนใหญ่เริ่มต้นด้วยกรณีที่ถูกขโมยจริงและแนะนำความเสี่ยงของลายเซ็นใบอนุญาต ทีมรักษาความปลอดภัยของ SlowMist เตือนคุณว่าอย่าเปิดเว็บไซต์ที่ไม่ทราบแหล่งที่มาเพื่อดำเนินการตามต้องการ เมื่อโต้ตอบกับ DApps ให้ใส่ใจกับการควบคุมจำนวนโทเค็นที่ได้รับอนุญาตในสัญญาและตรวจสอบเนื้อหาลายเซ็นอย่างรอบคอบ ใช้เครื่องมือการอนุญาตเช่น RevokeCash เป็นครั้งคราว ตามเวลา (ตรวจสอบว่ามีการอนุญาตที่ผิดปกติหรือไม่ และคุณสามารถใช้เครื่องมือการจัดการการอนุญาตสำหรับ Uniswap Permit2 (เพื่อตรวจสอบว่ามีการอนุญาตที่ผิดปกติหรือไม่ โปรดยกเลิกการอนุญาตทันเวลา
ลิงค์อ้างอิง:
193k โพสต์
120k โพสต์
99k โพสต์
77k โพสต์
64k โพสต์
60k โพสต์
56k โพสต์
53k โพสต์
52k โพสต์
51k โพสต์
การวิเคราะห์ลายเซ็นใบอนุญาต: ลายเซ็นออฟไลน์สามารถจับโทเค็นของคุณได้หรือไม่?
เขียนโดย: ลิซ่า
พื้นหลัง
เมื่อวันที่ 11 พฤษภาคม ผู้ใช้ Twitter "pineapple.eth" ทวีตว่ากระเป๋าเงินของเขาถูกขโมยเนื่องจากการคลิกผิดพลาดบนเว็บไซต์ฟิชชิ่ง (syncswap[.]network) และเขาเสียเงินมากกว่า $100
(
แม้ว่าจำนวนเงินที่สูญเสียจะไม่มากแต่มีความเสี่ยงด้านความปลอดภัยสูงซ่อนอยู่ผู้ที่ตกเป็นเหยื่อมักจะสูญเสียทรัพย์สินจำนวนมากเนื่องจากความเสี่ยงที่ "ไม่เด่น" ของลายเซ็นคือ "ไม่สามารถมองเห็นได้" นั่นเป็นเหตุผลที่เราเขียนบทความนี้
ตามคำอธิบายของเหยื่อ ธุรกรรมที่ถูกขโมยมีดังนี้:
(
จากธุรกรรมทั้งสองนี้ ผู้โทรตามสัญญา (0x00002…d0000) โอน 34.87 USDC ตามที่อยู่ของเหยื่อ (0xA4089…82C3) ไปยัง (0x8256…D6B8) และโอน 81.36 USDC ไปยัง (0x5A69… 1C17) หากคุณดูที่ฟังก์ชัน TransferFrom คุณจะพบได้ไม่ยากว่าฟังก์ชันนี้คือการอนุญาตให้บุคคลที่สามเริ่มธุรกรรมเพื่อโอนสินทรัพย์ดิจิทัลที่เกี่ยวข้องจากบัญชีของเจ้าของไปยังบัญชีของผู้รับ
จากนั้นวิเคราะห์ที่อยู่ของผู้โทรตามสัญญา (0x00002...d0000) และพบว่ามีการดำเนินการขอใบอนุญาตเพิ่มเติม ซึ่งไม่ได้อยู่ในบันทึกธุรกรรมของเหยื่อ ใบอนุญาตมีบทบาทอย่างไร?
(
ใบอนุญาตคืออะไร?
ตามคำแนะนำอย่างเป็นทางการ ใบอนุญาตได้รับการแนะนำในโปรโตคอล ERC20 ใน EIP-2612 และผู้ใช้สามารถโต้ตอบกับสัญญาการสมัครได้โดยการแนบลายเซ็นอนุญาต (ใบอนุญาต) โดยไม่ต้องมีการอนุญาตล่วงหน้า โดยเฉพาะอย่างยิ่ง เราทุกคนทราบดีว่าในการทำธุรกรรมของสกุลเงิน ERC20 A สามารถเรียกใช้ฟังก์ชันการอนุมัติเพื่ออนุญาต B นั่นคือการอนุญาตโทเค็นที่ระบุโดย A ไปยังบัญชีอื่นเพื่อดำเนินการ และต้องเป็นเจ้าของบัญชีนี้จึงจะเรียกการอนุมัติได้ การทำงาน. ฟังก์ชั่นของฟังก์ชั่นใบอนุญาตคือ A ลงนามวัตถุการอนุญาตล่วงหน้าภายใต้ห่วงโซ่ และแจ้งให้ B ทราบถึงลายเซ็นที่ได้รับ และ B สามารถใช้ลายเซ็นนี้เพื่อเรียกใบอนุญาตเพื่อดำเนินการอนุญาตของ A (ใช้การโอนจากเพื่อโอนการอนุญาต ) , A สามารถโอนโทเค็นที่ระบุโดยไม่ต้องส่งธุรกรรม และไม่ว่าเขาจะเป็นเจ้าของบัญชีหรือไม่ก็ตาม เขาสามารถดำเนินการตามใบอนุญาตเพื่ออนุญาตการดำเนินการได้ นอกจากนี้ Uniswap ได้เปิดตัว Permit2 มาตรฐานการอนุญาตโทเค็นใหม่
ต่อไปนี้เป็นการเปรียบเทียบระหว่างอนุมัติและอนุญาต:
ฟังก์ชั่นอนุมัติ (ที่อยู่ usr, uint wad) ผลตอบแทนภายนอก (บูล)
{
ค่าเผื่อ [msg.sender] [usr] = ปึก;
…
}
ใบอนุญาตทำงาน (
เจ้าของที่อยู่, คนใช้ที่อยู่,
uint256 nonce, uint256 หมดอายุ, อนุญาตบูล,
uint8 v, ไบต์ 32 r, ไบต์ 32 วินาที
) ภายนอก {
…
เบี้ยเลี้ยง [holder] [spender] = ปึก;
…
}
หลังจากทำความเข้าใจพื้นฐานแล้ว กลับไปที่เหตุการณ์ฟิชชิง คุณสามารถส่งฟังก์ชันใบอนุญาตนี้ด้วยพารามิเตอร์ 7 ตัว:
ในหมู่พวกเขา กำหนดเวลาคือ 1714509304969 และค่าคือ 116239404 ซึ่งหมายความว่าการให้สิทธิ์มีผลจนถึงเวลา 00:42 น. ของวันที่ 22 สิงหาคม 56300 (GMT) เกือบจะไม่มีกำหนด และจำนวนโทเค็นที่ได้รับอนุญาตคือ 116.239404 USDC ซึ่งเท่ากับจำนวนเงินที่เหยื่อขโมยไป ค่าของ v, r และ s เป็นข้อมูลลายเซ็นหลังจากที่ผู้ใช้ (เจ้าของ) ลงนามในเว็บไซต์ฟิชชิ่ง และฟังก์ชันอนุญาตจะตรวจสอบความถูกต้องของข้อมูลลายเซ็น หลังจากผ่านการยืนยันลายเซ็นแล้ว โทเค็นของผู้ใช้จะได้รับอนุญาตให้แฮ็กเกอร์ (spender)
กระบวนการทั้งหมดมีความชัดเจนมาก: เหยื่อลงนามในลายเซ็นและส่งไปยังเว็บไซต์ฟิชชิ่งแต่ไม่ได้อัปโหลดไปยังเชน หลังจากได้รับข้อมูลลายเซ็นแล้ว แฮ็กเกอร์ก็ส่งใบอนุญาตบนเชน ซึ่งเรียกว่าการอนุมัติเพื่ออนุญาต . การเซ็นชื่อเสร็จสิ้นแบบออฟไลน์โดยไม่ต้องใช้น้ำมันใดๆ แต่ต้องชัดเจนว่าไม่มีก๊าซที่นี่ไม่ได้หมายความว่าไม่มีการใช้ก๊าซ แต่ผู้ลงนาม (เหยื่อ) ไม่จำเป็นต้องจ่ายก๊าซสำหรับการอนุญาตและการโอน
ไม่ต้องสงสัยเลยว่า คล้ายกับการอนุมัติฟิชชิงที่ได้รับอนุญาต ใบอนุญาตนั้นอันตรายกว่าการอนุมัติฟิชชิงที่ได้รับอนุญาต ท้ายที่สุดแล้ว ตราบใดที่ลายเซ็นถูกขโมย การอนุญาตก็จะได้รับ ตัวอย่างเช่น ฟังก์ชันคำสั่งที่รอดำเนินการใน dex ต้องการให้ผู้ใช้ลงนามในข้อความบางอย่างเท่านั้นและผู้ใช้สามารถมอบทรัพย์สินให้กับ dex เพื่อดำเนินการโดยไม่ต้องจ่ายน้ำมัน อย่างไรก็ตาม หาก dex เป็นเว็บไซต์ฟิชชิ่งและปลอมแปลงข้อความที่เป็นอันตรายสำหรับ ผู้ใช้ลงนาม ทรัพย์สินของผู้ใช้อาจสูญหาย เท่าที่เราทราบ กระเป๋าเงินบางประเภทจะถอดรหัสและแสดงข้อมูลลายเซ็นของฟิชชิงการให้สิทธิ์ที่อนุมัติ แต่กระเป๋าเงินแทบไม่มีคำเตือนสำหรับการฟิชชิงลายเซ็นที่อนุญาต และผู้ใช้มีความเสี่ยงสูงที่จะถูกโจมตี ในขณะเดียวกัน ลายเซ็นใบอนุญาตเป็นพฤติกรรมแบบออฟไลน์ และผู้ใช้จะสังเกตได้ยากว่าลายเซ็นของพวกเขารั่วไหลหรือไม่
MistTrack
ปัจจุบัน ที่อยู่ของแฮ็กเกอร์ถูกทำเครื่องหมายว่าเป็นที่อยู่ฟิชชิ่งที่เป็นอันตรายโดย MistTrack
ที่อยู่ 1: 0x00002644e79602F056B03235106A9963826d0000
ที่อยู่ 2: 0x82563Ba592986Cb277d67B2E7c56ab3BB3FDD6B8
ที่อยู่ 3: 0x5A697967F0791d12db8A0f92344Abc6DD07a1C17
ทั้งสอง USDC ของเหยื่อถูกแลกเปลี่ยนเป็น ETH
ใช้ MistTrack เพื่อวิเคราะห์สกุลเงิน ETH, WBTC, USDT, USDC, SHIB, DAI, WETH, DAI, stETH, APE ปัจจุบัน ที่อยู่ 1 ทำกำไรได้ประมาณ 120,000 เหรียญสหรัฐ ที่อยู่ 2 ทำกำไรได้ประมาณ 200,000 เหรียญสหรัฐ และที่อยู่ 3 ทำกำไรได้ประมาณ 2,000 ดอลลาร์ นอกจากนี้ จากการวิเคราะห์ของ Scam Sniffer ซึ่งเป็นแพลตฟอร์มต่อต้านการฉ้อโกง Web3 ณ วันที่ 9 พฤษภาคม มีเหยื่อทั้งหมดมากกว่า 300 รายที่ถูกขโมยทรัพย์สินมูลค่าประมาณ 690,000 ดอลลาร์สหรัฐโดยลายเซ็นที่เป็นอันตรายตาม Permit2 จากการเปิดตัว Permit2 บน Uniswap จนถึงวันที่ 9 พฤษภาคม จนถึงตอนนี้เกือบ 670,000 ที่อยู่บน Ethereum mainnet ได้อนุญาต Permit2 แล้ว แน่นอนว่าข้อมูลนี้เป็นเพียงยอดภูเขาน้ำแข็งสำหรับภาพรวมของแก๊งนี้
สรุป
บทความนี้ส่วนใหญ่เริ่มต้นด้วยกรณีที่ถูกขโมยจริงและแนะนำความเสี่ยงของลายเซ็นใบอนุญาต ทีมรักษาความปลอดภัยของ SlowMist เตือนคุณว่าอย่าเปิดเว็บไซต์ที่ไม่ทราบแหล่งที่มาเพื่อดำเนินการตามต้องการ เมื่อโต้ตอบกับ DApps ให้ใส่ใจกับการควบคุมจำนวนโทเค็นที่ได้รับอนุญาตในสัญญาและตรวจสอบเนื้อหาลายเซ็นอย่างรอบคอบ ใช้เครื่องมือการอนุญาตเช่น RevokeCash เป็นครั้งคราว ตามเวลา (ตรวจสอบว่ามีการอนุญาตที่ผิดปกติหรือไม่ และคุณสามารถใช้เครื่องมือการจัดการการอนุญาตสำหรับ Uniswap Permit2 (เพื่อตรวจสอบว่ามีการอนุญาตที่ผิดปกติหรือไม่ โปรดยกเลิกการอนุญาตทันเวลา