
Scout ist ein erweiterbares Open-Source-Tool, mit dem Soroban Stellar Smart Contract Developers und Prüfer dabei helfen sollen, häufige Sicherheitsprobleme und Abweichungen von Best Practices zu erkennen.
Dieses Tool hilft Entwicklern, sichere und robustere intelligentere Verträge zu schreiben.
Unser Interesse an diesem Projekt ergibt sich aus unserer Erfahrung in der manuellen Prüfung und der Anfälligkeitserkennung in anderen Blockchains (siehe Scout für Tinte!).
Scout -Audit installieren:
Stellen Sie sicher, dass die Fracht auf Ihrem Computer installiert ist. Installieren Sie dann Scout mit dem folgenden Befehl:
cargo install cargo-scout-auditScout -Audit ausführen:
Um Scout in Ihrem Projekt auszuführen, führen Sie den folgenden Befehl aus:
cargo scout-auditScout unterstützt Frachtarbeiträume. Beim Ausführen eines Arbeitsbereichs wird Scout in allen als Mitgliedern des Arbeitsbereichs angegebenen Pakete ausgeführt.
Weitere Informationen zu Installation und Nutzung finden Sie im Abschnitt "Erste Schritte" in unserem Abschnitt "Dokumentation" unten.
Derzeit umfasst Scout die folgenden Detektoren.
| Detektor -ID | Was es erkennt | Testfälle | Schwere |
|---|---|---|---|
| Divide-vor-Multiply | Vor einer Multiplikation einen Abteilungsvorgang durchführen, was zu einem Präzisionsverlust führt. | 1, 2, 3 | Medium |
| unsicherer Unwrap | Unangemessene Verwendung der Ausweichmethode, die unerwartete Programmabstürze verursacht. | 1 | Medium |
| unsicherer | Unsachgemäße Verwendung der Erwartungsmethode, die zu unerwarteten Programmabstürzen führt. | 1 | Medium |
| Überlaufprüfung | Ein arithmetischer Betrieb überläuft oder unterläuft den verfügbaren Speicher der Variablen. | 1 | Kritisch |
| unzureichend randomische Werte | Vermeiden Sie es, Blockattribute für die Zufallszahlenerzeugung zu verwenden, um eine Manipulation zu verhindern. | 1 | Kritisch |
| ungeschützte Aufgabe-Stromvertrags-WASM | Wenn Benutzer gestattet sind, update_current_contract_wasm() aufzurufen, können sie das Vertragsverhalten absichtlich ändern. | 1 | Kritisch |
| Vermeiden Sie Core-MEM-für-für-für-für | Die Verwendung von core::mem::forget() könnte zu Speicherlecks und Logikfehlern führen. | 1 | Erweiterung |
| Set-Contract-Storage | Unzureichende Zugangskontrolle auf der methode env.storage() . | 1, 2, 3 | Kritisch |
| Vermeiden Sie Panic-Error | Code Panik bei Fehler, anstatt deskriptive Enum zu verwenden. | 1 | Erweiterung |
| Nicht sicherer Block vermeiden | Verwendung unsicherer Blöcke in der Sicherheit und Zuverlässigkeit der Risiken. | 1 | Kritisch |
| dos-fundierte Operation | DOS aufgrund unbegrenzter Betrieb. | 1, 2, 3 | Medium |
| Soroban-Version | Die Verwendung einer alten Version von Soroban kann gefährlich sein, da sie möglicherweise Fehler oder Sicherheitsprobleme aufweist. Verwenden Sie die neueste verfügbare Version. | 1 | Erweiterung |
| Unbenutzte Rendite | Return Enum von einer Funktion wird nicht vollständig verwendet. | 1, 2 | Unerheblich |
| Iteratoren-über-Indexing | Das Iterieren mit hartgesottenen Indizes ist langsamer als die Verwendung eines Iterators. Wenn der Index außerhalb der Grenzen liegt, gerät er in Panik. | 1 | Erweiterung |
| Assert-Violation | Vermeiden Sie die Verwendung des Makros!, Es kann in Panik geraten. | 1 | Erweiterung |
| ungeschützte Mapping-Operation | Das Ändern von Zuordnungen mit einem willkürlichen Schlüssel, der von Benutzern angegeben ist, kann eine erhebliche Anfälligkeit sein. | 1, 2 | Kritisch |
| DOS-nichtwartet-Revert-mit-Vektor | DOS wegen unsachgemäßer Lagerung. | 1, 2 | Medium |
| uneingeschränkte Transfer-From | Vermeiden Sie es, einen benutzerdefinierten Parameter als from dem Feld in Transfer-FROM zu übergeben. | 1 | Kritisch |
| unsicherer Map-Get | Unangemessene Verwendung der get -Methode für Map in Soroban | 1 | Medium |
| Null-Or-Test-Addesse | Vermeiden Sie Null- oder Testadressenzuweisung, um den Vertragskontrollverlust zu verhindern. | 1 | Medium |
| Falsche Exponentation | Warnt vor der falschen Verwendung von ´^´. | 1 | Kritisch |
Sie können das Ausgangsformat auswählen, das Ihren Anforderungen am besten entspricht. Scout bietet HTML-, Markdown-, JSON-, PDF- und Sarif -Berichte. Um die gewünschte Ausgabe anzugeben, führen Sie den folgenden Befehl aus:
cargo scout-audit --output-format [html|md|pdf|json|sarif]
HTML -Bericht

