มีความเสี่ยงด้านความปลอดภัยจำนวนมากในด้านการเงินแบบกระจายอำนาจ (DeFi) ซึ่งอาจก่อให้เกิดอันตรายร้ายแรงต่อผู้ใช้ แพลตฟอร์ม และระบบนิเวศทางการเงินทั้งหมดเราได้สรุปความเสี่ยงด้านความปลอดภัยของ DeFi สามประเภท และอธิบายกระบวนการโจมตีของแฮ็กเกอร์และวิธีแก้ปัญหาที่เกี่ยวข้องโดยการวิเคราะห์เหตุการณ์ด้านความปลอดภัยที่แท้จริงล่าสุด
- ความเสี่ยงจากการปั่นราคา 
- ความเสี่ยงจากช่องโหว่ของสัญญาอัจฉริยะ 
- ความเสี่ยงในการดำเนินงานของผู้ใช้ 
1. ความเสี่ยงจากการปั่นราคา
ใน DeFi ความเสี่ยงจากการเปลี่ยนแปลงราคาหมายถึงผู้ไม่ประสงค์ดีที่พยายามทำกำไรหรือมีอิทธิพลต่อตลาดโดยการควบคุมราคาของสินทรัพย์การยักย้ายดังกล่าวอาจนำไปสู่การเปลี่ยนแปลงราคาตลาดที่ผิดปกติและทำให้เกิดความสูญเสียต่อผู้เข้าร่วมรายอื่นด้านล่างนี้ เราสรุปสถานการณ์สามประการที่อาจเกิดความเสี่ยงจากการควบคุมราคาใน DeFi:
- การโจมตีสินเชื่อแฟลช 
- การโจมตีแซนวิช 
- การโจมตีของออราเคิล 
1.1 การโจมตีสินเชื่อแฟลช
การโจมตีด้วย Flash Loan เป็นวิธีการโจมตีที่ปรากฏในแอปพลิเคชัน DeFi ใช้ประโยชน์จากสินเชื่อแฟลช ซึ่งเป็นการดำเนินการทางการเงินที่ให้คุณยืมเงินโดยไม่ต้องมีหลักทรัพย์ค้ำประกันผู้โจมตียืมเงินจำนวนมากผ่านการกู้ยืมแบบแฟลช และดำเนินการหลายอย่างในธุรกรรมเดียวกันเพื่อกระทำการฉ้อโกง
เหตุการณ์การโจมตีด้วยแฟลชยืมของ ShidoGlobal
เมื่อวันที่ 23 มิถุนายน 2023 การโจมตี Flash Loan ของ ShidoGlobal เกิดขึ้นบน BSC (Binance Smart Chain) ผู้โจมตีบรรลุการเก็งกำไรโทเค็นผ่านกลไกการล็อคและการอ้างสิทธิ์และราคาที่แตกต่างกันระหว่างสองพูลขโมย 976 WBNB สำเร็จ
Attack Tx:
ผู้โจมตีทำการโจมตีแบบ flash Loan อย่างไร?
- ผู้โจมตีหยิบเงินกู้แฟลชจำนวน 40 WBNB 

- ผู้โจมตีแลกเปลี่ยน 39 WBNB เป็น 10, 436, 972, 685, 676, 390, 697 Shido Inu: โทเค็น SHIDO (ทศนิยม 9 ตำแหน่ง) และฝากไว้ใน PancakeSwap V2: SHIDO-WBNB pool การดำเนินการนี้จะเพิ่มอุปทานของโทเค็น Shido Inu: SHIDO ในกลุ่ม ทำให้ราคาของโทเค็นลดลง 

