Babylon's Genesis-Chain-Audit von Zellic, veröffentlicht am 26. März 2025, dokumentiert 32 Findings über fünf Berater hinweg in zehn Wochen. Sieben wurden als kritisch eingestuft. Alle wurden entweder behoben oder von Babylon Labs anerkannt.
Zwei dieser Findings sitzen direkt nebeneinander im Bericht und beschreiben dieselbe zugrunde liegende Lücke aus zwei unterschiedlichen Blickwinkeln.
Ein Finality-Provider, der „geslashed“ wird, soll seine Voting-Power sofort verlieren. Aber der Code prüfte in einem Ausführungspfad den Slash-Status und verpasste ihn in einem anderen. Wenn ein Provider geslashed wurde, während eine BTC-Delegation noch ausstand, konnte diese Delegation später verarbeitet werden, ohne dass der Slash erneut geprüft wurde — wodurch der Provider wieder in die aktive Voting-Menge zurückversetzt wurde.
Das ist keine hypothetische Annahme, die jemand nachträglich konstruiert hat. Es ist ein dokumentierter Codepfad, mit den im Bericht exakt genannten Funktionen, und einem Fix, den Babylon Labs tatsächlich über zwei Commits ausgeliefert hat.
Es lohnt sich, einen Moment darüber nachzudenken, warum das überhaupt passiert. Babylons Kerndesign betreibt auf einer Seite den Slash-Status eines Providers und auf der anderen Seite den Delegations-Approval-Flow — beides parallel in getrennten Lifecycles. Meistens bleiben sie synchron. Dieses Finding zeigt, was in dem engen Zeitfenster passiert, in dem sie es nicht tun.
Eine passende Analogie: Ein Mitarbeitender bekommt seinen Ausweis wegen eines Sicherheitsverstoßes deaktiviert, aber eine separate Anfrage, ihm den Zugang zu einem Gebäude zu gewähren — eingereicht vor der Deaktivierung — wird danach fertiggestellt und reaktiviert den Ausweis, weil die beiden Systeme nicht in Echtzeit gegeneinander prüfen.
Was mich immer wieder zu dem Punkt zurückführt, ist: Ein System, das auf zwei unabhängig verifizierten Zuständen beruht — Slash auf der Bitcoin-Seite und Voting-Power auf der Chain-Seite — ist nur so stark wie der Code, der sie auch unter Edge-Case-Timing konsistent hält. Dieses Koordinationsproblem verschwindet nicht vollständig nur deshalb, weil genau diese eine Instanz gepatcht wurde.#baby $BABY
@BabylonLabs_io #crypto #Binance
Zwei dieser Findings sitzen direkt nebeneinander im Bericht und beschreiben dieselbe zugrunde liegende Lücke aus zwei unterschiedlichen Blickwinkeln.
Ein Finality-Provider, der „geslashed“ wird, soll seine Voting-Power sofort verlieren. Aber der Code prüfte in einem Ausführungspfad den Slash-Status und verpasste ihn in einem anderen. Wenn ein Provider geslashed wurde, während eine BTC-Delegation noch ausstand, konnte diese Delegation später verarbeitet werden, ohne dass der Slash erneut geprüft wurde — wodurch der Provider wieder in die aktive Voting-Menge zurückversetzt wurde.
Das ist keine hypothetische Annahme, die jemand nachträglich konstruiert hat. Es ist ein dokumentierter Codepfad, mit den im Bericht exakt genannten Funktionen, und einem Fix, den Babylon Labs tatsächlich über zwei Commits ausgeliefert hat.
Es lohnt sich, einen Moment darüber nachzudenken, warum das überhaupt passiert. Babylons Kerndesign betreibt auf einer Seite den Slash-Status eines Providers und auf der anderen Seite den Delegations-Approval-Flow — beides parallel in getrennten Lifecycles. Meistens bleiben sie synchron. Dieses Finding zeigt, was in dem engen Zeitfenster passiert, in dem sie es nicht tun.
Eine passende Analogie: Ein Mitarbeitender bekommt seinen Ausweis wegen eines Sicherheitsverstoßes deaktiviert, aber eine separate Anfrage, ihm den Zugang zu einem Gebäude zu gewähren — eingereicht vor der Deaktivierung — wird danach fertiggestellt und reaktiviert den Ausweis, weil die beiden Systeme nicht in Echtzeit gegeneinander prüfen.
Was mich immer wieder zu dem Punkt zurückführt, ist: Ein System, das auf zwei unabhängig verifizierten Zuständen beruht — Slash auf der Bitcoin-Seite und Voting-Power auf der Chain-Seite — ist nur so stark wie der Code, der sie auch unter Edge-Case-Timing konsistent hält. Dieses Koordinationsproblem verschwindet nicht vollständig nur deshalb, weil genau diese eine Instanz gepatcht wurde.#baby $BABY
@BabylonLabs_io #crypto #Binance