BTC
ETH
HTX
SOL
BNB
ดูตลาด
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

a16z: แนวทางการรักษาความปลอดภัยของสัญญาอัจฉริยะสำหรับโครงการ Web3

Katie 辜
Odaily资深作者
2022-06-08 03:38
บทความนี้มีประมาณ 3302 คำ การอ่านทั้งหมดใช้เวลาประมาณ 5 นาที
การทำ 8 จุดนี้ให้ดีสามารถเพิ่มการป้องกันการโจมตีของแฮ็กเกอร์ได้สูงสุด
สรุปโดย AI
ขยาย
การทำ 8 จุดนี้ให้ดีสามารถเพิ่มการป้องกันการโจมตีของแฮ็กเกอร์ได้สูงสุด

บทความนี้มาจาก a16zcryptoบทความนี้มาจาก

ผู้เขียนต้นฉบับ: Andy Beal, Nassim Eddequouaq, Riyaz Faizullabhoy และ Christian Seifert เรียบเรียงโดย Katie Koo นักแปล Odaily

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

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

  1. การพัฒนาซอฟต์แวร์ที่ปลอดภัยประกอบด้วยห้าขั้นตอนต่อไปนี้:

  2. การออกแบบ: ผู้พัฒนาอธิบายถึงฟังก์ชันและการทำงานที่จำเป็นของระบบ รวมถึงเกณฑ์มาตรฐานที่สำคัญและคุณสมบัติคงที่

  3. การพัฒนา: นักพัฒนาเขียนรหัสระบบ

  4. การทดสอบและตรวจสอบ: นักพัฒนารวบรวมโมดูลทั้งหมดในสภาพแวดล้อมการทดสอบและประเมินความถูกต้อง ขนาด และปัจจัยอื่นๆ

  5. การปรับใช้: นักพัฒนานำระบบไปสู่การผลิต

การบำรุงรักษา: นักพัฒนาจะประเมินและแก้ไขระบบเพื่อให้แน่ใจว่าทำงานได้ตามที่ต้องการ

แผนภาพด้านล่างแมปปัจจัยด้านความปลอดภัยที่ต้องพิจารณาในขั้นตอนข้างต้น

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

ชื่อเรื่องรอง

  • 1. ข้อพิจารณาด้านความปลอดภัยของสัญญาอัจฉริยะในขั้นตอนการออกแบบ - พิจารณาการสร้างแบบจำลองภัยคุกคามและการออกแบบความปลอดภัย

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

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

ชื่อเรื่องรอง

  • 2. ข้อควรพิจารณาด้านความปลอดภัยในระยะการพัฒนา - ข้อพิจารณาด้านการบริหารและการควบคุมการเข้าถึงอะไร: ใช้การควบคุมการเข้าถึงที่จำกัดความสามารถของบัญชีพิเศษและการเรียกสัญญาอัจฉริยะไปยังฟังก์ชันพิเศษที่ดำเนินการด้านการบริหาร เช่น การอัปเกรดสัญญาและการตั้งค่าพารามิเตอร์พิเศษ

  • ปฏิบัติตาม "หลักการของสิทธิ์น้อยที่สุด" - ผู้เข้าร่วมแต่ละคนควรมีสิทธิ์เข้าถึงขั้นต่ำเท่านั้น

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

ชื่อเรื่องรอง

  • 3. พิจารณาเทมเพลตและการผสานรวมที่ใช้ซ้ำได้ ผ่านการทดสอบการต่อสู้

  • อะไร: ใช้ประโยชน์จากมาตรฐานสัญญาอัจฉริยะที่มีอยู่ (เช่น OpenZeppelin Contracts) หากเป็นไปได้ และประเมินสมมติฐานด้านความปลอดภัยที่อาจจำเป็นสำหรับการรวมโปรโตคอลกับโปรโตคอลที่มีอยู่

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

ชื่อเรื่องรอง

  • 4. ข้อควรพิจารณาด้านความปลอดภัยระหว่างขั้นตอนการทดสอบและทบทวน - พิจารณาการทดสอบและเอกสารประกอบ

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

  • แนวทาง: ใช้เฟรมเวิร์กการทดสอบและตัวตรวจสอบความปลอดภัยที่เป็นที่รู้จัก เช่น Hardhat, Mythril, Slither, Truffle เป็นต้น ซึ่งมีเทคนิคการทดสอบที่แตกต่างกัน เช่น fuzzing การตรวจสอบคุณสมบัติ และแม้แต่การตรวจสอบอย่างเป็นทางการ ใช้ความคิดเห็นของ NatSpec เพื่อบันทึกโค้ดของคุณอย่างละเอียด โดยระบุผลข้างเคียงที่คาดหวัง พารามิเตอร์ และค่าส่งคืน สร้างเอกสารตามเวลาจริงโดยใช้เครื่องมือสร้างเอกสารรวมถึงคำแนะนำการออกแบบระดับสูง