- ผู้โจมตีจึงเรียก ShidoLock.lockTokens และ ShidoLock.claimTokens ตามลำดับ โดยแปลง 10, 436, 972, 685.676390697 Shido Inu: โทเค็น SHIDO (ทศนิยม 9 ตำแหน่ง) เป็น 10, 436, 986, 704, 133, 494, 387, 000, 000 , 000 โทเค็น SHIDO (ทศนิยม 18 ตำแหน่ง) 
เมื่อผู้โจมตีเรียกใช้ฟังก์ชัน lockTokens ในสัญญา ShidoLock ผู้โจมตีจะล็อกโทเค็น 10, 436, 972, 685.676390697 Shido Inu: โทเค็น SHIDO ในสัญญา ซึ่งหมายความว่าโทเค็นเหล่านี้ไม่สามารถโอนหรือซื้อขายได้จนกว่าจะตรงตามเงื่อนไขบางประการ ด้วยการล็อคโทเค็น ผู้โจมตีสามารถรักษาเสถียรภาพราคาของโทเค็นได้ในระดับหนึ่ง
ผู้โจมตีเรียกฟังก์ชันการเคลมโทเค็นเพื่อแปลงโทเค็นที่ถูกล็อคเป็นโทเค็น SHIDO 10, 436, 986, 704, 133, 494, 387, 000, 000, 000 ขั้นตอนนี้จะเพิ่มจำนวนตำแหน่งทศนิยมสำหรับโทเค็น SHIDO จาก 9 เป็น 18 ได้อย่างมีประสิทธิภาพ ซึ่งจะเพิ่มปริมาณโทเค็นทั้งหมด

- มีความแตกต่างด้านราคาระหว่างพูล PancakeSwap V2: SHIDO-WBNB และพูล PancakeSwap V2: SHIDO 28 ผ่านกลไกการล็อคและเคลม โดยเฉพาะอย่างยิ่ง ราคาลดลงเนื่องจากอุปทานโทเค็น SHIDO เพิ่มขึ้นในพูล PancakeSwap V2: SHIDO-WBNB ใน PancakeSwap V2: SHIDO 28 พูล ราคาค่อนข้างสูงเนื่องจากอุปทานไม่ได้เพิ่มขึ้น ผู้โจมตีใช้ประโยชน์จากความแตกต่างของราคานี้และแลกเปลี่ยนโทเค็นระหว่างสองพูลโดยโอนโทเค็น SHIDO 10, 436, 986, 704, 133, 494, 387, 000, 000, 000 SHIDO (หลังจุดทศนิยม) ในราคาที่ดีกว่า 18 บิต) ถูกแลกเปลี่ยนเป็น 1,016 WBNB 

- ในท้ายที่สุด ผู้โจมตีได้ชำระคืนเงินกู้แฟลชจำนวน 40 WBNB และได้รับผลกำไรประมาณ 976 WBNB 

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

ในโค้ดตัวอย่างข้างต้น เราได้กำหนดข้อจำกัดบางประการเพื่อจำกัดการใช้ฟังก์ชันแฟลชยืม เช่น จำนวนเงินกู้ขั้นต่ำ จำนวนเงินกู้สูงสุด และเวลากู้ยืม ก่อนดำเนินการสินเชื่อแฟลช เราจะคำนวณและเรียกเก็บค่าธรรมเนียมการจัดการเป็นเปอร์เซ็นต์ก่อน
1.2 การโจมตีด้วยแซนด์วิช
Sandwich Attack เป็นวิธีการโจมตีที่ใช้ประโยชน์จากความไม่สมดุลของข้อมูลในการแลกเปลี่ยนแบบกระจายอำนาจ (DEX)ผู้โจมตีใช้ประโยชน์จากส่วนต่างของราคาเพื่อหากำไรโดยการแทรกธุรกรรมที่เป็นอันตรายระหว่างสองธุรกรรม
CurveFinance การโจมตีแบบแซนด์วิช
เมื่อวันที่ 2 สิงหาคม 2023 ระบบ Hypernative ได้เปิดตัวการโจมตีแบบแซนวิชกับ Curve Finance ผู้โจมตีแทรกธุรกรรมที่เป็นอันตรายระหว่างสองธุรกรรมที่เพิ่มสภาพคล่องและลบสภาพคล่องรับ 36.8K USDT
Attack Tx:
ผู้โจมตีทำการโจมตีแบบแซนวิชได้อย่างไร?
- ผู้โจมตีได้รับสินเชื่อแฟลชจำนวนมากจากแหล่งเงินทุนหลายแห่ง รวมถึง wstETH, WETH และ USDT 

