จุดบกพร่องใน Gains Network fork ช่วยให้เทรดเดอร์ได้กำไร 900% ในทุกการซื้อขาย: รายงาน

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


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

จากการประกาศของ Zellic ผู้พัฒนา Gambit Trade, Holdstation Exchange และ Krav Trade ได้รับทราบจากทีมงานของ Zellic ถึงช่องโหว่ในการแยกกำไรตามลำดับ ทีมเหล่านี้ได้ดำเนินการตามขั้นตอนเพื่อแก้ไขปัญหาและให้แน่ใจว่าโปรโตคอลของพวกเขาปราศจากข้อบกพร่องเหล่านี้ อย่างไรก็ตาม Zellic เตือนว่า Gains forks เวอร์ชันอื่นๆ อาจยังมีความเสี่ยงอยู่

จากเว็บไซต์ของตัวเอง Gains Network เป็นตัวแทนของระบบการเงินแบบกระจายอำนาจ (DeFi) ที่นำเสนอผลิตภัณฑ์ที่หลากหลายบน Polygon และ Arbitrum ชื่อที่กำหนดสำหรับแอปพลิเคชันการซื้อขายแบบเลเวอเรจคือ “gTrade” นับตั้งแต่เปิดตัวในเดือนพฤษภาคม 2566 ก็มีปริมาณการซื้อขายอนุพันธ์มากกว่า 25 พันล้านดอลลาร์ ตามรายงานของ DefiLlama ซึ่งเป็นแพลตฟอร์มการวิเคราะห์บล็อคเชน

จุดบกพร่องใน Gains Network fork ช่วยให้เทรดเดอร์ได้กำไร 900% ในทุกการซื้อขาย: รายงาน

Zellic ยืนยันว่าแอปพลิเคชันการซื้อขาย Decentralized Finance (DeFi) ที่ใช้กันอย่างแพร่หลายจำนวนมากนั้นสร้างขึ้นจากฐานโค้ดพื้นฐานของ Gains Network หนึ่งในนั้นคือ Gambit Trade และ Holdstation รวมถึงโปรโตคอลอื่นๆ อีกมากมาย ในขณะที่ตรวจสอบทางแยกที่เฉพาะเจาะจง พวกเขาระบุช่องโหว่ แต่เลือกที่จะไม่เปิดเผยว่ามันอยู่ในทางแยกใด

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

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

ผู้ใช้สามารถตั้งค่าคำสั่งจำกัดและหยุดจำกัดได้เหมือนกับการแลกเปลี่ยนแบบดั้งเดิม แต่ไม่ต้องอาศัยตัวกลางจากส่วนกลางในการดำเนินการตามคำสั่ง

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

Bug ใน Gains fork อนุญาตให้มีกำไร 900% จากคำสั่งซื้อ

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

ในฐานะนักวิเคราะห์ทางการเงิน ฉันจะใช้ถ้อยคำใหม่ดังนี้: เมื่อราคาของ Bitcoin (BTC) อยู่ที่ $63,000 และคุณตั้งค่าสถานะเปิดของคุณที่ $62,000 โดยมีจุดหยุดขาดทุนที่ $64,000 หากราคาลดลงเหลือ $62,000 คำสั่งซื้อของคุณจะถูกเติมเต็ม . อย่างไรก็ตาม เนื่องจากราคาอยู่ต่ำกว่าจุดหยุดขาดทุนที่คุณกำหนดไว้ การออกอัตโนมัติจึงจะเริ่มขึ้น

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

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

จุดบกพร่องใน Gains Network fork ช่วยให้เทรดเดอร์ได้กำไร 900% ในทุกการซื้อขาย: รายงาน

อย่างไรก็ตาม เจ้าหน้าที่สอบสวนพบว่าสามารถข้ามการตรวจสอบนี้ได้ในบางกรณี

เมื่อผู้ใช้เริ่มต้นคำสั่งซื้อเป็นครั้งแรก ผู้ใช้จะระบุราคาเริ่มต้นที่ต้องการ ซึ่งจะถูกบันทึกไว้ในตัวแปร “openPrice” ในขั้นตอนนี้จะมีการตรวจสอบ อย่างไรก็ตาม ฟังก์ชันที่รับผิดชอบในการประมวลผลคำสั่งซื้อจะเปลี่ยนแปลงตัวแปร “openPrice” ให้เท่ากับ “a.Price” บวกกับผลกระทบด้านราคาจากการซื้อขายใหม่ที่กำลังเริ่มต้น พูดง่ายๆ ก็คือ เมื่อผู้ใช้เริ่มสั่งซื้อ ผู้ใช้จะกำหนดราคาเริ่มต้นซึ่งจะถูกบันทึกไว้ จากนั้นจะมีการดำเนินการตรวจสอบ อย่างไรก็ตาม เมื่อมีการดำเนินการคำสั่งซื้อ ราคาเริ่มต้นจะถูกแทนที่ด้วยราคาตลาดปัจจุบันบวกกับต้นทุนเพิ่มเติมใดๆ เนื่องจากขนาดคำสั่งซื้อ (ผลกระทบต่อราคา)

หากผู้ใช้ป้อนราคาเปิดที่สูงผิดปกติ ระบบจะช่วยให้ผู้ดำเนินการสามารถประมวลผลคำสั่งซื้อได้โดยไม่ต้องตรวจสอบราคา ส่งผลให้กรอกคำสั่งซื้อในราคาเปิดที่ต่ำกว่า

