این آخر هفته، یک مهاجم بدون در اختیار داشتن کلید خصوصی کیف پول پل KRC-20 کاسپا، ۱۸۶.۴ میلیون ZEAL و ۵۴.۴ میلیارد NACHO را از آن خارج کرد، سپس توکنها را از طریق شبکههای لایه دو (L2) بازچرخانی کرد و در استخرهای نقدینگی فروخت. بخش عجیب ماجرا این است که خودِ کاسپا هک نشده بود. پنج تراکنش معتبر یک ایندکسر خارج از زنجیره را فریب داد تا انتقالهایی را به رسمیت بشناسد که هیچکس واقعاً آنها را امضا نکرده بود؛ نتیجه این شد که توکنهای بریجشده بدون پشتوانه ماندند و برخی استخرها تا ۹۹.۶٪ از ارزش سمتِ KAS خود را از دست دادند.
دور زدن امضای ایندکسر KRC-20 در Kasplex باعث تخلیه دو استخر توکن شد

نکات کلیدی
- یک مهاجم ۵۴.۴ میلیارد NACHO را بدون در اختیار داشتن کلید خصوصی کیف پول پل جابهجا کرد.
- استخرهای Zealous Swap پس از انتقالهای جعلشده، ۹۴٪ تا ۹۹.۶٪ از ارزش سمتِ KAS خود را از دست دادند.
- Igra خروجهای کلیدی را متوقف کرد، زیرا اپراتورهای KRC-20 برای اعمال وصله و ایندکسمجدد سیستم آماده میشوند.
پنج تراکنش، بدون کلید خصوصی
قرار است کلید خصوصی مرز بین مالکیت کریپتو و صرفاً دانستن محل نگهداری آن باشد. در ۲۰ سپتامبر، فردی راهی برای دور زدن این فرض درباره توکنهای KRC-20 پیدا کرد، بدون اینکه اصلاً زنجیره پایه کاسپا را بشکند.
مهاجم ۱۸۶,۴۲۵,۲۵۹ ZEAL و ۵۴,۳۹۷,۹۸۳,۲۴۶ NACHO را از یک آدرس امانیِ پل جابهجا کرد، با اینکه کنترل کلید خصوصی آن را نداشت. سپس این توکنها بهعنوان واریزیهای عادی پل به همان آدرس امانی ارسال شدند، روی لایه EVM آزمایشگاههای Igra و Kasplex L2 ضرب (mint) شدند و در استخرهای نقدینگی Zealous Swap دامپ شدند.
تا وقتی گردوغبار ماجرا نشست، موجودیهای L2 مهاجم از ZEAL و NACHO خالی شده بود، در حالی که استخرهای تحتتأثیر بین ۹۴٪ تا ۹۹.۶٪ از ارزش سمتِ KAS خود را از دست داده بودند. نکته اینجاست: لایه یک (L1) کاسپا دقیقاً همان کاری را انجام داد که باید انجام میداد.
امضای خالی که باز هم قبول شد
مالکیت توکنهای KRC-20 مستقیماً توسط اجماع کاسپا اعمال نمیشود. دستورالعملهای توکن داخل تراکنشهای کاسپا سوار میشوند و یک ایندکسر خارج از زنجیره Kasplex آن دستورالعملها را میخواند و تعیین میکند چه کسی مالک چه چیزی است. معمولاً یک انتقال KRC-20 شامل یک کلید عمومی، دستورالعملهای توکن و یک امضای معتبر است. مهاجم همان ساختار آشنا را حفظ کرد، اما یک امضای خالی ارائه داد و بعد از OP_ENDIF یک OP_NOT اضافه کرد.