- ผู้โจมตีมอบสภาพคล่อง 155, 000, 000 USDT ให้กับ 3 พูลและได้รับโทเค็น CRV LP 3 อัน 3 CRV คือโทเค็น LP ของ Curve TriPool (กลุ่มการขุด Curve DAI/USDC/USDT) ซึ่งเป็นกลุ่มการขุดที่ถูกโจมตีจากการโจมตี 

- ผู้โจมตีได้ลบสภาพคล่อง DAI และ USDC (เกือบทั้งหมด) ออกจากกลุ่มและทำลายโทเค็น CRV LP 3 รายการ ณ จุดนี้ พูลเกือบทั้งหมดเป็น USDT ซึ่งทำให้ถูกกว่า DAI และ USDC ชั่วคราวมาก 

- เรียกใช้ฟังก์ชัน UnderlyingBurner ดำเนินการสัญญา () เพื่อเพิ่มสภาพคล่องให้กับกลุ่มการขุด Curve DAI/USDC/USDT ต่อไป UnderlyingBurner ถือหุ้น USDT เป็นหลัก และจำนวน DAI:USDC:USDT ที่เพิ่มคือ 100, 000: 100, 000: 227, 079, 039, 776 ส่งผลให้พูลไม่สมดุลมากขึ้น โดยมีจำนวน USDT สัมพันธ์ที่สูงกว่าและค่าที่ต่ำกว่า 

- ผู้โจมตีได้เพิ่มการถือครอง DAI และ USDC ของเขาลงในกลุ่ม Curve DAI/USDC/USDT และเพลิดเพลินกับพรีเมี่ยม ซึ่งหมายถึงการได้รับโทเค็น CRV LP จำนวน 3 อันที่สูงขึ้น 

- ผู้โจมตีทำลายโทเค็น CRV LP 3 อันและถอนสภาพคล่องของ USDT 

- ผู้โจมตีชำระคืนเงินกู้แฟลชและเก็บกำไรไว้ 36.8 K USDT 

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

