
Scout เป็นเครื่องมือโอเพนซอร์ซที่ขยายได้ซึ่งมีจุดประสงค์เพื่อช่วยนักพัฒนาสัญญา Soroban Stellar Smart Contract และผู้ตรวจสอบตรวจจับปัญหาด้านความปลอดภัยทั่วไปและการเบี่ยงเบนจากแนวทางปฏิบัติที่ดีที่สุด
เครื่องมือนี้ช่วยให้นักพัฒนาเขียนสัญญาที่ปลอดภัยและมีประสิทธิภาพมากขึ้น
ความสนใจของเราในโครงการนี้มาจากประสบการณ์ของเราในการตรวจสอบด้วยตนเองและการตรวจจับช่องโหว่ในบล็อกเชนอื่น ๆ (ดูลูกเสือสำหรับหมึก!)
ติดตั้งการตรวจสอบลูกเสือ:
ตรวจสอบให้แน่ใจว่ามีการติดตั้งสินค้าบนคอมพิวเตอร์ของคุณ จากนั้นติดตั้งลูกเสือด้วยคำสั่งต่อไปนี้:
cargo install cargo-scout-auditเรียกใช้การตรวจสอบลูกเสือ:
ในการเรียกใช้ Scout ในโครงการของคุณดำเนินการคำสั่งต่อไปนี้:
cargo scout-auditลูกเสือรองรับพื้นที่ทำงานของสินค้า เมื่อทำงานบนพื้นที่ทำงานลูกเสือจะถูกดำเนินการในแพ็คเกจทั้งหมดที่ระบุเป็นสมาชิกของพื้นที่ทำงาน
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการติดตั้งและการใช้งานโปรดดูส่วนการเริ่มต้นในส่วนเอกสารของเราด้านล่าง
ขณะนี้ลูกเสือมีเครื่องตรวจจับต่อไปนี้
| ID ตรวจจับ | สิ่งที่ตรวจพบ | กรณีทดสอบ | ความรุนแรง |
|---|---|---|---|
| หารก่อน | ดำเนินการหารก่อนการคูณนำไปสู่การสูญเสียความแม่นยำ | 1, 2, 3 | ปานกลาง |
| ไม่ปลอดภัย | การใช้วิธี UNWrap ที่ไม่เหมาะสมทำให้โปรแกรมไม่คาดคิดเกิดปัญหา | 1 | ปานกลาง |
| ไม่ปลอดภัย | การใช้วิธีการคาดหวังที่ไม่เหมาะสมซึ่งนำไปสู่การล่มของโปรแกรมที่ไม่คาดคิด | 1 | ปานกลาง |
| ตรวจสอบล้น | การดำเนินการทางคณิตศาสตร์ล้นหรือ underflows หน่วยความจำที่มีอยู่ที่จัดสรรให้กับตัวแปร | 1 | วิกฤต |
| ค่าใช้จ่ายไม่เพียงพอ | หลีกเลี่ยงการใช้แอตทริบิวต์บล็อกสำหรับการสร้างตัวเลขแบบสุ่มเพื่อป้องกันการจัดการ | 1 | วิกฤต |
| วิสทัสนา | หากผู้ใช้ได้รับอนุญาตให้เรียก update_current_contract_wasm() พวกเขาสามารถแก้ไขพฤติกรรมสัญญาได้โดยเจตนา | 1 | วิกฤต |
| หลีกเลี่ยงคอร์-เมม-ฟอเรต | การใช้ core::mem::forget() อาจนำไปสู่การรั่วไหลของหน่วยความจำและข้อผิดพลาดของตรรกะ | 1 | การเพิ่มประสิทธิภาพ |
| การตั้งค่าการจัดเก็บ | การควบคุมการเข้าถึงไม่เพียงพอเกี่ยวกับวิธีการ env.storage() | 1, 2, 3 | วิกฤต |
| หลีกเลี่ยงข้อผิดพลาด | ความตื่นตระหนกของโค้ดบนข้อผิดพลาดแทนที่จะใช้ enum เชิงพรรณนา | 1 | การเพิ่มประสิทธิภาพ |
| หลีกเลี่ยงการปิดกั้นบล็อก | การใช้บล็อกที่ไม่ปลอดภัยในความเสี่ยงและความน่าเชื่อถือของรหัสความเสี่ยง | 1 | วิกฤต |
| Dos-unbounded-operation | DOS เนื่องจากการดำเนินการที่ไม่มีขอบเขต | 1, 2, 3 | ปานกลาง |
| Soroban-Version | การใช้ Soroban รุ่นเก่าอาจเป็นอันตรายได้เนื่องจากอาจมีข้อบกพร่องหรือปัญหาด้านความปลอดภัย ใช้เวอร์ชันล่าสุดที่มีอยู่ | 1 | การเพิ่มประสิทธิภาพ |
| return-enum ไม่ได้ใช้ | return enum จากฟังก์ชั่นไม่ได้ใช้อย่างสมบูรณ์ | 1, 2 | ส่วนน้อย |
| ตัววนซ้ำ-การจัดทำดัชนี | การวนซ้ำด้วยดัชนีฮาร์ดโค้ดนั้นช้ากว่าการใช้ตัววนซ้ำ นอกจากนี้หากดัชนีอยู่นอกขอบเขตมันจะตื่นตระหนก | 1 | การเพิ่มประสิทธิภาพ |
| การยืนยัน | หลีกเลี่ยงการใช้มาโครยืนยัน! มันสามารถตกใจได้ | 1 | การเพิ่มประสิทธิภาพ |
| การจับคู่ที่ไม่มีการป้องกัน | การแก้ไขการแมปด้วยคีย์โดยพลการที่ผู้ใช้กำหนดอาจเป็นช่องโหว่ที่สำคัญ | 1, 2 | วิกฤต |
| Dos-unexepected-with-vector | DOS เนื่องจากการจัดเก็บที่ไม่เหมาะสม | 1, 2 | ปานกลาง |
| ไม่ จำกัด การถ่ายโอนจาก | หลีกเลี่ยงการผ่านพารามิเตอร์ที่ผู้ใช้กำหนดเป็นฟิลด์ from การถ่ายโอนจาก | 1 | วิกฤต |
| ไม่ปลอดภัย | การใช้ Map get ที่ไม่เหมาะสม | 1 | ปานกลาง |
| zero-or-test-adddress | หลีกเลี่ยงศูนย์หรือการกำหนดที่อยู่ทดสอบเพื่อป้องกันการสูญเสียการควบคุมสัญญา | 1 | ปานกลาง |
| การขยายไม่ถูกต้อง | เตือนการใช้งานที่ไม่ถูกต้องของ ´^´ | 1 | วิกฤต |
คุณสามารถเลือกรูปแบบผลลัพธ์ที่เหมาะกับความต้องการของคุณมากที่สุด Scout เสนอรายงาน HTML, Markdown, JSON, PDF และ SARIF ในการระบุเอาต์พุตที่ต้องการเรียกใช้คำสั่งต่อไปนี้:
cargo scout-audit --output-format [html|md|pdf|json|sarif]
รายงาน HTML

