Cardano үшін Wanchain көпірінің сыни бұзылуы: 515 млн NIGHT токені ұрланды
Cardano-ны BNB Chain-мен байланыстыратын Wanchain кроссчейн-көпірінің эксплойты қауымдастықты дүр сілкіндірді. Шабуыл нәтижесінде өтімділік пулынан шамамен 515 миллион NIGHT токені шығарылды. Менің бағалауымша, оқиға кезінде бұл сома нарықтық жағдайларға байланысты $9 мен $13 миллион аралығында болды.
Бұл оқиға — кроссчейн-көпірлерінің DeFi экожүйесіндегі ең осал буын болып қала беретінінің тағы бір қатаң ескертуі. Техникалық мәліметтер мен салдарларды қарастырайық.
Оқиғаның себебі: TreasuryCheck валидаторындағы баг
BlockSec қауіпсіздік мамандары жүргізген алғашқы тергеу мәселенің түбірін анықтады — TreasuryCheck валидаторында қол қойылған хабарламаның инъективті емес кодталуы. Валидатор — бұл операциялардың заңдылығын тексеруге жауапты смарт-келісімшарт. «Инъективті емес кодтау» термині әртүрлі кіріс деректер жиынтығы бірдей шығыс мәнге әкелуі мүмкін екенін білдіреді. Қарапайым тілмен айтқанда, жүйе әртүрлі операцияларды ажырату қабілетін жоғалтады, бұл шабуылға жол ашады.
Осы осалдықтың механизмі келесідей болды:
- Қол қойылған хабарлама AppendByteString функциясы арқылы айнымалы ұзындықтағы 14 өрістің (redeemer) «шикі» конкатенациясы арқылы қалыптастырылды, бөлгіштер мен ұзындық префикстерінсіз. Redeemer — бұл транзакцияның заңдылығын растау үшін оған қоса берілетін деректер жиынтығы.
- Осыған байланысты өріс мәндерінің әртүрлі жиынтығы бірдей байт жолын бере алатын.
- Бірдей жол бірдей хешке (цифрлық ізге) және, тиісінше, қайта пайдалануға жарамды бірдей қолтаңбаға әкелетін.
BlockSec мұны Plutus V2 ончейн-байткодын декомпиляциялап және эксплойт транзакциясынан redeemer-ді декодтау арқылы растады. Кодта SerialiseData кірістірілген функциясы болған, бірақ ол қолтаңба үшін хеш құру кезінде емес, тек output-datum сәйкестендіру кезінде қолданылған. Sha3_256(SerialiseData(...)) қолдану CBOR кодтауында өрістердің бірмәнді шекараларын қамтамасыз етіп, осы кластағы шабуылдардың алдын алар еді.
Елестетіп көріңіз: директор «12345» цифрлық комбинациясын мақұлдап, оны қолтаңбасымен бекітеді. Тексеруші бағдарлама комбинацияны өрістерге бөледі: «кімге» = 12, «қанша» = 345. Бірақ комбинацияның өзінде бөлгіш жоқ. Шабуылдаушы қолтаңбаны бұрмаламайды, тек көрінбейтін шекараны жылжытады: «кімге» = 123, «қанша» = 45. Қолтаңба жарамды болып қалады, ал алушы мен сома өзгереді. Дәл осыған шабуыл негізделген.
Салдарлар және нарықтың реакциясы
Шабуылдаушылар осы осалдықты пайдаланып, токендердің заңсыз эмиссиясы үшін хабарламаларды жасады, содан кейін ұрланған NIGHT-ті Cardano желісінде ADA-ға айырбастады. Wanchain командасы тергеу жүргізу үшін көпірді жедел ажыратып, толық ашықтықты уәде етті.
NIGHT токені — құпиялылыққа бағытталған және Cardano-ның артында тұрған Input Output (IO) қолдауымен дамытылатын Midnight жобасының жергілікті активі. Нарықтың реакциясы найзағайдай жылдам әрі қатал болды: NIGHT бағасы бір тәулік ішінде 30%-дан астамға құлдырап, шамамен $0,016 тарихи минимумын жаңартты.
Midnight Foundation қауымдастықты оқиға Wanchain көпірінің шегінде оқшауланғанына және Midnight желісінің өзіне, оның протоколына, валидаторларына және негізгі инфрақұрылымына әсер етпейтініне сендіруге асықты. Олар мәселе NIGHT активінде немесе Midnight блокчейнінде емес, үшінші тарап инфрақұрылымында екенін атап өтті.
Аналитикалық қорытынды: Бұл оқиға — қауіпсіз кодтау стандарттарын елемеудің салдарынан мүмкін болған «қолтаңбаны қайта пайдалану шабуылының» классикалық мысалы. Ол Cardano немесе Midnight-ды жоққа шығармайды, бірақ барлық кроссчейн-шешімдерді әзірлеушілер үшін маңызды сигнал болып табылады. Көпірлердің қауіпсіздігі бірнеше есе жоғары болуы керек, әйтпесе біз мұндай күйреулерді әрі қарай да байқаймыз. Wanchain мен NIGHT токеніне деген сенімді қалпына келтіру енді ұзақ әрі ауыр процесс болады.