Solidity naprawia błąd optymalizatora Yul dotyczący wersji 0.8.19–0.8.37

W wersji 0.8.38 Solidity naprawiono błąd o niskim poziomie zagrożenia w optymalizatorze Yul. Błąd dotyczy kontraktów skompilowanych z włączonym optymalizatorem Yul w wersjach Solidity 0.8.19–0.8.37. W określonych warunkach nieaktualne dane pomocnicze mogą sprawić, że optymalizator Yul potraktuje dwa miejsca w pamięci lub pamięci trwałej jako odrębne, mimo że w rzeczywistości się pokrywają. W efekcie kontrakt może zwrócić nieaktualną wartość albo pominąć wymagany zapis. Problem zgłosił Daniel Boye, a później Surya Prakash Akula wykazał, że może on wystąpić w zwykłym kodzie Solidity, bez użycia wstawek assembly. Kontrakty kompilowane z użyciem `--via-ir` mogą być narażone w szerokim zakresie; w przypadku domyślnego potoku EVM assembly ryzyko jest mniejsze. Błąd nie występuje, gdy optymalizator Yul jest wyłączony. Analiza przeprowadzona przez Solidity, obejmująca około 283 000 zweryfikowanych kompilacji `via-ir` oraz 607 000 kompilacji EVM assembly, nie wykazała różnic w bytecode po porównaniu kompilacji z poprawką i bez niej. Zespół twierdzi, że sugeruje to rzadkie występowanie błędu, ale nie gwarantuje, że nie dotyczy on żadnego wdrożonego kontraktu. Deweloperzy powinni zaktualizować kompilator do Solidity 0.8.38 lub nowszej wersji oraz ocenić wdrożone kontrakty skompilowane przy użyciu podatnych wersji. Dla traderów jest to ukierunkowane ostrzeżenie dotyczące niezawodności smart kontraktów, a nie dowód na szeroko zakłócenia w sieci Ethereum lub na rynku.
Neutral
Ogłoszenie jest komunikatem o bezpieczeństwie i aktualizacji dla deweloperów, a nie dowodem na wykorzystanie luki, awarię sieci czy utratę środków. Solidity ocenia błąd jako mało poważny i informuje, że analiza prawie 890 000 zweryfikowanych kompilacji nie wykazała różnic w kodzie bajtowym między kompilacjami z poprawką i bez niej. Problem wymaga również spełnienia określonych warunków związanych z optymalizatorem i ponownym przypisaniem adresów, co ogranicza jego prawdopodobny zasięg. Z tych względów natychmiastowy, szeroki wpływ na ETH lub ceny na całym rynku kryptowalut jest mało prawdopodobny. W krótkim terminie traderzy mogą śledzić komunikaty projektów korzystających z Solidity 0.8.19–0.8.37, zwłaszcza tych kompilowanych z optymalizatorem Yul lub opcją `--via-ir`. Jeśli powszechnie używany protokół poinformuje o podatnych na atak wdrożonych kontraktach lub stratach wynikających z ich wykorzystania, zaufanie może osłabnąć, co może wywołać sprzedaż tokenów konkretnych projektów albo tymczasowy wzrost zmienności. Artykuł nie informuje o takim incydencie, dlatego nie ma podstaw do szerokiej, pesymistycznej interpretacji. W dłuższej perspektywie poprawka w Solidity 0.8.38 i zalecane kroki weryfikacyjne powinny ograniczyć utrzymujące się ryzyko, w miarę jak zespoły będą aktualizować i testować wdrożenia objęte problemem. Podobnie jak w przypadku innych ujawnień podatności kompilatorów, kluczowymi sygnałami rynkowymi są potwierdzone wykorzystanie luki, TVL dotkniętych protokołów, awaryjne wstrzymania działania i działania naprawcze projektów — a nie sam fakt istnienia problemu kompilatora, dla którego udostępniono już poprawkę. Ogólnie wiadomość jest neutralna dla kierunku rynku, ale istotna dla monitorowania ryzyka związanego z inteligentnymi kontraktami.