Nightshade bringt Sicherheitsanalyse zu Midnights Compact Verträgen

Entwickler Dickson Wu testete das Open Source Tool gegen absichtlich eingebaute Fehler und 300 öffentlich verfügbare Verträge.

By SongMarketCap

Midnight News - Nightshade bringt Sicherheitsanalyse zu Midnights Compact Verträgen

Nightshade ist ein Tool für statische Analyse, das Entwicklern dabei helfen soll, Smart Contracts zu überprüfen, die in Compact geschrieben sind, der Programmiersprache, mit der Anwendungen auf Midnight erstellt werden.

Von Wu am 29. Oktober im Midnight Forum vorgestellt, prüft das Tool Quellcode anhand von 96 Regeln und markiert Muster, die eine genauere Betrachtung verdienen könnten. Seine Ergebnisse benennen die relevante Codezeile und enthalten Informationen, die Entwicklern helfen sollen, das Problem zu untersuchen.

Nightshade prüft Compact Code auf Sicherheitsmuster

Statische Analyse untersucht Quellcode, ohne dass der Vertrag ausgeführt werden muss. Nightshade nutzt diesen Ansatz, um nach Mustern zu suchen, die mit Privatsphäre, Autorisierung und anderen Teilen der Logik eines Vertrags zusammenhängen.

Ein von Wu genanntes Beispiel betrifft ein privates Geheimnis, das nach seiner Verwendung in einer Autorisierungsprüfung im Ledger veröffentlicht wird. Ein Entwickler könnte beabsichtigen, das Geheimnis zu nutzen, um die Berechtigung eines Nutzers zu bestätigen, während der zugrunde liegende Wert privat bleibt. Eine anschließende Veröffentlichung könnte Informationen offenlegen, die eigentlich geschützt bleiben sollten.

Weitere Prüfungen suchen nach verworfenen Ergebnissen der Signaturprüfung und nach Fällen, in denen Witness Werte als Identitätsnachweis behandelt werden. Das Tool markiert außerdem Muster, bei denen vom Aufrufer gelieferte Zeitangaben ohne Bindung an die Kettenzeit verwendet werden, sowie Merkle Nachweise, die nicht auf Mitgliedschaft geprüft werden.

Für jeden Fund liefert Nightshade laut Wu die relevante Quellzeile, den von den Daten genommenen Pfad und einen Korrekturvorschlag. Das gibt Entwicklern einen Ausgangspunkt, um zu untersuchen, wie sich ein Wert durch den Vertrag bewegt und wo das markierte Verhalten auftritt.

Eine Warnung belegt für sich genommen weder, dass ein Vertrag ausgenutzt wurde, noch dass Informationen offengelegt wurden. Ebenso ist eine abgeschlossene Analyse keine Garantie dafür, dass ein Vertrag sicher ist.

Dickson Wu teilt Nightshade Testergebnisse

Wu bewertete Nightshade anhand von Testfällen mit absichtlich eingebauten Fehlern. Er berichtete, dass das Tool 263 von 266 positiven Fällen erkannte, die von der Evaluation abgedeckt wurden.

Der Entwickler testete außerdem korrigierte Versionen dieser Fälle. Für 240 von 242 behobenen Versionen erzeugte Nightshade keine Warnung, während für die beiden anderen Funde ausgegeben wurden. Die Ergebnisse beschreiben die in dieser Evaluation verwendeten Testfälle und legen keine Erkennungsrate für jedes mögliche Sicherheitsproblem fest.

Anschließend ließ Wu das Tool gegen 300 öffentliche Compact Verträge aus 144 Repositories laufen. Er berichtete von keinen Abstürzen während des Durchlaufs und identifizierte 258 Verträge, die eine vollständige Analyse erhielten.

Diese Unterscheidung ist wichtig, denn einen Scan abzuschließen und keine Probleme zu finden sind unterschiedliche Ergebnisse. Laut Wu wurden Verträge, die keine vollständige Analyse erhielten, als unvollständig gemeldet statt als sauber behandelt.

Der Entwickler veröffentlichte die Evaluationsmethode und die Testanzahlen zusammen mit dem Tool, sodass andere nachvollziehen können, wie die gemeldeten Ergebnisse zustande kamen.

[NEWSBREAK]

Offline Analyse und Entwicklerintegration

Nightshade läuft lokal und benötigt laut Wu weder eine Internetverbindung noch einen Compact Compiler, um Quellcode zu scannen. Das Tool unterstützt Compact Compiler Versionen 0.28 bis 0.35.

Entwickler können Funde als Text ansehen oder sie in den Formaten JSON und SARIF exportieren. Es steht außerdem eine GitHub Action zur Verfügung, um Ergebnisse während der Prüfung vorgeschlagener Codeänderungen anzuzeigen, wodurch die Funde in einen Workflow eingebettet werden, den Entwickler möglicherweise bereits zur Überprüfung von Aktualisierungen nutzen.

Das Tool wird unter der Apache 2.0 Open Source Lizenz veröffentlicht. Wu stellte die Version 0.1.1 vor und lud Entwickler ein, Feedback zu geben, False Positives zu melden und zusätzliche Regeln vorzuschlagen.