Fügen Sie Ihrem Entwicklungsarbeitsbereich Scout mit der VS -Code -Erweiterung von Scout hinzu, um Scout automatisch auszuführen, wenn Sie Ihre Datei speichern.

Tipp: Um die in Ihrem Code hervorgehobenen Fehler anzuzeigen, empfehlen wir, die Erweiterung der Fehlerlinsen zu installieren.
Laden Sie Scout vs Code vom Visual Studio Marketplace herunter.
Integrieren Sie Scout in Ihre CI/CD -Pipeline! Führen Sie das Tool automatisch mit den gezielten intelligenten Verträgen aus. Mit dieser sofortigen Rückkopplungsschleife können Entwickler Probleme schnell angehen, bevor der Code in den Hauptzweig zusammenfasst und das Risiko einer Einführung von Fehler oder Schwachstellen verringert.
Scout -Ausgabe als Kommentar in einer Pull -Anfrage

Finden Sie Scout Github Action auf dem Github -Marktplatz.
Besuchen Sie uns für eine aufregende Reihe von Video -Tutorials, in denen Sie lernen, wie Sie Scout installieren und ausführen. Entdecken Sie, wie Sie spezifische Probleme identifizieren und beheben können, die vom Tool festgestellt wurden, und verbessern Sie Ihre Fähigkeiten mit unserer Expertenanleitung.
? Weitere Videos, die bald kommen!
Um unser Tool zu validieren, stellen wir eine Reihe von Codebeispielen im Ordner Test-Cases an.
Um die Integrationstests durchzuführen, navigieren Sie zu apps/cargo-scout-audit und rennen Sie:
cargo test --all --all-features Um die Tests für einen bestimmten Testfall auszuführen, führen Sie denselben Befehl in diesem bestimmten Testfall-Ordner aus (z. B. test-cases/divide-before-multiply/divide-before-multiply-1 ).
Folgen Sie unseren Dokumentationslinks unten und erfahren Sie mehr über die von Scout erkannten Schwachstellen, wie das Tool funktioniert und wie man zum Projekt beiträgt!
Scout für Soroban ist ein Open -Source -Analysator für Schwachstellen, der vom Forschungs- und Entwicklungsteam von Coinfabrik entwickelt wurde.
Wir erhielten Unterstützung durch ein Stipendium des Stellar Community Fund (SCF).
Wir - Coinfabrik - sind ein auf Web3 spezialisiertes Forschungs- und Entwicklungsunternehmen mit einem starken Hintergrund in der Cybersicherheit. Wir wurden 2014 gegründet und haben an über 180 Blockchain-bezogenen Projekten gearbeitet, EVM-basiert und auch für Solana, Algorand, Stellar und Polkadot. Über die Entwicklung hinaus bieten wir Sicherheitsaudits über ein engagiertes internes Team von hochrangigen Cybersicherheitsprofis an, die derzeit an Code in Substrat, Solidität, Klarheit, Rost, Teal und Stellar Soroban arbeiten.
Unser Team verfügt über einen akademischen Hintergrund in Informatik und Mathematik mit Berufserfahrung auf Cybersicherheit und Softwareentwicklung, einschließlich akademischer Veröffentlichungen, Patente, in Produkte und Konferenzpräsentationen. Darüber hinaus haben wir eine kontinuierliche Zusammenarbeit zu Wissenstransfer- und Open-Source-Projekten mit der University of Buenos Aires.
Scout ist lizenziert und unter einer MIT -Lizenz verteilt. Kontaktieren Sie uns, wenn Sie nach einer Ausnahme von den Bedingungen suchen.