SpecTrum: Specification-Guided Differential Fuzzing for Ethereum Consensus Clients
SpecTrum ist ein Framework, das Divergenzen zwischen Ethereum-Konsens-Clients verhindert, indem es die Konsensspezifikation mechanisiert, um Validitätsbedingungen explizit zu definieren, die Prämissenabdeckung zu messen, um ungetestete Szenarien zu identifizieren, und gezielte Eingaben zu generieren, die erfolgreich 27 Fälle von clientübergreifenden Divergenzen aufgedeckt haben.
Originalarbeit lizenziert unter CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dies ist eine KI-generierte Erklärung des untenstehenden Papers. Sie wurde nicht von den Autoren verfasst oder gebilligt. Für technische Genauigkeit konsultieren Sie das Originalpaper. Vollständigen Haftungsausschluss lesen
In der digitalen Welt von Ethereum arbeitet ein riesiges Netzwerk von Computern zusammen, um ein gemeinsames Register von Transaktionen sicher und korrekt zu führen. Dieses System beruht auf einem Prinzip namens Konsens: Damit das Netzwerk funktioniert, muss jeder unabhängige Computer, der die Software ausführt, über das exakte gleiche Ergebnis für jedes neue Stück an Daten, das der Kette hinzugefügt wird, übereinstimmen. Um diese Einigkeit zu gewährleisten, schreiben Entwickler verschiedene Versionen der Software in unterschiedlichen Programmiersprachen, in der Hoffnung, dass die anderen eine etwaige Fehlstelle in einer Version erkennen. Wenn jedoch alle Versionen versehentlich denselben Fehler machen oder die Regeln leicht unterschiedlich interpretieren, kann das Netzwerk auseinanderbrechen, was zu Verwirrung, verlorenen Belohnungen oder einem vollständigen Stillstand des Betriebs führt. Die Regeln, die dieses Verhalten steuern, sind in einem detaillierten technischen Dokument festgehalten, aber da diese Regeln oft eher als Computercode denn als eine einfache Liste von Bedingungen beschrieben werden, ist es schwierig zu wissen, wo genau die Grenzen der Gültigkeit liegen.
Ein Team von Forschern hat eine neue Methode entwickelt, um diese verborgenen Grenzen zu finden und sicherzustellen, dass verschiedene Versionen der Ethereum-Software miteinander übereinstimmen. Sie entwickelten ein Werkzeug namens SpecTrum, das als Übersetzer fungiert und die komplexen, impliziten Regeln des Ethereum-Protokolls in eine klare, explizite Menge von Bedingungen umwandelt, die ein Computer systematisch überprüfen kann. Anstatt zu raten, wo Fehler auftreten könnten, erstellt dieses Werkzeug eine Karte für jedes mögliche Szenario, in dem die Regeln verletzt werden könnten, einschließlich Situationen, in denen Zahlen zu groß für den Computer werden, mit denen er umgehen kann, oder in denen Datenlisten erwartete Einträge vermissen lassen. Durch die Verwendung dieser Karte generierten die Forscher tausende spezifische Testfälle, die darauf ausgelegt sind, die Software an ihre Grenzen zu bringen und Fehler aufzudecken, die herkömmliche Testmethoden übersehen hatten.
Die Forscher wandten dieses Werkzeug auf fünf große Versionen der Ethereum-Konsens-Software an, die in verschiedenen Programmiersprachen geschrieben sind und weltweit von tausenden Knoten verwendet werden. Ihre Untersuchung deckte siebenundzwanzig verschiedene Fälle auf, in denen diese unabhängigen Programme sich uneinig darüber waren, wie bestimmte Eingaben zu behandeln sind. In einigen Fällen akzeptierten die Programme dieselben Daten, berechneten jedoch unterschiedliche Endergebnisse – ein stiller Fehler, der letztlich dazu führen könnte, dass das Netzwerk gespalten wird. In anderen Fällen stürzte die Software bei der Konfrontation mit ungewöhnlichen, aber gültigen Daten vollständig ab. Entscheidend war, dass zweiundzwanzig dieser siebenundzwanzig Fehler ohne die neue Methode der Forscher, die Regeln explizit zu machen, nicht hätten gefunden werden können. Die Studie zeigte, dass das traditionelle Testen, das sich auf die Codeabdeckung stützt, um zu sehen, wie viel des Programms ausgeführt wird, daran scheiterte, diese Probleme zu entdecken, da die Fehler in der subtilen Logik der Anwendung der Regeln lagen und nicht in der sichtbaren Struktur des Codes selbst.
Das Team stellte zudem fest, dass diese Fehler nicht auf eine einzelne Version der Software isoliert waren. Da die Kernlogik über verschiedene Updates des Ethereum-Netzwerks hinweg gemeinsam genutzt wird, traten dieselben siebenundzwanzig Fehler konsistent auf, wenn die Tests mit einer neueren Version des Protokolls durchgeführt wurden. Dies deutet darauf hin, dass eine einzige Anstrengung zur Behebung der zugrunde liegenden Spezifikation diese Probleme in allen zukünftigen Versionen des Netzwerks verhindern könnte. Die Forscher meldeten alle siebenundzwanzig Funde an das Ethereum-Sicherheitsteam, wo sie derzeit überprüft werden. Diese Arbeit demonstriert, dass es möglich ist, durch das Umwandeln vager, impliziter Regeln in klare, testbare Bedingungen tief verwurzelte Inkonsistenzen in kritischer Software zu finden und zu beheben, bevor sie realen Schaden anrichten, und so sicherzustellen, dass das digitale Netzwerk stabil und vertrauenswürdig bleibt.
Ertrinken Sie in Arbeiten in Ihrem Fachgebiet?
Erhalten Sie tägliche Digests der neuesten Arbeiten passend zu Ihren Forschungsbegriffen — mit technischen Zusammenfassungen, in Ihrer Sprache.