آخرین اخبار
همهٔ اخبار
اکسپلویت‌ها گزارش بحرانیت ۳/۱۰

آسیب‌پذیری نشت اطلاعات زمان‌بندی در کتابخانه secp256k1-native برای Ruby

آسیب‌پذیری نشت اطلاعات زمان‌بندی در کتابخانه secp256k1-native برای Ruby

آسیب‌پذیری جدیدی در کتابخانه secp256k1-native، که یک پیاده‌سازی بومی (native) از الگوریتم secp256k1 به زبان C برای زبان برنامه‌نویسی Ruby است، شناسایی شده است.

در نسخه‌های تحت تأثیر، عملیات ضرب اسکالر با زمان ثابت (constant-time scalar multiplication) از طریق متدهای Point#mul یا scalar_multiply_ct می‌تواند اطلاعات زمان‌بندی (timing information) مربوط به یک اسکالر مخفی (secret scalar) را نشت کند. این نشت اطلاعات زمانی رخ می‌دهد که کد توسط ابزارهای کامپایل (toolchain) کامپایل شود که عملیات انتخاب بدون شاخه (branchless selection) را دوباره به ساختارهای شرطی (branch) تبدیل می‌کنند.

در الگوریتم Montgomery ladder، از تابع uint256_select با استفاده از ماسک‌های تمام صفر یا تمام یک استفاده می‌شود. با این حال، نسخه‌های خاصی از کامپایلر GCC در سطح بهینه‌سازی -O2، شرط اصلی را بازسازی کرده و دستورات je یا jne وابسته به داده‌های مخفی (secret-dependent) را تولید می‌کنند که منجر به آسیب‌پذیری کانال جانبی (side-channel) می‌شود.