ตัวอย่างเช่น Zellic ครุ่นคิดเกี่ยวกับสถานการณ์สมมติที่เกี่ยวข้องกับฝ่ายตรงข้ามที่ตั้งใจจะซื้อโทเค็นราคาหนึ่งพันล้านดอลลาร์ ($100000e10) และตั้งค่าจุดหยุดขาดทุนที่เกือบจะมีมูลค่าเท่ากัน โดยเฉพาะที่ $999.999999999998 ล้านล้าน หลังจากวางคำสั่งซื้อนี้ ฝ่ายตรงข้ามจะดำเนินการธุรกรรมของตนเอง ส่งผลให้เกิดการเปลี่ยนแปลงของ openPrice เพื่อให้สะท้อนถึงราคาใหม่ตามการปรับราคาของการซื้อขาย

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

การค้าขายจะส่งผลให้ผู้โจมตีได้กำไร 900% Zellic กล่าว

จุดบกพร่องใน Gains Network fork ช่วยให้เทรดเดอร์ได้กำไร 900% ในทุกการซื้อขาย: รายงาน

ข้อบกพร่องแรกที่เราค้นพบไม่ได้เป็นส่วนหนึ่งของ Gains Network ดั้งเดิมเมื่อทีม Zellic ระบุได้ แต่มันกลับกลายเป็นรูปแบบทางแยกที่เรากำลังตรวจสอบ อย่างไรก็ตาม ในระหว่างการตรวจสอบเรื่องนี้ เราพบปัญหาที่สองที่มีอยู่ใน Gains เวอร์ชันก่อนหน้า

ข้อผิดพลาดที่สองทำให้ได้กำไร 900% จากคำสั่งซื้อขาย

จุดบกพร่องประการที่สองทำให้เทรดเดอร์สามารถทำกำไร 900% จากคำสั่งขายโดยไม่คำนึงถึงการเคลื่อนไหวของราคา

ใน Gains fork เมื่อการซื้อขายสิ้นสุดลง แพลตฟอร์มจะแปลงระดับ Stop-Loss หรือ Take-Profit ที่ผู้ใช้ระบุเป็นตัวแปรชื่อ “int” จากนั้นจึงใช้ตัวแปรนี้เพื่อกำหนดกำไรเป็นเปอร์เซ็นต์ อย่างไรก็ตาม หากผู้ใช้ตั้งค่า Stop-Loss หรือ Take-Profit เท่ากับ 2^256-1 การคำนวณในภายหลังจะส่งผลให้ค่า “int” เป็นลบ

ใน Ethereum ค่าสูงสุดสำหรับตัวเลขบวกจะแสดงด้วย 2^256-1 เมื่อพยายามเพิ่มค่าที่สูงกว่าขีดจำกัดนี้ให้กับผลรวมในภาษาโปรแกรม Solidity การคำนวณจะส่งผลให้เกิด “โอเวอร์โฟลว์” ทำให้ต้องรีสตาร์ทจากศูนย์แทน ค่านี้เรียกอีกอย่างว่า “type(uint256).max”

จากการค้นพบของ Zellic หากผู้โจมตีใช้เลเวอเรจมากกว่า 9 เท่าของการลงทุนเริ่มแรก พวกเขามีโอกาสที่จะได้รับผลตอบแทนมากกว่า 900%

“ลองพิจารณาคำสั่งขาย โดยมีราคาปัจจุบันเป็นประเภท (uint256).max ค่าผลลัพธ์ของ diff จะเป็น openPrice + 1 (int(type(uint256).max) = -1 ) และด้วยเหตุนี้ เปอร์เซ็นต์กำไรจะเกือบเท่ากับ 100 * เลเวอเรจ ดังนั้นหากเลเวอเรจมากกว่า 9 ฟังก์ชันจะคืนกำไรเป็น 900%”

ในฐานะนักวิจัยที่กำลังศึกษาข้อสัญญาในการซื้อขายทางการเงิน ฉันพบข้อกำหนดที่มุ่งป้องกันไม่ให้การเข้าสู่ระดับ 2^256-1 เป็นระดับทำกำไร เช็คนี้ได้รับการออกแบบให้ดำเนินการเมื่อมีการวางคำสั่งซื้อครั้งแรก อย่างไรก็ตาม ฉันค้นพบช่องโหว่: หากผู้ใช้เปลี่ยนการตั้งค่าการทำกำไรหลังจากเปิดคำสั่งซื้อแล้ว พวกเขาสามารถข้ามข้อจำกัดนี้และป้อน 2^256-1 เป็นระดับกำไรที่ต้องการได้ การกำกับดูแลนี้ทำให้ผู้ใช้สามารถได้รับผลกำไรอัตโนมัติประมาณ 900% ในแต่ละครั้งที่ซื้อขาย

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

Zellic ถูกกล่าวหาว่าแชร์ข้อมูลเกี่ยวกับช่องโหว่ด้านความปลอดภัยที่ระบุทั้งสองรายการกับทางแยกที่กล่าวถึงทั้งหมด และติดต่อไปยัง Crypto Security Alliance เพื่อสำรวจโปรโตคอลอื่น ๆ ที่อาจได้รับผลกระทบ อย่างไรก็ตาม มีการออกคำเตือนเนื่องจาก Gains fork บางเวอร์ชันอาจยังคงมีข้อบกพร่องเหล่านี้ อาจทำให้เงินทุนของผู้ใช้เสี่ยงต่อการระบายออก

ในฐานะนักลงทุน crypto ฉันติดต่อ CryptoMoon เพื่อสอบถามเกี่ยวกับความพยายามของพวกเขาในการติดต่อ Gains Network, Gambit Trade, Holdstation Exchange และ Krav Trade เพื่อขอความคิดเห็น อย่างไรก็ตาม ในขณะที่เผยแพร่บทความนี้ ฉันไม่ได้รับการตอบกลับใดๆ จากการแลกเปลี่ยนเหล่านี้

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

Sorry. No data so far.

2024-05-09 23:40