am 23. April 2026Ein Angreifer konnte einen Fehler in einem der Smart Contracts von Aktionariat finden und ausnutzen - dem Brokerbot-Vertrag -, der es unter bestimmten Voraussetzungen ermöglichte, die Stablecoin-Reserve eines Brokerbot effektiv zu entleeren.
Vier Emittenten mit Brokerbot-Kontraktkonfigurationen, die diese Voraussetzungen erfüllen, waren betroffen. Insgesamt CHF 31'606 in Form von Frankencoin (ZCHF) vom Angreifer gestohlen wurde.
Aktionariat hat alle Verluste der vier betroffenen Emittenten erstattet. Der Fehler wurde gepatcht und neue PaymentHub- und Brokerbot-Verträge wurden an alle Emittenten ausgerollt. Die Konfiguration, die den Angriff ermöglichte, wurde auch für alle Emittenten deaktiviert.
Obwohl die böswilligen Transaktionen die Interaktion mit dem Primärmarkt zum Kauf und Verkauf der tokenisierten Aktien der Emittenten beinhalteten, wurden keine Aktien gestohlen. Eigentums- und Aktionärsregister sind daher nach wie vor vollständig intakt.
Es waren keine Investoren oder Aktionäre betroffen.
Fakten
| Ausnutzungsdatum | 23.04.2026 |
| Betroffene Emittenten | 4 |
| Gestohlener Betrag | CHF 31'606 |
| Status | Aufgelöst. Die Emittenten wurden vollständig erstattet und der Bug wurde gepatcht. |
Was geschah
Der Fehler wurde durch eine fehlerhafte Berechnung in einem der intelligenten Verträge von Aktionariat verursacht, die es dem Käufer unter bestimmten Umständen und mit speziell konstruierten Transaktionen ermöglichen, einen weiteren Anteil zu erhalten, als er aufgrund des gezahlten Preises hätte erhalten sollen. Dies war nur in Konfigurationen mit einem positiver Preisanstieg, wo der Aktienkurs mit jedem Kauf monoton ansteigt.
Um diese Bedingungen zu erreichen, musste ein Angreifer Unternehmen finden, in denen:
- Rückkäufe auf dem Primärmarkt ermöglicht wurden,
- eine Preiserhöhung von ungleich Null festgelegt wurde und
- Es gab mindestens einige ZCHF Saldo auf dem Brokerbot Vertrag.
Der Angreifer nutzte dann den Fehler aus, indem er die gleiche fehlerhafte Berechnung mehrmals in einer einzigen Transaktion überflog. In jeder Iteration wird der Angreifer:
- Aktien mit einem ganz bestimmten Betrag gekauft, wodurch eine Aktie mehr als bezahlt erhalten wird; und
- verkaufte alle Aktien zurück, einschliesslich der zusätzlichen, wodurch der Preis einer Aktie in ZCHF ausgeglichen wurde.
Die Schleife wurde fortgesetzt, bis die gesamte ZCHF-Reserve des Brokerbot-Vertrags aufgebraucht war. Am Ende der Transaktion wurde das gestohlene ZCHF sofort in die ETH umgewandelt und abtransportiert. MEV-Bots wurden verwendet, um den Angreifer zu verschleiern und öffentliche Transaktionspools zu vermeiden.
Nach der Entdeckung des Fehlers, Aktionariat, parallel:
- die zugrunde liegenden Ursachen, die Voraussetzungen und die betroffenen Emittenten ermittelt haben oder werden könnten;
- berechnete die Auswirkungen und entschied, dass alle Verluste durch Aktionariat abgedeckt würden;
- mit der Implementierung und dem Ausrollen eines Patches und einer Konfiguration begonnen hat, die den Fehler beseitigt und die fehlerhafte Konfiguration unmöglich macht; und
- Beginn der Planung der direkten Kommunikation mit den betroffenen Kunden.
Technische Wurzelursache
Die falsche Berechnung ist in getShares, eine Funktion, die die Anzahl der zu erhaltenden Aktien für einen bestimmten ZCHF-Betrag berechnet:
function getShares(uint256 money) public view returns (uint256) {
uint256 currentPrice = getPrice(); uint256 min = 0; uint256 max = money / currentPrice; while (min < max){
uint256 middle = (min + max)/2;
uint256 totalPrice = getPrice(currentPrice, middle); if (money > totalPrice){
min = middle + 1;
} else {
max = middle;
}
}
return min;
} Die problematischen Teile sind oben hervorgehoben. Am wichtigsten ist, wenn die gegebene Geld über dem berechneten Wert liegt Gesamtpreis, die Schleife verlässt mit min = Mitte + 1, obwohl die zusätzliche Zahlung weit unter dem Preis einer vollen Aktie liegen könnte. Beachten Sie, dass dieser Pfad nur verwendet wird, wenn ein Preisinkrement festgelegt ist.
Der PaymentHub-Vertrag, der den Handel auslöste, überprüfte auch nicht das zurückgegebene Ergebnis - zum Beispiel, indem er einfach durchsetzte, dass getBuyPrice(Aktienbetrag) < insgesamt bezahlt - was die Ausnutzung der fehlerhaften Berechnung verhindert hätte.
Abhilfe
- Aktionariat erkannte die aus den Brokerbot-Verträgen gestohlenen Beträge und erstattete den betroffenen Emittenten vollständig. Infolgedessen hat kein Emittent Geld verloren.
- Ein aktualisierter Brokerbot-Vertrag wurde entwickelt und bereitgestellt, der den Berechnungsfehler behebt.
- Ein aktualisierter PaymentHub-Vertrag wurde entwickelt, bereitgestellt und durch Multisig-Vorschläge an Emittenten ausgerollt. Der neue PaymentHub-Vertrag überprüft die Sanität der Zahlungen und blockiert Fehler nach und nach.
- Rückkäufe wurden für die gefährdeten Brokerbots deaktiviert. Beachten Sie, dass das Deaktivieren von Rückkäufen ohne das PaymentHub-Update einem Angreifer immer noch erlauben würde, eine weitere Aktie zu erhalten als beabsichtigt. Allerdings sind On-Chain-Angreifer meist nicht daran interessiert, Aktien zu stehlen oder Token zu halten; Sie führen nur Transaktionen aus, deren Erlöse sofort liquidiert werden können, so dass die Deaktivierung von Rückkäufen den Angreifer effektiv blockiert.
- Neue Direct Investment Verträge von Aktionariat haben nicht die Rückkauffunktion, so dass der gesamte problematische (aber jetzt feste) Block bereits irrelevant ist und entfernt wurde.
Lektionen gelernt
Die grösste Überraschung und Lektion für uns war, einen Fehler mit kritischen Auswirkungen in Verträgen zu finden, die mehrfach Sicherheitsüberprüfungen und formelle Audits bestanden haben. Dieser Fehler war seit mindestens fünf Jahren vorhanden und entging irgendwie der Kontrolle aller unserer intelligenten Vertragsentwickler, sowohl technischer Mitbegründer als auch zwei bezahlter Audits. Das lässt uns leider den Wert der Audits, die wir von unseren Auditoren erhalten haben, in Frage stellen.
Die Tatsache, dass der Fehler fünf Jahre lang schlummerte und erst jetzt wieder auftauchte, deutet auf Angreifer hin, die KI-gestützte Tools verwenden, die eine breitere, automatisierte Exploit-Suche ermöglichen. Ein erheblicher Anstieg der Exploits in der Krypto-Szene im Allgemeinen wurde beobachtet, was strengere Sicherheitspraktiken und den Einsatz von KI für die Verteidigung und kontinuierliche Überprüfung erfordert.
Bestätigungen
Wir übernehmen die volle Verantwortung für diesen Vorfall und entschuldigen uns aufrichtig bei allen betroffenen Emittenten. Wir können nur dadurch erleichtert werden, dass wir in der Lage waren, alle Emittenten zu vervollständigen, den Schaden zu analysieren und einzudämmen, die betroffenen Verträge so schnell wie möglich zu aktualisieren und diesen Vorfall als gelöst zu markieren, ohne dass unsere Emittenten oder Investoren Verluste erleiden.
Vollständige Liste der bösartigen Transaktionen
Die vollständige Liste der bösartigen Transaktionen ist unten für vollständige Transparenz zur Verfügung gestellt. Jeder Eintrag verlinkt auf die Transaktion auf Etherscan.
- 0x3da650003c91c0f0448db3061388fd180c83e0afc650ae7ccb4b61f1145b1993
- 0x6a20cccec96cacbdec2b240a4f9329d607d247cb8b8205472f494c31f0fd54fd
- 0x79e4adfa9a8afa1ddcf99fddbe713eb47822e9fe1f1439cdabe43e50cf136365
- 0xcc4b49fa2b5e65850961ea1d7cbb3511b0c4c492c920e38e8c8caebf685a8bce
- 0x4121a5144b59cb7c3b819ed1ad0b70cf6bcb83588bbd79264f048ca0a8824eea
- 0x31a61622c822b743065cfaaec873c8dcf60e92797da1d2750ecada96c394f7c7
- 0x428065e30818b34c08a7dc9498d22f022a0f8c210afb4c94e59b00b3eb665df0
- 0x97e51a45b18349e9c7b286404fb53ecfd1995b25183a6ffc9323ff84559af02d
- 0x8a0b1309509a59c3deffa6708f9a50fc1b06575720d01f04ddd451f5f02f4912
- 0xa0013c77841955e2fe2a1109711fe3883088d33bbc1a425df3fc7d82cff00ad4
- 0x21ed5bd91f4c4f5d20d3fd919f6907f0183175f211b3821ad723d453b6141bd6
- 0x62826f656a48c7f9dc0d63cafea2b0a129516b4f321f57d97edbde28a2e26789
- 0x2c64144449273a05ddefa2f5f1edd9a17cabc7a295493d3df75b0ad2b122b261
- 0xd3678399c89b39bf6fbeb6fe18e8144518d4375c8038fe4e0db9f199227e748a
- 0x060c500df97031b30344e9ab42e478d86e35c3d445c42d3c378719764ca6dd46
- 0x88c5021e4570ec6f6c4a3c7d6577a0b61ff241c82612e0db597f206579a0cf49
- 0x522b0d4cb01a0bdaeb7eaf83a25c65bb04189b73c0882101539da269c8bf274f
- 0x01b5b03f514c5bde4c1ab074a980f25b498425c6d095b9717eaa8baec5af1cbb
- 0xa6e6aef25e6cb47a1cdaca79bb5b9065a57ae1aacf7b66b1af5a0ce3e901b379
- 0x7103d1cff801ee3b47a9ad94d5662bb33c578ac87cb5540e323fbbabbbada107
- 0x591f92ae130b471967852e44e313e592a2c3952201d28fc5623c3b7acf6e0721
- 0x03dc52dc2ef5636bc743c0c483fa5dbbeb76987d503788d5d4ade27ba4248b99
- 0xc48829bf264ce902d4c9ae9b21dfdf5fed871c161ae11bb81c999460f24321e4
- 0x2cbd3ca44907a9e5be1548a13dd516e7e9bb027b7d6a8df7c93a495144d6af23
- 0x57c6816bb44a5f0b43665f9a43c9170ef01740b84f5bd46a2ebcd1707c1a1b87
- 0xdd661886937547428bbf1c6de48bba5fd3efb88b2c0a99beb604984a001e7d6f
- 0xef0a00e196b35208ecc8155a73e387e274fd3a99e1c84675ecb41c4e38f24ccd
- 0x7154c6546220abd7f8ffc0225898becea4982dd1ffea26d571d17bf0dc3989cd
- 0x7476463d1d90e70c28f283658741ae1554b4a2e58ad08d3697c5dfd1ab64f691
- 0x2ae251fe4a44528e0ef5f03838e6e9d724db18a12930472b07615dbdd3eacf67
- 0x89e4ce31724c061e9a01084d20abbf1ddd1ea4aa421b7d797847c6f062f9c073
- 0x728a1855d18833159a40f41114296b334fc7ae16a85c0408eba1d3c2e8553a0d
- 0x7859465d6888cb88b485c85315363698196f031f89132ccc2898a75fa9a89fa5
- 0x98b9064183a258f8c37c43c2c20eab52a1d0ee948718f10aa18ff0e3955807bb
- 0x18b0c2e3bbda38b51abbcea0ca7a8694a92c5dc66bd77372f5499d1e3ddca805
- 0xec23cfd15c1a45d7e48c86a94c4dec417a11df05a9b8824a45e60dd715a23bc2
- 0x79fdc34f50a8867b7e67e25fe4953a7725b4439aeac4f0e4e1e20018d2ace564
- 0x4771e1970ff936b692c8f685fcb604611876428aaa1ab1ab6ace11441cbfc26e
- 0x6061cfe75a67a54f26868701119906ecf4f7f626e2c9e6fb11430b6745f51cc8
- 0xead00d973e111b08a07bdf4c7f6921dc47258ed2f45b543dd5ee4bde977958d6
- 0x3d529aba76f0130c9d7c11c0fdeda183154e187fadf98183974aca70b7aed82a
- 0xce0e9fe255fd20bcda2f94de18641125d2d4690d9d714494b416ba2a3f6b53fd
- 0xd97370a3010f56170d538046d21c3030bcb09b0bf06cb8924cf30649aa97bc1f
- 0x2a132ec9f8cc47ca50a4b1576bca855dcdd72e11ef2cca29a64804fccd40d4df
- 0x70c269301a27377e9e67d2ec73daeb38e965e02632cf413f3dcff0858f8a4514
- 0x2f1362ae67e530a522c2cfa0586edc3e0726339799dcd02f68213b60b5a45930
- 0x47318425e74a717cec0604938f07b72f7d54589e49cfeae518afba896ceb4539




