Anfang dieses Jahres haben wir eine gestartet Bug Bounty -Programm konzentrierte sich auf die Suche nach Problemen in der Beacon -Kettenspezifikation und/oder in Kundenimplementierungen (Leuchtturm, Nimbus, Teku, Prysm usw.). Die Ergebnisse (und Schwachstellenberichte) waren aufschlussreich, ebenso wie die Lehren, die beim Patching potenzieller Probleme gezogen wurden.
In dieser neuen Serie wollen wir einige der Erkenntnisse erforschen und teilen, die wir bisher aus Sicherheitsarbeit und während der Weiterentwicklung gewonnen haben.
Dieser erste Beitrag analysiert einige der Einsendungen, die speziell auf BLS -Primitive abzielen.
Haftungsausschluss: Alle in diesem Beitrag erwähnten Fehler wurden bereits behoben.
BLS ist überall
Vor ein paar Jahren, Diego F. Spider gab einen Vortrag bei der 21. Workshop zur Kryptographie der elliptischen Kurve mit dem Titel: Paarungen sind nicht tot, ruhen sich nur aus. Wie prophetisch.
Hier sind wir im Jahr 2021 und Paarungen sind einer der Hauptakteure, die hinter vielen der kryptografischen Primitiven im Blockchain -Raum (und darüber hinaus) verwendet werden: BLS Aggregatsignaturen, ZK-Snarks-Systeme usw.
Entwicklungs- und Standardisierungsarbeiten im Zusammenhang mit BLS-Signaturen sind seit einiger Zeit ein laufendes Projekt für EF Justin Drake und zusammengefasst in ein kürzlich von ihm auf Reddit.
Das neueste und größte
In der Zwischenzeit gab es viele Updates. BLS12-381 ist jetzt allgemein anerkannt als die Paarungskurve zu verwenden Angesichts unseres gegenwärtigen Wissens.
Derzeit befinden sich drei verschiedene IRTF -Entwürfe:
Außerdem die Beacon -Kettenspezifikation ist gereift und ist bereits teilweise bereitgestellt. Wie oben erwähnt, BLS -Signaturen sind ein wichtiges Puzzleteil hinter dem Proof-of-Stake (POS) und der Beacon-Kette.
Jüngste Lektionen gelernt
Nachdem wir die im Konsensschicht verwendeten BLS-Primitiven gesammelt haben, können wir gemeldete Fehler in drei Bereiche aufteilen:
- IRTF -Entwurfsaufsicht
- Implementierungsfehler
- IRTF -Entwurf zur Umsetzung von Implementierungen
Lassen Sie uns in jeden Abschnitt zoomen.
IRTF -Entwurfsaufsicht
Einer der Reporter (Nguyen thoi minh quan), gefundene Unstimmigkeiten in der IRTF -Entwurfund veröffentlichte zwei White Papers mit Erkenntnissen:
Während die spezifischen Inkonsistenzen immer noch ausgesetzt sind zur DebatteEr fand einige interessant Durchführung Probleme während er seine Forschung durchführt.
Implementierungsfehler
Guido Vranken konnte mehrere “kleine” Probleme aufdecken Blst Verwendung Differential Fuzzing. Siehe Beispiele für die unten folgenden:
Er leitete dies mit der Entdeckung einer moderaten Verwundbarkeit, die die die der Blsts Blst_fp_eucl_inverse -Funktion.
IRTF -Entwurf zur Umsetzung von Implementierungen
Eine dritte Kategorie von Fehler bezogen sich auf Verstöße gegen die Implementierung von IRTF -Entwürfen. Der erste betroffene die Prysm Client.
Um dies zu beschreiben, müssen wir zuerst ein wenig Hintergrund bereitstellen. Der BLS -Signaturen IRTF -Entwurf enthält 3 Programme:
- Grundschema
- Nachrichtenvergrößerung
- Beweis des Besitzes
Der Prysm Client macht keine Unterscheidung zwischen den 3 in seiner API, was unter den Implementierungen einzigartig ist (z. B. py_ecc). Eine Besonderheit über die Grundschema Ist wörtlich zitieren: “Diese Funktion stellt zunächst sicher, dass alle Nachrichten unterschiedlich sind” . Dies wurde in der nicht sichergestellt AGGREGE Egal Funktion. Prysm hat diese Diskrepanz durch festgelegt die Verwendung abwerten von AGGREGE Egal (was nirgendwo in der Beacon -Kettenspezifikation verwendet wird).
Ein zweites Problem betroffen py_ecc. In diesem Fall der in der beschriebene Serialisierungsprozess Zcash BLS12-381 Spezifikation dass Ganzzahlen immer innerhalb des Bereichs von liegen [0, p – 1]. Der py_ecc Die Implementierung hat diesen Scheck über die G2-Gruppe von BLS12-381 nur für die geprüft echter Teil hat den Moduloperation für die jedoch nicht durchgeführt imaginärer Teil. Das Problem wurde mit der folgenden Pull -Anfrage behoben: Unzureichende Validierung bei Decompress_G2 Deserialisierung in PY_ECC.
Einpacken
Heute haben wir uns die BLS -verwandten Berichte angesehen, die wir als Teil unserer erhalten haben Bug Bounty -ProgrammAber dies ist definitiv nicht das Ende der Geschichte für Sicherheitsarbeit oder für Abenteuer im Zusammenhang mit BLS.
Wir stark ermutigen Du Um sicherzustellen, dass der Konsensschicht im Laufe der Zeit sicherer wird. Damit freuen wir uns auf das Hören von Ihnen und ermutigen Sie zum Graben! Wenn Sie der Meinung sind, dass Sie eine Sicherheitsanfälligkeit oder einen Fehler in Bezug auf die Beacon -Kette oder verwandte Kunden gefunden haben, Senden Sie einen Fehlerbericht! 💜🦄

