การพัฒนาความปลอดภัยของ BNB Chain ต้องรวบรวมเคล็ดลับเชิงปฏิบัติ 10 ข้อนี้ไว้

avatar
CertiK
1ปี ที่แล้ว
ประมาณ 15308คำ,ใช้เวลาอ่านบทความฉบับเต็มประมาณ 20นาที
ในบทความนี้ เรามีเคล็ดลับด้านความปลอดภัยที่เป็นประโยชน์ 10 ประการ เพื่อให้นักพัฒนาสามารถลดความเสี่ยงและพัฒนาสัญญาอัจฉริยะที่ปลอดภัยยิ่งขึ้นบน BNB Chain

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

ในบทความนี้ เรามีเคล็ดลับด้านความปลอดภัยที่เป็นประโยชน์ 10 ประการเพื่อให้นักพัฒนาสามารถลดความเสี่ยงและพัฒนาสัญญาอัจฉริยะที่ปลอดภัยยิ่งขึ้นบน BNB Chain

การพัฒนาความปลอดภัยของ BNB Chain ต้องรวบรวมเคล็ดลับเชิงปฏิบัติ 10 ข้อนี้ไว้

01 

/ คำนิยาม /

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

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

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

เพื่อป้องกันการโจมตีซ้ำ นักพัฒนาจะต้องออกแบบและใช้โค้ดสัญญาอัจฉริยะอย่างรอบคอบ และปฏิบัติตามการตรวจสอบลายเซ็นตลอดจนมาตรฐานความปลอดภัยที่ดีที่สุดในอุตสาหกรรม

02 

/ การวิเคราะห์กรณี /

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

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

03 

/ วิธีการปรับปรุง /

เพิ่ม nonce ให้กับลายเซ็นหรือใช้ตัวแปรการแมปเพื่อบันทึกลายเซ็น แนวทางแก้ไขเฉพาะจะแตกต่างกันไปตามการออกแบบโครงการ

การพัฒนาความปลอดภัยของ BNB Chain ต้องรวบรวมเคล็ดลับเชิงปฏิบัติ 10 ข้อนี้ไว้

01 

/ คำนิยาม /

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

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

02 

/ การวิเคราะห์กรณี /

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

การพัฒนาความปลอดภัยของ BNB Chain ต้องรวบรวมเคล็ดลับเชิงปฏิบัติ 10 ข้อนี้ไว้

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

การพัฒนาความปลอดภัยของ BNB Chain ต้องรวบรวมเคล็ดลับเชิงปฏิบัติ 10 ข้อนี้ไว้

03 

/ วิธีการปรับปรุง /

การอัปเดตสถานะจะดำเนินการก่อนการโทรภายนอก

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

การปฏิบัติตามรูปแบบนี้ นักพัฒนาสามารถมั่นใจได้ว่าสัญญาของตนมีความปลอดภัยมากขึ้นและเสี่ยงน้อยลงจากการโจมตีซ้ำ


การแก้ไขที่เป็นไปได้อีกประการหนึ่งคือการใช้ตัวดัดแปลงเพื่อจำกัดการเรียกใช้ฟังก์ชันเดียวกันหลายครั้ง เหมือนกับ ReentrancyGuard ของ OpenZeppelin

การพัฒนาความปลอดภัยของ BNB Chain ต้องรวบรวมเคล็ดลับเชิงปฏิบัติ 10 ข้อนี้ไว้

01 

/ คำนิยาม /

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

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

02 

/ การวิเคราะห์กรณี /

ด้านล่างนี้คือข้อมูลโค้ดที่เสี่ยงต่อการถูกปรับแต่งโดย Oracle

การพัฒนาความปลอดภัยของ BNB Chain ต้องรวบรวมเคล็ดลับเชิงปฏิบัติ 10 ข้อนี้ไว้

สัญญานี้อนุญาตให้ผู้ใช้สลับ Token A สำหรับ Token B โดยใช้สัญญาการกำหนดเส้นทาง แต่ต้องอาศัย oracle ภายนอก (สัญญาคู่ Uniswap) เพื่อรับเงินสำรองของ Token A และ Token B เพื่อคำนวณราคา ผู้โจมตีสามารถจัดการเงินสำรองของสัญญา Uniswap Pair รวมถึงฟังก์ชัน getAmountOut ได้ ส่งผลให้การแลกเปลี่ยนดำเนินการในราคาที่ไม่สมเหตุสมผลในที่สุด