ในตัวอย่างนี้ เราถือว่ามีสัญญาอัจฉริยะ SandwichAttackPrevention ที่จัดการยอดคงเหลือของผู้ใช้และการดำเนินการธุรกรรม เพื่อป้องกันการโจมตีแบบแซนด์วิช เราแนะนำกลไกการป้องกันหลักสองประการ
ประการแรก ในฟังก์ชัน AllowTransaction มีเพียงเจ้าของสัญญาเท่านั้นที่สามารถตั้งค่า isTransactionAllowed เป็นจริง เพื่อให้ผู้ใช้สามารถทำธุรกรรมได้ สิ่งนี้ทำให้แน่ใจได้ว่าธุรกรรมจะดำเนินการตามลำดับที่ถูกต้อง และไม่อนุญาตให้ผู้โจมตีแทรกธุรกรรมที่เป็นอันตรายระหว่างสองธุรกรรม
ประการที่สอง ในฟังก์ชันดำเนินการธุรกรรม เราจะแนะนำแนวคิดเรื่องความล่าช้าของธุรกรรม ผู้ใช้สามารถดำเนินธุรกรรมได้หลังจากเวลาบล็อคปัจจุบันเกินเวลาหน่วงที่ตั้งไว้เท่านั้น สิ่งนี้ทำให้ผู้ใช้รายอื่นมีเวลาเพียงพอในการทำธุรกรรมและอัปเดตราคา ซึ่งจะช่วยลดโอกาสที่ผู้โจมตีจะใช้ประโยชน์จากความแตกต่างของราคา
1.3 การโจมตีของออราเคิล
Price Oracle คือแหล่งข้อมูลที่ให้ข้อมูลราคาแบบเรียลไทม์สำหรับสกุลเงินดิจิทัล ข้อมูลนี้มีความสำคัญต่อการทำงานที่เหมาะสมของโปรโตคอล DeFi จำนวนมากการโจมตีของ Oracle หมายถึงผู้โจมตีที่เปลี่ยนแปลงข้อมูลที่ได้รับจาก Oracle โดยไม่ตั้งใจ เพื่อให้ได้กำไรจากการทำธุรกรรมตามการควบคุมราคา
เหตุการณ์การโจมตีของออราเคิลของ Rodeo Finance
Rodeo เป็นแพลตฟอร์ม DeFi ที่ให้บริการ price oracle เมื่อวันที่ 11 กรกฎาคม 2023 การปั่นป่วนราคาออราเคิลทำให้แฮกเกอร์ขโมยจากโปรโตคอล Rodeoประมาณ 472 ETH (ประมาณ 888,000 USD)
Attack Tx:
ออราเคิลราคาได้รับการจัดการอย่างไร?
กุญแจสำคัญในการโจมตี Rodeo Finance คือ Rodeo TWAP Oracle ออราเคิลนี้ใช้เพื่อติดตามอัตราส่วนราคาระหว่าง ETH และ unshETH
- การวิเคราะห์ธุรกรรมการโจมตี: กระบวนการโจมตีเริ่มต้นด้วยการที่ผู้โจมตีดำเนินธุรกรรมที่วางแผนไว้อย่างรอบคอบ ผู้โจมตีใช้ประโยชน์จากความเข้าใจอย่างลึกซึ้งเกี่ยวกับสถาปัตยกรรมแพลตฟอร์มและช่องโหว่ที่อาจเกิดขึ้นใน Oracle Time Weighted Average Price (TWAP) เพื่อเริ่มการโจมตี 
- การจัดการออราเคิล TWAP: ผู้โจมตีสามารถบังคับการแลกเปลี่ยน USDC สำหรับ unshETH โดยใช้ฟังก์ชัน Earn ที่เกี่ยวข้องกับที่อยู่นโยบายที่ไม่ได้กำหนดค่า การจัดการนี้จะข้ามการควบคุมการเลื่อนไหลที่เกิดจากออราเคิลราคา unshETH ที่มีข้อบกพร่องได้อย่างมีประสิทธิภาพ โดยพื้นฐานแล้ว ฟังก์ชัน Earn จะถูกบังคับจาก USDC ไปยัง WETH จากนั้นจึงยกเลิก ETH 
- คำนวณราคา TWAP: ราคา TWAP คำนวณโดยการเฉลี่ยราคาของการอัปเดตสี่ครั้งล่าสุด โดยแต่ละรายการอัปเดตห่างกัน 45 นาที อย่างไรก็ตาม ออราเคิลราคาที่มีข้อบกพร่องส่งคืนราคาที่ถูกบิดเบือน ทำให้สัญญาอัจฉริยะพิจารณาว่าตำแหน่งอยู่ในเกณฑ์ดี 
- การเปิดตำแหน่งที่มีเลเวอเรจ: ผู้โจมตีจัดการ TWAP oracle ผ่านการโจมตีแบบแซนด์วิช จากนั้นเปิดตำแหน่งที่มีเลเวอเรจโดยการเรียกใช้ฟังก์ชันรับจากสัญญานักลงทุน พวกเขายืมเงิน USDC มูลค่า 400,000 ดอลลาร์ 

