Polkadot-Vorfallbericht: Fix aus dem Juni verpasste das Release, Angriff kostete 1,38 Mio. $
Parity hat am 2. November einen Bericht zum XCM-Vorfall auf Polkadot Asset Hub vom 24. bis 26. Oktober veröffentlicht. Ein Angreifer nutzte einen Fehler im XCM-Executor, um die verbuchte Ausgabemenge von dotUSD zu senken, ohne ein Kontoguthaben zu verändern. Da die Börse des Hubs die im DOT/dotUSD-Pool angerechnete dotUSD-Menge auf das Minimum aus Poolbestand und verbuchter Gesamtmenge begrenzte, verzerrte die zu niedrige Gesamtmenge den Poolpreis und erlaubte Geschäfte zu einem künstlichen Kurs. Der geschätzte Verlust lag bei rund 1,381 Millionen Dollar in DOT. Einziger Liquiditätsgeber im Pool war die Polkadot Treasury; laut Parity verloren Nutzer nichts, und dotUSD blieb voll gedeckt, Prägen und Einlösen gegen USDT im Verhältnis 1:1 liefen weiter.
Aufschlussreicher ist der zeitliche Ablauf. Der Fehler, ein Pfad über WithdrawAsset, der Belastungen von Konten bei einem Fehler zurücknahm, die Änderung der Gesamtmenge aber behielt, wurde im Juni über Paritys Bug-Bounty gemeldet und mit Pull Request 11910 behoben. Er galt als mittelschwer, weil es dotUSD noch nicht gab. Der Fix verpasste den Stichtag für stable-2606, erreichte die betroffenen Produktions-Runtimes nie und kam erst mit stable-2609. Am 20. Oktober verwies der ursprüngliche Melder in einem öffentlichen Forenkommentar auf den Pull Request; laut Parity verstieß das gegen die Programmbedingungen und könnte Angreifern genug Hinweise gegeben haben. Snowforks Stopp der eigenen Relayer unterbrach den Angriff am 24. Oktober, am selben Tag wurde ein Fix über OpenGov vorgeschlagen, doch am 26. Oktober betrieb der Angreifer einen eigenen Relayer, rund sechs Stunden bevor das Upgrade in Kraft trat.
Parity nennt drei Bereiche für Änderungen: Funde neu bewerten, wenn neue Funktionen ihre Auswirkung verändern; Backports vereinfachen und prüfen, ob Korrekturen tatsächlich in den laufenden Runtimes angekommen sind; und die Ausgabemengen von Assets auf ungewöhnliche Änderungen überwachen. Zudem werden bestehende Sicherheitsmeldungen mit Blick auf dotUSD neu eingestuft.

Was das bedeutet
Schwierig war nicht der Angriff, sondern der Prozess. Ein bekannter Fehler mit fertigem Fix blieb aktiv, weil die Schwere einmal bewertet wurde und Releases nicht prüften, was tatsächlich ausgerollt war. Für jede Chain, die neue Assets auf alten Code setzt, gilt die Lehre, die Parity für sich zieht: Eine Schwereeinstufung ist eine Aussage über das System, wie es war, und sie verfällt, wenn sich das System ändert.