Umzug sichern
von Aptos Labs und OtterSec
Das Aptos-Netzwerk verwendet die intelligente Vertragssprache Move als zugrunde liegendes Programmiermodell. Während Move für ein Ökosystem aus sicheren Smart Contracts entwickelt wurde, kann eine fehlerhafte Implementierung von Move selbst diese Eigenschaften gefährden. Bei Aptos Labs setzen wir uns gemeinsam mit der Community dafür ein, Move so sicher wie möglich zu machen. Wir investieren sowohl in Tools zum Schreiben korrekter Smart Contracts (z. B. den Move Prover, der hauptsächlich von Aptos entwickelt wird) als auch in die Korrektheit von Laufzeitkernkomponenten wie der Move Virtual Machine. In diesem Artikel beschreiben wir, wie wir gemeinsam mit unseren Partnern letzteres durch Auditing, Bug Bounties, Fuzzing und Sicherheitshärtung der zugrunde liegenden Implementierung erreichen.
Was sichern wir?
Die Sicherheit von Move basiert auf einigen grundlegenden Eigenschaften. Diese Eigenschaften werden in Bezug auf den Bytecode definiert , den die Move-Ausführungs-Engine verwendet, und sind unabhängig von der Quellsprache:
- Typsicherheit : Jeder Wert hat einen eindeutigen und nicht fälschbaren Typ. Beispielsweise ist es nicht möglich, einen Wert vom Typ „Adresse“ in ein sicherheitsrelevantes Token vom Typ „Unterzeichner“ umzuwandeln.
- Modulare Kapselung : Ressourcen im Speicher können nur von Code innerhalb von Modulen manipuliert werden, die diese Ressourcen deklarieren. Nur Funktionen mit übereinstimmenden Sichtbarkeiten können modulübergreifend aufgerufen werden.
- Besitz und Lebensdauer : Das Fähigkeitssystem von Move erzwingt, dass ein Wert nicht kopiert, gelöscht, gespeichert oder als Schlüssel verwendet wird, es sei denn, die entsprechende Fähigkeit ist für den Werttyp deklariert.
- Referenzsicherheit : Referenzen überleben nicht die Werte, auf die sie verweisen. Eine änderbare Referenz ist ausschließlich im Besitz, sodass Aliasing nicht möglich ist.
Folgende Fragen interessieren uns:
- Ist der Bytecode-Verifizierer vollständig und garantiert er, dass alle oben genannten Eigenschaften für jedes Programm erfüllt sind? Dies ist wichtig, da die Verletzung einer der oben genannten Eigenschaften möglicherweise zum Verlust von Vermögenswerten führen kann.
- Kann ein bestimmtes Move-Bytecode-Programm die Ausführungsmaschine zum Absturz bringen? Da in einer replizierten Zustandsmaschine alle Knoten dieselben Programme ausführen, kann dies zum Anhalten des Netzwerks verwendet werden.
- Kann ein bestimmtes Programm dazu führen, dass der Ausführungsmaschine die Ressourcen (Speicher oder Zeit) ausgehen? Dies kann für DoS-Angriffe ausgenutzt werden, die das Netzwerk verlangsamen oder aussetzen.
Der Kern der Entwicklung von fehlerfreiem Code sind disziplinierte Software-Engineering-Praktiken gepaart mit den richtigen Tools. Bei Aptos folgen wir dem strengen Prozess der obligatorischen Codeüberprüfung und des kontinuierlichen Testens und der Integration, kombiniert mit den Best Practices des Rust-Ökosystems. Zusätzlich zu diesen traditionellen Aspekten wenden wir auch die folgenden Maßnahmen an, um Move so sicher zu halten, wie es sein soll.
Wirtschaftsprüfung und Beratung
Eine der angesehensten Maßnahmen in der Branche, um Vertrauen in Blockchain-Netzwerke zu gewinnen, ist die Prüfung. Bei Aptos Labs haben wir Certik ( Bericht ) und Holburn mit der Prüfung der Move Virtual-Maschine beauftragt. Es wurden mehrere kritische Probleme gefunden, eines davon in der Kategorie Typsicherheit.
Zusätzlich zum externen Audit leitete und organisierte Aptos Labs eine Community-Audit-Bemühung, die sich auf den Bytecode -Verifizierer konzentrierte. Ingenieure von Mysten Labs, Starcoin und Wirtschaftsprüfungsunternehmen wie MoveBit und OtterSec haben sich für diese Bemühungen mit Aptos-Ingenieuren zusammengetan und etwa 6 Personenwochen Auditzeit investiert. Die Ergebnisse davon sind in dieser Tabelle erfasst und beziehen sich auf Dutzende von Dokumenten, die während dieser Prüfung erstellt wurden. Diese Auditing-Bemühungen haben mehrere Probleme gefunden und behoben, bevor Aptos das Mainnet erreicht hat.
Nicht zuletzt arbeiten wir eng mit OtterSec zusammen . Das OtterSec-Team führte manuelle Codeüberprüfungen durch und entwickelte Fuzzing-Technologie für verschiedene Ziele, wobei mehrere kritische Probleme sowohl im Move VM- als auch im Aptos-Framework-Code identifiziert wurden. Sie leiteten auch die Bemühungen, der Move VM eine redundante Defense-in-Depth-Logik hinzuzufügen (siehe unten), und beeinflussten unsere laufende Designarbeit, um weitere Schwachstellen für Geldverluste zu mindern.
Fehlerprämie
Aptos Labs betreibt ein Bug-Bounty-Programm . Für kritische Fehler der Art, die zum Verlust von Vermögenswerten führen können, werden Prämien von bis zu 1.000.000 US-Dollar angeboten. Ebenso können Crash-Bugs mit bis zu 100.000 US-Dollar belohnt werden.
Beim Prämienprogramm haben wir eng mit einer Reihe talentierter Sicherheitsforscher zusammengearbeitet, um Fehler zu finden und zu beheben. Einige dieser Fehler waren in der kritischen Kategorie, während andere Fehler Abstürze waren, die durch die Verwendung von Fuzzern gefunden wurden.
Aptos Labs ist seinen Verpflichtungen in Bezug auf Bug-Prämien nachgekommen, und es wurden beträchtliche Prämien ausgezahlt. Darüber hinaus nutzt Aptos Labs weiterhin das Fachwissen von Whitehats, die wir über das Bounty-Programm kennengelernt haben, und beabsichtigt, weiterhin mit dieser Community zusammenzuarbeiten.
Fuzzing
Das Prämienprogramm hat uns motiviert, selbst in Fuzzing bei Aptos Labs zu investieren. Der Move-VM-Code wurde modifiziert, um das Fuzzing-Merkmal „Arbitrary“ von Rust an relevanten Stellen zu implementieren, wodurch die Verwendung von „Cargo Fuzz“ ermöglicht wird, um Bytecode-Module dynamisch zu generieren und zu validieren. Wir haben einige kontinuierliche Jobs, die mit diesen Fuzzing-Zielen ausgeführt werden.
Redundanz
Eine Möglichkeit, zusätzliche Sicherheit zu gewährleisten, ist die Redundanz. Wir haben der Move-VM einen sogenannten paranoiden Modus hinzugefügt , der die Typsicherheit und die anderen oben genannten Regeln zur Ausführungszeit erzwingt. Während der Bytecode-Verifizierer solche Eigenschaften bereits überprüft, wenn der Code in das System eintritt, überprüft der paranoide Modus dieselben Überprüfungen erneut während der Bytecode-Ausführungszeit. Der paranoide Modus wurde in der Move-Community ausführlich diskutiert, wobei Aptos-Ingenieure das Design leiteten. Weitere Informationen finden Sie in dieser PR (endgültige Version) und dieser PR (Zwischenversion).
Was kommt als nächstes?
Bei Aptos Labs sind wir bestrebt, Move so sicher wie möglich zu machen, und haben viel in diesen Bereich investiert. Hier haben wir die laufenden Bemühungen um Auditing, Bug Bounties, Fuzzing und Härtung beschrieben, die von uns und unseren Partnern durchgeführt werden. In Zukunft planen wir, weiter in diesen Bereich zu investieren. Wir werden weiterhin ein Bug-Bounty-Programm anbieten, mit angesehenen Sicherheitsprüfern zusammenarbeiten und die Entwicklung von Tools zur Sicherheitshärtung, z. B. Fuzzing-Technologie, vorantreiben.

![Was ist überhaupt eine verknüpfte Liste? [Teil 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