- สลับสินทรัพย์: ผู้โจมตีสลับสินทรัพย์ที่ยืมมากับกลุ่ม CamelotDEX พื้นฐาน ขณะเดียวกันก็ขาย unshETH ที่เตรียมไว้กลับไปที่พูล 
- ข้ามการตรวจสอบการดำเนินการ: สัญญามักจะตรวจสอบว่าการดำเนินงานนั้นถูกต้อง อย่างไรก็ตาม เนื่องจากผู้โจมตีควบคุมกลยุทธ์นี้ พวกเขาจึงข้ามการตรวจสอบนี้ไปได้อย่างง่ายดาย สิ่งนี้ช่วยให้ผู้โจมตีสามารถใช้ประโยชน์จากตำแหน่งที่ถูกบิดเบือนโดยการขาย unshETH ที่เตรียมไว้กลับไปยังกลุ่ม และดึงสภาพคล่องออกจากแพลตฟอร์มได้อย่างมีประสิทธิภาพ 
- การโอนเงินที่ถูกขโมย: ผู้โจมตีย้ายเงินที่ถูกขโมยจาก Arbitrum ไปยัง Ethereum โดยแลกเปลี่ยน 285 ETH เป็น unshETH จากนั้นจึงย้ายเงินเหล่านั้นไปที่ Arbitrum เพื่อดำเนินการโจมตีต่อไป เงินที่ถูกขโมยซึ่งมีมูลค่า 150 ETH จะถูกโอนไปยัง Tornado Cash ซึ่งเป็นบริการผสม Ethereum ที่เน้นความเป็นส่วนตัว ส่วนที่เหลืออีก 371.2 ETH (มูลค่าประมาณ $701,679) ยังคงถือครองโดยที่อยู่ที่ควบคุมโดยผู้โจมตี 
ช่องโหว่ที่สำคัญในการโจมตีนี้คือข้อบกพร่องในการดำเนินการ Rodeo TWAP Oracle ออราเคิลอาศัยทุนสำรองของคู่การซื้อขาย WETH/unshETH ซึ่งมีสภาพคล่องต่ำและมีความผันผวนของราคาสูง
คำนวณราคาตามออราเคิลหลายรายการ
เพื่อให้มั่นใจในความน่าเชื่อถือของการสืบค้นราคา ควรใช้ออราเคิลที่เชื่อถือได้ออราเคิลหลายรายการหรือฟีดราคารวมเพื่อคำนวณราคาแทนที่จะอาศัยอัตราส่วนการจับคู่โทเค็นเพียงอย่างเดียว โดยเฉพาะอย่างยิ่งในสถานการณ์ที่สภาพคล่องของแหล่งรวมการขุดต่ำ แหล่งข้อมูลราคาที่หลากหลายนี้สามารถปรับปรุงความถูกต้องของข้อมูลราคา และทำให้ผู้โจมตีจัดการข้อมูลได้ยากขึ้น
เพื่อให้บรรลุเป้าหมายนี้ ทางออกหนึ่งที่เป็นไปได้คือการใช้ Oracle แบบกระจายอำนาจ เช่น Chainlink Chainlink oracles สามารถรวบรวมข้อมูลจากแหล่งข้อมูลที่หลากหลายและใช้เทคโนโลยีบล็อกเชนเพื่อตรวจสอบและยืนยันความถูกต้องของข้อมูล ด้วยการใช้แหล่งข้อมูลหลายแหล่ง Chainlink จะลดโอกาสที่จะเกิดความล้มเหลวจุดเดียว และทำให้ผู้โจมตีจัดการข้อมูลได้ยากขึ้น
นี่คือโค้ดตัวอย่างที่ใช้สัญญาตัวรวบรวม Chainlink เพื่อรับข้อมูลราคา:

