EN
→ بازگشت به خبرخوان
شمارهٔ ۰۲۹۱ZK Tech۲ دقیقه۳ منبع

پچ zkVM که شناسه Guest را تغییر می‌دهد: اصلاح `sys_read` در RISC Zero به بازسازی نیاز دارد

انتشارهای ۲۷ اوت RISC Zero یک آسیب‌پذیری حیاتی حافظه در `sys_read` را برطرف می‌کنند. سیستم اثبات تغییر نکرده، اما توسعه‌دهندگان باید Guestهای آسیب‌پذیر را بازسازی و شناسه‌های image را به‌روزرسانی کنند.

اشتراک‌گذاری
فناوری صفر-دانش (ZK)
پچ zkVM که شناسه Guest را تغییر می‌دهد: اصلاح `sys_read` در RISC Zero به بازسازی نیاز دارد
تصویر: تولید هوش مصنوعی

آخرین پچ RISC Zero یادآوری می‌کند که یک برنامه zkVM فقط از verifier و مدار اثبات تشکیل نشده است. در ۲۷ اوت ۲۰۲۶، این پروژه برای شاخه‌های ۲.۳ و ۳.۰ برچسب‌های انتشار اصلاح‌شده‌ای منتشر کرد؛ پس از آن‌که یک مشکل حیاتی ایمنی حافظه در پلتفرم Guest برطرف شد.

این آسیب‌پذیری به نحوه مدیریت ورودی در Guest، هنگام درخواست داده از طریق sys_read، مربوط بود. طبق advisory امنیتی RISC Zero، Host می‌توانست پاسخی ساختگی ارائه کند که باعث نوشتن خارج از محدوده در یک محل دلخواه از حافظه Guest شود. این وضعیت می‌توانست به اجرای کد در Guest منجر شود و ادعای soundness را که Guest برنامه موردنظر را اجرا کرده است، تضعیف کند.

این اصلاح، محاسبات اشاره‌گر آسیب‌پذیر در کرنل سازگاری را با عملیات Slice در Rust جایگزین می‌کند. این advisory نسخه‌های risc0-zkvm برابر با ۲.۳.۲ و ۳.۰.۳ را اصلاح‌شده معرفی می‌کند و برای risc0-zkvm-platform نسخه ۲.۱.۰ یا بالاتر را مشخص می‌کند. برنامه‌هایی که از risc0-aggregation استفاده می‌کنند باید به نسخه ۰.۹ یا بالاتر مهاجرت کنند.

جزئیات عملیاتی از خود شماره نسخه مهم‌تر است. به‌روزرسانی وابستگی Host به‌تنهایی کافی نیست. توسعه‌دهندگان باید وابستگی‌های Guest را به‌روزرسانی کنند، Guest را دوباره بسازند و شناسه image حاصل را به‌عنوان یک artifact جدید در نظر بگیرند. مستندات RISC Zero توضیح می‌دهد که verifier آن‌چین، receipt را به image ID برنامه‌ای که اثبات شده متصل می‌کند. بنابراین Guest بازسازی‌شده به image ID جدیدی نیاز دارد که باید در تمام محل‌هایی که برنامه آن را بررسی یا ذخیره می‌کند، جایگزین شود.

حداقل بررسی لازم برای یک برنامه چنین است:

۱. همه فایل‌های Cargo.toml مربوط به Guest و lockfile workspace را برای risc0-zkvm، risc0-build و risc0-zkvm-platform بررسی کنید. ۲. در شاخه ۲.x، risc0-zkvm را به نسخه ۲.۳.۲ یا بالاتر و در شاخه ۳.x به نسخه ۳.۰.۳ یا بالاتر ارتقا دهید و نسخه build crate را با شاخه zkVM هماهنگ نگه دارید. ۳. اگر risc0-zkvm-platform وابستگی مستقیم است، آن را به نسخه ۲.۱.۰ یا بالاتر ارتقا دهید. ۴. Guest را بازسازی و image ID جدید را ثبت کنید. ۵. بررسی receipt و تمام تست‌های قراردادی را که image ID یا journal را مقایسه می‌کنند، دوباره اجرا کنید. ۶. اگر از aggregation استفاده می‌شود، risc0-aggregation را حداقل به نسخه ۰.۹ ارتقا دهید و deployment verifier مربوطه را بازبینی کنید.

یکی از بررسی‌های پیشنهادی در advisory این دستور است: cargo tree --depth 0 -p risc0-zkvm-platform --manifest-path path/to/methods/guest/Cargo.toml. خروجی باید نسخه اصلاح‌شده platform را نشان دهد. این بررسی، resolution وابستگی‌ها را تأیید می‌کند، اما جایگزین بازسازی Guest نیست.

مرز مهم دیگری نیز وجود دارد. RISC Zero می‌گوید سیستم اثبات و مدارها تغییر نکرده‌اند؛ بنابراین صرفاً به‌دلیل این پچ، proverها به مهاجرت پروتکلی نیاز ندارند. تغییر در کد اجرای Guest و کد سازگاری رخ داده است. بااین‌حال، برنامه‌هایی که image ID منتشر یا whitelist می‌کنند باید rollout در سطح برنامه انجام دهند، زیرا Guest بازسازی‌شده حتی با ثابت‌ماندن محاسبه موردنظر، هویت متفاوتی خواهد داشت.

این advisory در ۱ اکتبر ۲۰۲۵ منتشر شده است، درحالی‌که برچسب‌های انتشار اصلاح‌شده v2.3.2 و v3.0.3 در مخزن در ۲۷ اوت ۲۰۲۶ منتشر شده‌اند. این تفاوت تاریخ برای گزارش timeline رخداد مهم است، اما راهنمای فعلی ارتقا را تغییر نمی‌دهد: برنامه‌هایی که Guest آسیب‌پذیر دارند باید پیش از اتکا به receiptهای خود، با یک شاخه اصلاح‌شده بازسازی شوند.

برچسب‌هاZK TechzkVMRISC Zeroامنیت
منابع مستند۳ مرجع
  1. [۰۱]Arbitrary code execution in guest via memory safety failure in `sys_read`github.com
  2. [۰۲]RISC Zero Releasesgithub.com
  3. [۰۳]Verifier Contracts | RISC Zero Developer Docsdev.risczero.com
خواندنی بعدی

خبرخوان را در ایمیل بگیرید

هر سیگنال تازه، مستقیم از خط تولید. بدون مزاحمت، لغو عضویت در هر زمان.

خوراک RSS در دسترس · بدون هرزنامه