03 

/ วิธีการปรับปรุง /

เพื่อป้องกันการโจมตีนี้ นักพัฒนาควรใช้เครือข่าย oracle แบบกระจายอำนาจที่รวบรวมราคาเฉลี่ยแบบถ่วงน้ำหนักตามปริมาณ (VWAP) หรือราคาเฉลี่ยแบบถ่วงเวลา (TWAP) แบบออนไลน์สำหรับการแลกเปลี่ยนแบบรวมศูนย์และแบบกระจายอำนาจ ด้วยวิธีนี้ ข้อมูลจะถูกรวบรวมจากหลายแหล่งและในระยะเวลาอันกว้างใหญ่ ทำให้โค้ดเสี่ยงต่อการถูกโจมตีและจัดการน้อยลง เป็นสิ่งสำคัญสำหรับนักพัฒนาที่จะต้องสามารถลบเวกเตอร์การโจมตีใดๆ เพื่อจัดการกับ Oracle ในสัญญาอัจฉริยะ เพื่อป้องกันช่องโหว่ที่อาจเกิดขึ้น

การพัฒนาความปลอดภัยของ BNB Chain ต้องรวบรวมเคล็ดลับเชิงปฏิบัติ 10 ข้อนี้ไว้

01 

/ คำนิยาม /

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

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

02 

/ การวิเคราะห์กรณี /

ฟังก์ชัน setAdmin() ช่วยให้ทุกคนสามารถตั้งค่าที่อยู่ใดๆ ให้เป็นผู้ดูแลสัญญาได้ ขึ้นอยู่กับสิทธิ์ที่ได้รับภายในสัญญาในการจัดการที่อยู่ อาจส่งผลให้นักพัฒนาสูญเสียการควบคุมสัญญาหรือแม้แต่สูญเสียเงินทุน

การพัฒนาความปลอดภัยของ BNB Chain ต้องรวบรวมเคล็ดลับเชิงปฏิบัติ 10 ข้อนี้ไว้

ฟังก์ชันสัญญาบางอย่างภายในอาจอนุญาตให้ผู้ใช้บางรายตั้งค่าเป็นผู้ดูแลระบบได้โดยการตั้งค่าการเปิดเผยฟังก์ชันเป็นแบบภายใน

การพัฒนาความปลอดภัยของ BNB Chain ต้องรวบรวมเคล็ดลับเชิงปฏิบัติ 10 ข้อนี้ไว้

03 

/ วิธีการปรับปรุง /

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

ตัวอย่างเช่น สัญญาอาจมีฟังก์ชันที่มีเพียงเจ้าของสัญญาเท่านั้นที่สามารถเรียกใช้ได้ หรือตัวแปรที่สามารถเข้าถึงได้โดยชุดที่อยู่บางชุดเท่านั้น


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

การพัฒนาความปลอดภัยของ BNB Chain ต้องรวบรวมเคล็ดลับเชิงปฏิบัติ 10 ข้อนี้ไว้

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

การใช้คุณสมบัติเหล่านี้อย่างเหมาะสม นักพัฒนาสามารถเพิ่มความปลอดภัยและความน่าเชื่อถือของสัญญา ลดความเสี่ยงของการเข้าถึงโดยไม่ได้รับอนุญาต และปรับปรุงคุณภาพโดยรวมและการบำรุงรักษาโค้ดของพวกเขา

การพัฒนาความปลอดภัยของ BNB Chain ต้องรวบรวมเคล็ดลับเชิงปฏิบัติ 10 ข้อนี้ไว้

01 

/ คำนิยาม /

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

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

02 

/ วิธีการปรับปรุง /

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

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

การพัฒนาความปลอดภัยของ BNB Chain ต้องรวบรวมเคล็ดลับเชิงปฏิบัติ 10 ข้อนี้ไว้

สุดท้ายนี้ จะต้องหลีกเลี่ยงการใช้ selfdestruct() หรือทำ delegatecall()/call() กับสัญญาที่ไม่น่าเชื่อถือ ผู้โจมตีสามารถใช้ประโยชน์จากฟังก์ชันเหล่านี้เพื่อล้มล้างการใช้ตรรกะหรือดำเนินการตรรกะแบบกำหนดเอง เพื่อป้องกันสิ่งนี้ การตรวจสอบอินพุตของผู้ใช้จึงเป็นสิ่งสำคัญ! ไม่อนุญาตให้ทำสัญญาดำเนินการ delegatecall()/call() กับสัญญาที่ไม่น่าเชื่อถือ นอกจากนี้ ไม่แนะนำให้ใช้ delegatecall() ในสัญญาแบบลอจิก เนื่องจากการจัดการเลย์เอาต์พื้นที่เก็บข้อมูลระหว่างหลายสัญญาอาจเป็นเรื่องยาก การปฏิบัติตามแนวทางปฏิบัติเหล่านี้ นักพัฒนาสามารถลดจุดบกพร่องและความเสี่ยงในการอัปเกรดสัญญาได้

