تکنولوژی

آسیب‌پذیری ۱۳ ساله Redis با امتیاز CVSS 10.0 (RediShell) – تحلیل فنی و راهکارهای امنیتی

ستاره غیر فعالستاره غیر فعالستاره غیر فعالستاره غیر فعالستاره غیر فعال
 

Redis، یکی از پرکاربردترین پایگاه‌داده‌های حافظه‌ای در جهان، به‌تازگی با یک آسیب‌پذیری بحرانی روبه‌رو شده است که بیش از ۱۳ سال در کد منبع آن وجود داشته است.
این نقص امنیتی با شناسه CVE-2025-49844  و نام مستعار RediShell  توسط تیم تحقیقاتی شرکت Wiz Research  شناسایی و در تاریخ ۳ اکتبر ۲۰۲۵ افشا شد.
شدت این آسیب‌پذیری طبق استاندارد CVSS 3.1  برابر با 10.0 ارزیابی شده  یعنی در بالاترین سطح خطر ممکن.

🏛  مروری کوتاه بر تاریخچه Redis

Redis (مخفف Remote Dictionary Server) یکی از محبوب‌ترین پایگاه‌داده‌های متن‌باز In-Memory  است که نخستین بار در سال ۲۰۰۹ توسط Salvatore Sanfilippo  توسعه یافت. این پروژه با هدف ارائه یک دیتابیس سریع، سبک و مناسب برای ذخیره‌سازی موقت داده‌ها، کشینگ و پردازش بلادرنگ طراحی شد و به‌سرعت جایگاه ویژه‌ای در میان توسعه‌دهندگان، شرکت‌های فناوری و زیرساخت‌های ابری یافت.
Redis
 به زبان C نوشته شده و از ساختارهای داده‌ای پیشرفته مانند Strings، Hashes، Lists، Sets و Sorted Sets پشتیبانی می‌کند.
در طول بیش از یک دهه، این فناوری به بخشی حیاتی از اکوسیستم DevOps، Cloud Computing، Big Data و Microservices تبدیل شده است.
با این حال، درست همان‌طور که محبوبیت و کاربرد Redis رشد کرد، سطح حملات و آسیب‌پذیری‌های امنیتی مرتبط با آن نیز افزایش یافت. موضوعی که در سال ۲۰۲۵ با کشف باگ ۱۳ ساله CVE-2025-49844 (RediShell)  بار دیگر اهمیت امنیت در توسعه و نگهداری نرم‌افزارهای متن‌باز را یادآور شد.

🔍  ماهیت آسیب‌پذیری CVE-2025-49844

این آسیب‌پذیری در ماژول Lua scripting engine Redis  قرار دارد. در شرایط خاص، مهاجمی که به سرور Redis دسترسی احراز هویت‌شده دارد، می‌تواند از طریق اجرای یک اسکریپت Lua دست‌کاری‌شده، منجر به شرایط use-after-free در حافظه شود.
این وضعیت به مهاجم اجازه می‌دهد تا کد دلخواه را در محیط میزبان Redis اجرا کند. در نتیجه منجر به Remote Code Execution (RCE)  و کنترل کامل بر روی سیستم شود.

از آن‌جا که Redis معمولاً در محیط‌های DevOps، caching، queue management و microservices به‌صورت گسترده به‌کار می‌رود، احتمال بهره‌برداری از این نقص در محیط‌های سازمانی بالا است.

⚙️ نسخه‌های آسیب‌پذیر و وصله‌های امنیتی

تمام نسخه‌های Redis که از Lua scripting  پشتیبانی می‌کنند، در معرض خطر این آسیب‌پذیری هستند.
توسعه‌دهندگان Redis در پاسخ به این کشف، وصله‌هایی در نسخه‌های زیر منتشر کرده‌اند:

  • Redis 6.2.20
  • Redis 7.2.11
  • Redis 7.4.6
  • Redis 8.0.4
  • Redis 8.2.2

به‌روزرسانی به یکی از نسخه‌های فوق تنها روش قطعی برای رفع آسیب‌پذیری است.

🧱  اثر و سطح خطر در محیط‌های واقعی

مطالعه‌ی Wiz و داده‌های Shodan نشان می‌دهد که بیش از ۳۳۰٬۰۰۰ نمونه Redis در سطح اینترنت در دسترس عموم قرار دارند و از این میان حدود ۶۰٬۰۰۰ نمونه بدون هیچ مکانیزم احراز هویت فعالی اجرا می‌شوند.

در چنین شرایطی، مهاجم در صورت دسترسی به نمونه‌ای از Redis  حتی در شبکه داخلی سازمان می‌تواند با اجرای یک اسکریپت ساده، کنترل سیستم را در دست گیرد، داده‌ها را استخراج کرده یا به عنوان نقطه‌ی ورود به شبکه استفاده کند.

 🧩اقدامات کاهش خطر (Mitigation)

تا پیش از نصب وصله‌های رسمی، اقدامات زیر برای کاهش خطر توصیه می‌شود:

غیرفعال‌سازی اجرای Lua برای کاربران غیرمجاز

با استفاده از تنظیمات ACL، دستورات EVAL  و EVALSHA  را فقط برای کاربران مطمئن فعال نگه دارید.

محدودسازی دسترسی شبکه‌ای Redis

اطمینان حاصل کنید که Redis تنها از طریق شبکه داخلی در دسترس است و پورت 6379 در معرض اینترنت عمومی نیست.

پایش فعالیت‌های غیرمعمول

بررسی لاگ‌ها برای شناسایی دستورات Lua غیرمنتظره یا رفتارهای مشکوک حافظه.

استفاده از نسخه‌های  patch‌شده

نسخه‌های جدید منتشرشده در اکتبر ۲۰۲۵ شامل اصلاح کامل کد در ماژول Lua هستند.

🔬  تحلیل فنی مختصر

باگ در مدیریت حافظه‌ی Redis هنگام اجرای تابع lua_gc (مربوط به garbage collection در Lua) رخ می‌دهددر صورت استفاده‌ی نادرست از این تابع در هنگام آزادسازی اشیای داخلی Redis، یک  freed pointer  ممکن است مجدداً فراخوانی شود. حالتی که در امنیت نرم‌افزار با عنوان Use-After-Free  شناخته می‌شود.
این نقص، در صورت ترکیب با payload دقیق، می‌تواند منجر به اجرای arbitrary code شود.

🧠  پیامدهای امنیتی

وجود این آسیب‌پذیری در ابزاری با عمر طولانی مانند  Redis، نشان می‌دهد حتی پروژه‌های متن‌باز با جامعه‌ی توسعه‌دهندگان فعال نیز ممکن است آسیب‌پذیری‌های مزمن و نهفته داشته باشنداین کشف همچنین اهمیت اجرای تست‌های امنیتی پیشرفته مانند fuzzing، static analysis و code auditing را در چرخه توسعه نرم‌افزارهای حیاتی یادآور می‌شود.

🛡  جمع‌بندی

آسیب‌پذیری RediShell (CVE-2025-49844)  نمونه‌ای از یک تهدید دیرپا و پرخطر است که می‌تواند پیامدهای گسترده‌ای برای سازمان‌های وابسته به Redis در زیرساخت‌های ابری و DevOps  داشته باشد.

تیم‌های امنیتی باید فوراً Redis را به نسخه‌های جدید ارتقا دهند، اجرای اسکریپت Lua را محدود سازند و دسترسی سرویس را صرفاً به شبکه‌های داخلی مقید کنند.

 

تمام حقوق سایت برای سلام دیجی و نويسندگان آن محفوظ می باشد