เพิ่มลูกเสือลงในพื้นที่ทำงานของคุณด้วยส่วนขยายรหัส VS ของ Scout เพื่อเรียกใช้ Scout โดยอัตโนมัติเมื่อบันทึกไฟล์ของคุณ

เคล็ดลับ: หากต้องการดูข้อผิดพลาดที่เน้นในรหัสของคุณเราขอแนะนำให้ติดตั้งส่วนขยายเลนส์ข้อผิดพลาด
ดาวน์โหลด Scout vs Code จาก Visual Studio Marketplace
รวมลูกเสือเข้ากับไปป์ไลน์ CI/CD ของคุณ! เรียกใช้เครื่องมือโดยอัตโนมัติกับสัญญาอัจฉริยะที่กำหนดเป้าหมาย ลูปตอบรับทันทีนี้ช่วยให้นักพัฒนาสามารถแก้ไขปัญหาใด ๆ ได้อย่างรวดเร็วก่อนที่จะรวมรหัสเข้ากับสาขาหลักลดความเสี่ยงของการแนะนำข้อบกพร่องหรือช่องโหว่
ออกไปแสดงความคิดเห็นในคำขอดึง

ค้นหาการกระทำของ Scout GitHub ใน GitHub Marketplace
เข้าร่วมกับเราสำหรับซีรีส์วิดีโอบทช่วยสอนที่คุณจะได้เรียนรู้วิธีการติดตั้งและเรียกใช้ Scout ค้นพบวิธีการระบุและแก้ไขปัญหาเฉพาะที่ตรวจพบโดยเครื่องมือและปรับปรุงทักษะของคุณด้วยคำแนะนำจากผู้เชี่ยวชาญของเรา
- วิดีโอเพิ่มเติมมาเร็ว ๆ นี้!
ในการตรวจสอบเครื่องมือของเราเราได้จัดเตรียมชุดตัวอย่างรหัสที่อยู่ในโฟลเดอร์ทดสอบ
ในการเรียกใช้การทดสอบการรวมให้นำทางไปยัง apps/cargo-scout-audit และเรียกใช้งาน:
cargo test --all --all-features ในการเรียกใช้การทดสอบสำหรับกรณีทดสอบเฉพาะให้เรียกใช้คำสั่งเดียวกันในโฟลเดอร์ทดสอบเฉพาะนั้น (เช่น: test-cases/divide-before-multiply/divide-before-multiply-1 )
ไปที่ลิงก์เอกสารของเราด้านล่างและเรียนรู้เพิ่มเติมเกี่ยวกับช่องโหว่ที่ตรวจพบโดย Scout วิธีการทำงานของเครื่องมือและวิธีการมีส่วนร่วมในโครงการ!
Scout for Soroban เป็นเครื่องวิเคราะห์ช่องโหว่โอเพนซอร์สที่พัฒนาโดยทีมวิจัยและพัฒนาของ Coinfabrik
เราได้รับการสนับสนุนผ่านเงินช่วยเหลือจากกองทุนชุมชน Stellar (SCF)
เรา - Coinfabrik - เป็น บริษัท วิจัยและพัฒนาที่เชี่ยวชาญใน WEB3 มีพื้นฐานที่แข็งแกร่งในการรักษาความปลอดภัยทางไซเบอร์ ก่อตั้งขึ้นในปี 2014 เราได้ทำงานในโครงการที่เกี่ยวข้องกับบล็อกเชนกว่า 180 โครงการ EVM และสำหรับ Solana, Algorand, Stellar และ Polkadot นอกเหนือจากการพัฒนาแล้วเรายังเสนอการตรวจสอบความปลอดภัยผ่านทีมงานที่ทุ่มเทของผู้เชี่ยวชาญด้านความปลอดภัยทางไซเบอร์อาวุโสซึ่งกำลังทำงานเกี่ยวกับรหัสในสารตั้งต้นความแข็งแกร่งความชัดเจนสนิมสโตลและสเตลลาร์โซโรบัน
ทีมงานของเรามีภูมิหลังทางวิชาการด้านวิทยาศาสตร์คอมพิวเตอร์และคณิตศาสตร์ด้วยประสบการณ์การทำงานที่มุ่งเน้นไปที่การรักษาความปลอดภัยทางไซเบอร์และการพัฒนาซอฟต์แวร์รวมถึงสิ่งพิมพ์ทางวิชาการสิทธิบัตรกลายเป็นผลิตภัณฑ์และการนำเสนอการประชุม นอกจากนี้เรายังมีความร่วมมืออย่างต่อเนื่องในการถ่ายโอนความรู้และโครงการโอเพ่นซอร์สกับ University of Buenos Aires
ลูกเสือได้รับใบอนุญาตและแจกจ่ายภายใต้ใบอนุญาต MIT ติดต่อเราหากคุณกำลังมองหาข้อยกเว้นสำหรับข้อกำหนด