การพัฒนาความปลอดภัยของ BNB Chain ต้องรวบรวมเคล็ดลับเชิงปฏิบัติ 10 ข้อนี้ไว้

01 

/ คำนิยาม /

Front-Running เป็นปัญหาที่ดื้อรั้นและไม่ง่ายในการแก้ปัญหา ผู้ใช้สามารถใช้ประโยชน์จากความล่าช้าระหว่างการส่งธุรกรรมและการยืนยันธุรกรรมบนบล็อคเชนเพื่อหากำไร ความล่าช้านี้เกิดจาก mempool

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

02 

/ การวิเคราะห์กรณี /

ด้านล่างนี้เป็นตัวอย่างของคุณลักษณะการเสนอราคาประมูลที่มีแนวโน้มที่จะดำเนินการล่วงหน้า

การพัฒนาความปลอดภัยของ BNB Chain ต้องรวบรวมเคล็ดลับเชิงปฏิบัติ 10 ข้อนี้ไว้

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

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

การพัฒนาความปลอดภัยของ BNB Chain ต้องรวบรวมเคล็ดลับเชิงปฏิบัติ 10 ข้อนี้ไว้

03 

/ วิธีการปรับปรุง /

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

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

การพัฒนาความปลอดภัยของ BNB Chain ต้องรวบรวมเคล็ดลับเชิงปฏิบัติ 10 ข้อนี้ไว้

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

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

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

การพัฒนาความปลอดภัยของ BNB Chain ต้องรวบรวมเคล็ดลับเชิงปฏิบัติ 10 ข้อนี้ไว้

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

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

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

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

การพัฒนาความปลอดภัยของ BNB Chain ต้องรวบรวมเคล็ดลับเชิงปฏิบัติ 10 ข้อนี้ไว้

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

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

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

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

การพัฒนาความปลอดภัยของ BNB Chain ต้องรวบรวมเคล็ดลับเชิงปฏิบัติ 10 ข้อนี้ไว้

การให้ความรู้ด้านความปลอดภัยสำหรับผู้ใช้ Web3 เป็นขั้นตอนสำคัญในการสร้างระบบนิเวศด้านความปลอดภัย การดูแลลูกค้าให้ปลอดภัยช่วยรักษาแพลตฟอร์มให้ปลอดภัย ผู้ใช้ควรได้รับความรู้เกี่ยวกับแนวทางปฏิบัติที่ดีที่สุดในการปกป้องบัญชีและข้อมูลที่ละเอียดอ่อนของตน

ส่วนที่สำคัญที่สุดอย่างหนึ่งคือการเรียนรู้วิธีหลีกเลี่ยงการหลอกลวงแบบฟิชชิ่ง

นักหลอกลวงแบบฟิชชิ่งจะหลอกลวงผู้ใช้โดยอ้างว่าเป็นเว็บไซต์หรือบริการที่ถูกต้องตามกฎหมาย ทำให้ผู้ใช้เปิดเผยคีย์ส่วนตัวหรือรหัสผ่าน CertiK แนะนำให้ผู้ใช้ตรวจสอบ URL ของเว็บไซต์ที่ใช้ในเมล แหล่งที่มา ฯลฯ อีกครั้งทุกครั้งเมื่อได้รับข้อมูลใดๆ และอย่าป้อนคีย์ส่วนตัวหรือรหัสผ่านบนเว็บไซต์ที่ไม่น่าเชื่อถือ

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

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

สรุป

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

บทความต้นฉบับ, ผู้เขียน:CertiK。พิมพ์ซ้ำ/ความร่วมมือด้านเนื้อหา/ค้นหารายงาน กรุณาติดต่อ report@odaily.email;การละเมิดการพิมพ์ซ้ำกฎหมายต้องถูกตรวจสอบ

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

การอ่านแนะนำ
ตัวเลือกของบรรณาธิการ