ในโค้ดข้างต้น เราใช้อาร์เรย์ประเภท AggregatorV3Interface เพื่อจัดเก็บอินสแตนซ์ Oracle หลายรายการ Constructor ยอมรับอาร์เรย์ของที่อยู่ Oracle เป็นพารามิเตอร์ และยกตัวอย่างที่อยู่แต่ละรายการเป็นอ็อบเจ็กต์ AggregatorV3Interface
ฟังก์ชัน getLatestPrice ใช้เพื่อรับข้อมูลราคาล่าสุดจากแหล่งข้อมูลหลายแหล่ง โดยวนซ้ำผ่านอาร์เรย์ priceFeeds และรับข้อมูลราคาโดยการเรียกใช้ฟังก์ชัน latestRoundData ของแต่ละ Oracle ข้อมูลราคาทั้งหมดจะถูกจัดเก็บไว้ในอาร์เรย์ประเภท int และส่งคืนไปยังผู้โทร
วิธีนี้ทำให้เราสามารถรับข้อมูลราคาจากแหล่งข้อมูลหลายแหล่ง และรับประกันว่าการสืบค้นราคาสะท้อนราคาสินทรัพย์ได้แม่นยำยิ่งขึ้น
2. ความเสี่ยงจากช่องโหว่ของสัญญาอัจฉริยะ
ช่องโหว่ของสัญญาอัจฉริยะ ช่องโหว่ของสัญญาอัจฉริยะหมายถึงช่องโหว่ด้านความปลอดภัยหรือจุดบกพร่องในโค้ดที่เขียนบน Ethereum หรือแพลตฟอร์มสัญญาอัจฉริยะอื่นๆแกนหลักของ DeFi คือโปรโตคอลทางการเงินที่อิงตามสัญญาอัจฉริยะ ดังนั้นช่องโหว่ของสัญญาอัจฉริยะอาจนำไปสู่การสูญเสียเงินทุนของผู้ใช้ การปั่นป่วนตลาด หรือพฤติกรรมที่เป็นอันตรายอื่น ๆ
การระบุช่องโหว่เหล่านี้เป็นสิ่งสำคัญเราการตรวจสอบครอบคลุมถึงปัญหาที่อาจเกิดขึ้นต่างๆ. ซึ่งรวมถึงแต่ไม่จำกัดเพียงช่องโหว่ในการกลับเข้าใช้งาน ช่องโหว่ในการควบคุมการเข้าถึง ช่องโหว่จำนวนเต็มล้น และช่องโหว่ด้านตรรกะทางธุรกิจ บริการตรวจสอบที่ครอบคลุมของเราได้รับการออกแบบมาเพื่อเพิ่มความปลอดภัยให้กับสัญญาอัจฉริยะของคุณและป้องกันความเสี่ยงเหล่านี้
ข้อมูลต่อไปนี้ใช้ช่องโหว่ในการควบคุมการเข้าถึงเป็นตัวอย่างเพื่อแสดงให้เห็นถึงผลกระทบของช่องโหว่ของสัญญาอัจฉริยะบน DeFi
ช่องโหว่การควบคุมการเข้าถึง LeetSwap
LeetSwap ถูกโจมตีการสูญเสียเกิน 340 ETH. สาเหตุหลักคือมีช่องโหว่ในการควบคุมการเข้าถึงในสัญญาคู่ LeetSwap V2 และการเปิดเผยฟังก์ชัน _transferFeesSupportingTaxTokens เป็นแบบสาธารณะ
Attack Tx:
Vulnerable Contract:
https://basescan.org/address/0x94dac4a3ce998143aa119c05460731da80ad90cf
 ผู้โจมตีเรียกฟังก์ชัน _transferFeesSupportingTaxTokens เพื่อจัดการพูล กระบวนการโจมตีจะเป็นดังนี้:
