Stary kontrakt Aztec Connect ponownie zwrócił uwagę na znane ryzyko DeFi: porzucona infrastruktura nie przestaje być niebezpieczna tylko dlatego, że produkt nie jest już aktywny.
W sieci pojawił się wpis badacza bezpieczeństwa dotyczący możliwego exploita wpływającego na Aztec Connect, z którego niezmiennego smart kontraktu miało zostać przelane około 2,1 miliona dolarów. Szczegóły wymagają jeszcze ostrożnej weryfikacji, ponieważ pierwszym źródłem jest ujawnienie przez badacza, a nie pełne post-mortem. Jednak szerszy problem jest już wystarczająco jasny: stare kontrakty DeFi mogą pozostawać aktywne, zasilone funduszami i podatne na ataki długo po tym, jak większość użytkowników przestała o nich myśleć.
W przypadku zwykłego oprogramowania wycofany produkt zazwyczaj zanika. Użytkownicy przestają go pobierać, firmy przestają go wspierać, a w końcu znika w tle.
DeFi nie działa w ten sposób. Smart kontrakt może pozostawać w łańcuchu bloków bezterminowo. Jeśli przechowuje środki lub ma jakąkolwiek drogę do środków, nadal może być celem ataku. Front end może zniknąć. Zespół może się przenieść. Dokumentacja może nakazywać użytkownikom wypłatę środków. Nic z tego nie ma znaczenia dla atakującego analizującego sam kontrakt.
Przypadek Aztec Connect jest szczególnie niepokojący, ponieważ kontrakt był opisywany jako niezmienny. W DeFi niezmienność jest często traktowana jako zaleta. Oznacza to, że użytkownicy nie muszą ufać zespołowi, że nie zmieni zasad w późniejszym czasie.
Jednak niezmienność eliminuje również opcje awaryjne.
Jeśli aktywny kontrakt ma problem i nie pozostała żadna kontrola administracyjna, zespół może nie być w stanie go wstrzymać, zaktualizować ani załatać. To może sprawić, że użytkownicy będą zdani na to, czy środki zostały już wypłacone i czy pozostała wartość może być chroniona innymi środkami.
To jest kompromis, z którym DeFi wciąż się zmaga. Możliwość aktualizacji tworzy ryzyko związane z zaufaniem i zarządzaniem. Niezmienność tworzy ryzyko związane z reakcją na incydenty.
Lekcja z tego zdarzenia nie brzmi po prostu „stare kontrakty są złe". Lekcja jest taka, że zamknięcia muszą być traktowane jak zdarzenia związane z bezpieczeństwem.
Odpowiedzialne wygaszanie powinno obejmować wielokrotne ostrzeżenia dla użytkowników, terminy wypłat tam, gdzie to możliwe, monitorowanie po zamknięciu, przejrzystą dokumentację oraz publiczną komunikację dotyczącą ryzyka. Jeśli w starych kontraktach pozostają znaczące środki, zespoły muszą zakładać, że atakujący nadal obserwują.
Dotyczy to w szczególności systemów prywatności, mostów, rollupów i systemów cross-chain, gdzie logika kontraktu może być bardziej złożona, a tryby awarii mniej oczywiste dla zwykłych użytkowników.
Dla użytkowników zasada jest prosta: nie pozostawiaj środków w wycofanych kontraktach, chyba że istnieje bardzo wyraźny powód.
Jeśli protokół nakazuje użytkownikom wypłatę środków, potraktuj to poważnie. Jeśli front end zostaje zamknięty, nie zakładaj, że ryzyko się skończyło. Jeśli kontrakt jest stary, nieaudytowany w obecnym stanie lub nie jest już monitorowany, bezpieczniej może być traktować go jako wrogą infrastrukturę.
Incydent Aztec Connect jest kolejnym przypomnieniem, że ryzyko DeFi ma długi ogon. Produkty mogą zniknąć z rynkowych rozmów, podczas gdy ich kontrakty pozostają w łańcuchu bloków, czekając, aż ktoś znajdzie kolejną słabość.