ชื่อเรื่องรอง

  • 5. พิจารณาการทบทวนภายในและการตรวจสอบความปลอดภัย

  • อะไร: ใช้เวลาในการเปิดเผยช่องโหว่ผ่านการตรวจสอบโค้ดภายในและภายนอกเหตุผล: การเปลี่ยนจากการพัฒนาฟีเจอร์เป็นการเน้นประเด็นด้านความปลอดภัยช่วยให้นักพัฒนามีเวลาในการตรวจหาปัญหาที่อาจคลุมเครือ

  • การตรวจสอบภายนอกมีประโยชน์อย่างยิ่งที่นี่ เนื่องจากสามารถนำเสนอมุมมองและความเชี่ยวชาญภายนอกที่ทีมพัฒนาไม่มี

ดูคำแนะนำจาก ConsenSys, Nassent, OpenZeppelin และ Trail of Bits ซึ่งให้รายการตรวจสอบสำหรับนักพัฒนา รวมถึงเวลา สำหรับทุกคนที่เตรียมการตรวจสอบ ตรวจสอบให้แน่ใจว่าได้ตรวจสอบธุรกรรมการปรับใช้เพื่อให้แน่ใจว่าใช้รหัสเวอร์ชันที่ตรวจสอบแล้วและมีพารามิเตอร์ที่เหมาะสม โดยเฉพาะอย่างยิ่งเมื่ออัปเกรดซอฟต์แวร์

ชื่อเรื่องรอง

  • 6. ข้อควรพิจารณาด้านความปลอดภัยในขั้นตอนการปรับใช้และการบำรุงรักษา - การกระตุ้นการมีส่วนร่วมของชุมชนหมวกขาว

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

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

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

ชื่อเรื่องรอง

  • 7. ข้อควรพิจารณาด้านความปลอดภัยในการตรวจสอบตามเวลาจริง

  • อะไร: ใช้ระบบที่ตรวจสอบสัญญาอัจฉริยะและส่วนประกอบการดำเนินงานที่สำคัญ เช่น oracles และ cross-chain bridges และรายงานกิจกรรมที่น่าสงสัยไปยังทีมพัฒนาและชุมชนตามรูปแบบภัยคุกคามที่รู้จัก

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

ชื่อเรื่องรอง

  • 8. ข้อพิจารณาด้านความปลอดภัยสำหรับการปฏิบัติการตอบโต้อุบัติเหตุและเหตุฉุกเฉิน

  • อะไร: ใช้เครื่องมือและกระบวนการที่สามารถตอบสนองได้ทันทีกับปัญหาด้านความปลอดภัยใดๆ ที่เกิดขึ้น

  • เหตุผล: แม้จะมีการป้องกันก่อนการปรับใช้ที่ดีที่สุด ปัญหาแบบเรียลไทม์ของสัญญาอัจฉริยะและส่วนประกอบหลัก เช่น oracles และ cross-chain bridge ก็ยังเป็นไปได้ บุคลากรเฉพาะ กระบวนการที่ชัดเจน และระบบอัตโนมัติที่เหมาะสมช่วยให้มั่นใจได้ว่าเหตุการณ์ต่างๆ จะได้รับการตรวจสอบอย่างรวดเร็วและแก้ไขได้โดยเร็วที่สุด

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

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

a16z
ความปลอดภัย
สัญญาที่ชาญฉลาด
ยินดีต้อนรับเข้าร่วมชุมชนทางการของ Odaily
กลุ่มสมาชิก
https://t.me/Odaily_News
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
บัญชีทางการ
https://twitter.com/OdailyChina
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
ค้นหา
สารบัญบทความ
คลังบทความของผู้เขียน
Katie 辜
อันดับบทความร้อน
Daily
Weekly
ดาวน์โหลดแอพ Odaily พลาเน็ตเดลี่
ให้คนบางกลุ่มเข้าใจ Web3.0 ก่อน
IOS
Android