ผู้โจมตีเรียกฟังก์ชัน _transferFeesSupportingTaxTokens เพื่อจัดการพูล กระบวนการโจมตีจะเป็นดังนี้:
- ใช้ WETH เพื่อแลกเปลี่ยนเป็นโทเค็น A อื่น 
- ฟังก์ชัน _transferFeesSupportingTaxTokens ถูกเรียกเพื่อถ่ายโอนโทเค็น A และฟังก์ชันการซิงค์จะถูกเรียกในเวลาต่อมา ส่งผลให้ราคาของโทเค็น A เพิ่มขึ้น 
- แลกเปลี่ยนโทเค็น A เพื่อรับ WETH เพิ่มเติมและล้างพูล 
สารละลาย
หากต้องการแก้ไขช่องโหว่ในการควบคุมการเข้าถึงของฟังก์ชัน _transferFeesSupportingTaxTokens ควรเปลี่ยนการมองเห็นฟังก์ชันเป็นแบบส่วนตัวหรือภายใน ประกาศฟังก์ชันให้เป็นไพรเวตเพื่อให้เฉพาะฟังก์ชันอื่นๆ ภายในสัญญาเท่านั้นที่สามารถเรียกใช้ได้ ประกาศฟังก์ชันเป็นแบบภายในเพื่อให้สามารถเข้าถึงได้โดยสัญญาที่สืบทอดสัญญานี้ เมื่อสัญญาอื่นสืบทอดสัญญาคู่ LeetSwap V2 สัญญาเหล่านั้นสามารถเรียกใช้ฟังก์ชัน _transferFeesSupportingTaxTokens ผ่านซูเปอร์คีย์เวิร์ดได้ ผู้ใช้ภายนอกไม่สามารถเข้าถึงฟังก์ชันนี้ได้โดยตรง ซึ่งช่วยเพิ่มความปลอดภัยของสัญญา
มีความจำเป็นต้องตัดสินใจว่าจะเปลี่ยนการมองเห็นของฟังก์ชันอย่างไรตามตรรกะของสัญญาและข้อกำหนดเฉพาะ เพื่อให้แน่ใจว่าการทำงานปกติของสัญญาจะไม่ได้รับผลกระทบในขณะที่ปรับปรุงความปลอดภัย
การตรวจสอบสัญญาอัจฉริยะเป็นขั้นตอนสำคัญในการระบุและป้องกันช่องโหว่ มีอยู่Salus,เรามีทีมนักพัฒนาสัญญาอัจฉริยะที่มีประสบการณ์และผู้เชี่ยวชาญด้านการตรวจสอบซึ่งสามารถช่วยคุณเพิ่มความปลอดภัยให้กับสัญญาของคุณได้ความเชี่ยวชาญของเราช่วยให้เราระบุจุดอ่อนที่อาจเกิดขึ้นและรับประกันความปลอดภัยและความน่าเชื่อถือของโครงการของคุณ
3. ความเสี่ยงในการดำเนินงานของผู้ใช้
ในด้าน DeFi ความเสี่ยงในการปฏิบัติงานของผู้ใช้หมายถึงความเสี่ยงในการสูญเสียเงินทุนที่เกิดจากข้อผิดพลาดในการดำเนินงานของผู้ใช้เอง การขาดความตระหนักรู้ด้านความปลอดภัย หรือพฤติกรรมที่ไม่รอบคอบเมื่อใช้แพลตฟอร์ม DeFiต่อไปนี้คือความเสี่ยงในการดำเนินการของผู้ใช้ทั่วไป:
- การคลิกลิงก์ที่เป็นอันตราย: ผู้ใช้อาจคลิกลิงก์ที่เป็นอันตรายโดยไม่ตั้งใจ ทำให้เกิดมัลแวร์หรือไวรัสในอุปกรณ์ของตน ซึ่งผู้โจมตีสามารถใช้เพื่อเข้าถึงข้อมูลที่ละเอียดอ่อนของผู้ใช้หรือควบคุมกระเป๋าเงินของตนได้ 
- ใช้กระเป๋าเงินที่ไม่ปลอดภัย: หากผู้ใช้เลือกใช้แอปพลิเคชันกระเป๋าเงินที่ไม่ปลอดภัยหรือกระเป๋าเงินฮาร์ดแวร์ ผู้โจมตีอาจใช้ประโยชน์จากช่องโหว่เหล่านี้เพื่อขโมยคีย์ส่วนตัวของผู้ใช้หรือสิทธิ์ในการปฏิบัติงาน 
- การรั่วไหลของคีย์ส่วนตัว: หากผู้ใช้รั่วไหลของคีย์ส่วนตัวในสภาพแวดล้อมที่ไม่มีการเข้ารหัสหรือเก็บคีย์ส่วนตัวไว้ในที่ที่ไม่ปลอดภัย ผู้โจมตีอาจได้รับคีย์ส่วนตัวของผู้ใช้และควบคุมเงินทุนของพวกเขาได้อย่างง่ายดาย 
- การดำเนินการซื้อขายที่ไม่รอบคอบ: หากผู้ใช้ไม่ตรวจสอบรายละเอียดธุรกรรมอย่างรอบคอบ (เช่น ที่อยู่เป้าหมาย จำนวนเงินธุรกรรม ฯลฯ) เมื่อทำธุรกรรม เงินอาจถูกส่งไปยังที่อยู่ผิดหรือจำนวนเงินไม่ถูกต้อง 
เพื่อลดความเสี่ยงในการดำเนินงานของผู้ใช้ ต่อไปนี้คือคำแนะนำบางส่วน:
- เพิ่มการรับรู้ด้านความปลอดภัย: ทำความเข้าใจกลวิธีฟิชชิ่ง มัลแวร์ และการหลอกลวงทั่วไป และเรียนรู้วิธีจดจำและหลีกเลี่ยง ระมัดระวังและตรวจสอบลิงก์และแอปพลิเคชันที่เกี่ยวข้องกับ DeFi อย่างรอบคอบ 
- ใช้กระเป๋าเงินที่ปลอดภัย: เลือกใช้แอพกระเป๋าเงินหรือกระเป๋าเงินฮาร์ดแวร์ที่ได้รับการตรวจสอบความปลอดภัยและมีชื่อเสียงที่ดี ตรวจสอบให้แน่ใจว่าแอปพลิเคชันกระเป๋าเงินและเฟิร์มแวร์ของคุณทันสมัยและปฏิบัติตามแนวทางปฏิบัติด้านความปลอดภัยที่ดีที่สุด 
- สำรองและปกป้องคีย์ส่วนตัว: จัดเก็บคีย์ส่วนตัวไว้ในที่ปลอดภัยและเข้ารหัสด้วยรหัสผ่านที่รัดกุม สำรองข้อมูลคีย์ส่วนตัวของคุณเป็นประจำและจัดเก็บไว้ในตำแหน่งออฟไลน์ที่ปลอดภัยเพื่อป้องกันข้อมูลสูญหายโดยไม่ตั้งใจ 
- ตรวจสอบรายละเอียดธุรกรรมอีกครั้ง: ก่อนดำเนินการธุรกรรมใดๆ ให้ตรวจสอบรายละเอียดธุรกรรมอีกครั้งเพื่อให้แน่ใจว่าที่อยู่ปลายทาง จำนวนเงินของธุรกรรม ฯลฯ ถูกต้อง การตรวจสอบซ้ำสามารถหลีกเลี่ยงการสูญเสียเงินทุนเนื่องจากความประมาทเลินเล่อ 
4. สรุป
โปรดทราบว่าวิธีแก้ปัญหาสำหรับการโจมตีและช่องโหว่ข้างต้นแต่ละรายการเป็นเพียงตัวอย่างง่ายๆ และไม่ได้ป้องกันการโจมตีที่เกี่ยวข้องหรือแก้ไขช่องโหว่ที่เกี่ยวข้องอย่างสมบูรณ์ หากสนใจ Smart Contract Auditing เชิญครับติดต่อเราเราจะทำงานร่วมกับคุณเพื่อให้บริการตรวจสอบอย่างมืออาชีพเพื่อให้แน่ใจว่าสัญญาของคุณปลอดภัยและเชื่อถือได้ เรามุ่งมั่นที่จะให้บริการคุณภาพสูงและการสนับสนุนทางเทคนิคที่ครอบคลุมแก่คุณเพื่อให้แน่ใจว่าสัญญาอัจฉริยะของคุณทำงานในสภาพแวดล้อมที่ปลอดภัยและเชื่อถือได้


