Zcash został rozpracowany przez AI w ciągu jednego dnia, odkrywając śmiertelny błąd, który był ukryty przez 4 lata.
28 maja Anthropic wydał Claude Opus 4.8.
29 maja, jeden z badaczy użył go do przeprowadzenia automatycznego audytu i natrafił na poważnego buga w obwodzie Orchard Zcash –
ta sama moneta mogła być wydawana wielokrotnie, za każdym razem generując inny nullifier, a na łańcuchu nie było tego widać.
Mówiąc krótko, to było jak nieskończone drukowanie pieniędzy, a cechy prywatności zerowej wiedzy stały się wręcz peleryną niewidką.
Ten błąd został zakopany od dnia aktualizacji NU5 w maju 2022 roku, przez ponad cztery lata nikt go nie zauważył. Wcześniejsze ręczne audyty i różne przeglądy zupełnie tego nie uchwyciły.
Przyczyną był w zasadzie mały problem: w Halo2 gadget do mnożenia skalarnego używał assign_advice()
bez dodania ograniczeń, a złośliwy dowodzący mógł potajemnie wymienić punkt bazowy, fałszując legalny dowód. Naprawa to kwestia jednej linii kodu – wystarczy zmienić assign_advice na copy_advice.
Ale proces był emocjonujący:
- Badacz odkrył błąd w piątek wieczorem, a w nocy wysłał Signal do głównych deweloperów Zcash
- W sobotę rano sam stworzył pełne PoC za pomocą Claude, podbijając saldo Orchard w regtest do 10 milionów ZEC
- Zespół Zcash w poniedziałek wieczorem pilnie zamknął Orchard przez soft fork
- We wtorek naprawa została wdrożona, a funkcjonalność została ponownie uruchomiona.
Interesujące jest to, że ten badacz wcześniej używał Opus 4.7 do podobnego audytu, ale nie znalazł nic. Dopiero 4.8 zadziałał. A AI
po odkryciu wciąż miało wątpliwości, myśląc: "ten kod musiał być audytowany, prawda?" i zastanawiało się, czy w to uwierzyć.
Cała raport dał dwa odczucia:
1. Audyty bezpieczeństwa kontraktów przez AI to już nie jest tylko mrzonka – to naprawdę działa
2. Nawet jeśli kod był audytowany przez ludzi wiele razy, mogą się tam nadal kryć rzeczy
Posiadacze ZEC nie mają się co martwić, naprawa została już zakończona.
#Zcash #ZEC #Claude #安全审计