یک امضای خالی باعث میشود OP_CHECKSIG مقدار false برگرداند، نه اینکه تراکنش را بهطور کامل از کار بیندازد. OP_NOT اضافی آن نتیجه را دوباره به true برگرداند و کاسپا را با یک تراکنش معتبر تنها گذاشت. در لایه اجماع هیچ چیز از مسیر خارج نشده بود. اما داستانِ ایندکسر متفاوت بود. ایندکسر پوشش (envelope) KRC-20 را تشخیص داد، اما لازم ندانست اسکریپت دقیقاً با قالب کانُنیکال مطابقت داشته باشد. در نتیجه انتقال جعلشده را بهعنوان انتقال معتبر اعتباردهی کرد. حتی API خودِ Kasplex هم در اولین تراکنش جعلی ZEAL مقدار opAccept: 1 را برگرداند.
هر کسی میتوانست جعل را بسازد
بدترین پیچش ماجرا این بود که مهاجم نیازی به کشف یک اعتبارنامه مخفی نداشت. یک آدرس استاندارد کاسپا کلید عمومی لازم برای ساخت عملیات جعلی KRC-20 را آشکار میکند. یعنی انتقال توکنها به آدرس دیگر مشکل بنیادی را حل نمیکند. تا وقتی ایندکسر وصله نشود و تاریخچهاش ایندکسمجدد نشود، از نظر تئوری میتوان همین نقص را علیه موجودیهای KRC-20 در جاهای دیگر هم بهکار برد.
پنج تراکنش انتقالهای ZEAL و NACHO را جعل کردند. در مقابل، نه برداشت کوچکِ یکواحدی واقعاً توسط امانتداری امضا شده بودند و به نظر میرسد پروبهایی بودهاند برای آزمودن اینکه مسیر خروج کار میکند یا نه. جالب اینکه تراکنشهای معتبر همانهای کوچک بودند. کیف پول امانی حدود ۵۰ توکن KRC-20 دیگر را نگه میداشت. مهاجم دو مورد را انتخاب کرد.
توکنها هنوز هستند، اما پشتوانه نیست
صبح یکشنبه، Igra گفت کل موجودی ZEAL و NACHO کیف پول امانی برداشته شده است و ۹۷,۶۵۱,۲۱۲ ZEAL و ۴۲,۵۷۰,۸۷۹,۹۰۸ NACHO را روی شبکههای لایه دو بدون پشتوانه کامل L1 باقی گذاشته است. ۴.۵ میلیارد NACHO دیگر هم در L1 نزد مهاجم باقی ماند.
Igra خروجهای iKAS به کاسپا L1 و انتقالهای Hyperlane را متوقف کرد، و به کاربران هشدار داده شد از بریج کردن توکنهای KRC-20، خرید ZEAL یا NACHO در صرافیهای غیرمتمرکز (DEX) لایه دو، یا افزودن نقدینگی به استخرهای تحتتأثیر خودداری کنند. گفته شد KAS بومی، اجماع کاسپا و داراییهای Igra که توکنهای بریجشده KRC-20 نبودند، تحتتأثیر قرار نگرفتهاند.
صرفاً اصلاح نرمافزار بهتنهایی این آشفتگی را پاک نمیکند. Zealous Swap میگوید اپراتورها باید ایندکسر را وصله کنند و تاریخچهاش را ایندکسمجدد کنند، امضاهای خالی، تگهای معیوب و اسکریپتهایی را که بعد از OP_ENDIF ادامه پیدا میکنند رد کنند. در همین حال، Nacho the Kat میگوید جامعه قصد دارد به سمت KCC-20 حرکت کند؛ استانداردی که برای قرار دادن قوانین توکن در اسکریپتهایی طراحی شده که توسط خودِ شبکه اعمال میشوند.
این مسئله پس از موجی از سوءاستفادهها، باگها، هکها و نشتهای داده در چند هفته گذشته رخ میدهد. روز شنبه، ارائهدهنده زیرساختهای حضانتی و غیرحضانتی شبکه لایتنینگ Blink Wallet افشا کرد که «چند ده» حساب حضانتی تخلیه شدهاند. شرکت امنیت سایبری DCENT نیز این هفته شاهد تخلیه DCENT App Wallets بود. این زمانبندی در حالی است که حملات امنیت سایبری تشدید شدهاند و برخی مظنوناند هوش مصنوعی به این موجِ بهرهبرداران کمک میکند.
این مقاله با استفاده از هوش مصنوعی از انگلیسی ترجمه شده است. نسخه اصلی انگلیسی منبع معتبر است؛ ترجمههای خودکار ممکن است حاوی نادرستیهایی باشند، بهویژه در اصطلاحات حقوقی و قانونی.











