چکیده

آسیب‌پذیری بحرانی Use-After-Free (UAF) در پایگاه‌داده متن‌باز Redis، که به‌صورت درون‌حافظه‌ای عمل کرده و داده ها را روی دیسک ذخیره می‌کند، به کاربران احراز هویت‌شده اجازه می‌دهد با اجرای یک اسکریپت Lua طراحی‌شده، مکانیزم Garbage Collector را دستکاری کرده و شرایط استفاده پس از آزادسازی حافظه را ایجاد کنند. این ضعف در تمام نسخه های Redis دارای قابلیت Lua Scripting وجود دارد و می‌تواند منجر به اجرای کد از راه دور (RCE) شود.

توضیحات

آسیب‌پذیری CVE‑2025‑49844 در Redis ناشی از ضعف در مدیریت حافظه هنگام اجرای اسکریپت‌های Lua است. این ضعف که مطابق با CWE‑416 (استفاده پس از آزادسازی حافظه) طبقه‌بندی می‌شود، به کاربر احراز هویت‌شده اجازه می‌دهد با ایجاد یک اسکریپت Lua مخرب، مکانیزم جمع‌آوری زباله (Garbage Collector) را دستکاری کرده و شرایطی ایجاد کند که در آن حافظه آزادشده مجدد مورد استفاده قرار گیرد؛ وضعیتی که می‌تواند زمینه اجرای کد دلخواه از راه دور (RCE) را فراهم کند..

Redis به عنوان یک پایگاه داده درون حافظه ای (In-Memory Database) با قابلیت ذخیره‌سازی پایدار، از Lua برای اجرای منطقی عملیات در سطح سرور استفاده می‌کند. در نسخه‌های آسیب‌پذیر، مهاجم با داشتن حداقل سطح دسترسی (مانند یک کاربر عادی دارای مجوز اجرای Lua)، می‌تواند اسکریپتی ارسال کند که جریان داخلی مدیریت حافظه را مختل کرده، اشاره‌گرهای نادرست ایجاد کند و ساختار حافظه را در حالت ناامن قرار دهد. این عملکرد از طریق پروتکل RESP (پروتکل سریال‌سازی و ارتباطی Redis میان کلاینت و سرور) انجام می‌شود و هیچ تعامل اضافی از سوی کاربر لازم نیست.

بهره‌برداری از این ضعف به‌سادگی قابل خودکارسازی است؛ مهاجم پس از ارسال اسکریپت مخرب، با سوءاستفاده از عملکرد نادرست Garbage Collector، شرایط لازم برای افشای اطلاعات حافظه و دستکاری ساختارهای داخلی ایجاد می‌کند. سپس با تکنیک‌هایی مانند تزریق داده در حافظه (Heap Spraying) برای کنترل چیدمان حافظه، دور زدن حفاظت ASLR با استفاده از اطلاعات افشا‌شده و ساخت زنجیره ROP (برنامه‌نویسی مبتنی بر بازگشت برای غیرفعال‌سازی DEP/NX)، محیط را برای اجرای مستقیم کد مخرب آماده می‌کند. در مرحله نهایی، مهاجم می‌تواند Shellcode اجرا کرده و به صورت پایدار کنترل Redis را به دست آورد؛ حتی امکان ایجاد Reverse Shell یا بکدور نیز وجود دارد. کد اثبات مفهومی (PoC) منتشرشده نشان می‌دهد که بهره‌برداری از این ضعف نه‌تنها عملی، بلکه پایدار و قابل‌اتکا است. این PoC با برقراری اتصال به سرور، بررسی نسخه، شناسایی معماری سیستم، استخراج اطلاعات حافظه و اجرای زنجیره حمله، کنترل کامل سرور Redis را به مهاجم می‌دهد.

پیامدهای آسیب‌پذیری شامل تأثیر بالا بر محرمانگی با افشای داده‌های حساس، یکپارچگی با تغییر داده‌ها یا اجرای کد مخرب و در دسترس‌پذیری با اختلال یا کرش سرور است. در محیط‌هایی که Redis به اینترنت متصل است یا کاربران متعددی امکان اجرای Lua دارند، ریسک بهره‌برداری به‌طور قابل‌توجهی افزایش می‌یابد. این آسیب‌پذیری در نسخه‌های 8.2.2، 8.0.4، 7.4.6، 7.2.11 و 6.2.20 به‌طور کامل پچ شده است.

CVSS

Score Severity Version Vector String
10.0 CRITICAL 3.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H

لیست محصولات آسیب پذیر

Versions Product
affected at < 8.2.2 redis

لیست محصولات بروز شده

Versions Product
6.2.20, 7.2.11, 7.4.6, 8.0.4, 8.2.2 redis

استفاده محصول در ایران

در این جدول، تعداد صفحات ایندکس‌شده در گوگل با دامنه .ir که redis را ذکر کرده اند، ثبت شده است. این داده صرفاً برای برآورد تقریبی حضور محصولات در وب ایران استفاده شده و نمایانگر میزان نصب دقیق و استفاده واقعی نیست.

Approx. Usage in .ir Domain via Google

(Total Pages)

Search Query (Dork) Product
95,800 site:.ir “redis” redis

نتیجه گیری

این آسیب‌پذیری با شدت بحرانی در Redis امکان اجرای کد از راه دور (RCE) را از طریق دستکاری اسکریپت‌های Lua و ایجاد استفاده پس از آزادسازی حافظه (UAF) فراهم می‌کند. در محیط‌های ابری یا سرورهای عمومی، این ضعف می‌تواند منجر به افشای داده‌ها، تغییر یکپارچگی سیستم و اختلال یا کرش کامل سرویس شود. با توجه به انتشار نسخه‌های پچ‌شده و وجود کد اثبات مفهومی (PoC) عمومی، اجرای اقدامات زیر برای کاهش ریسک و جلوگیری از بهره‌برداری ضروری است

  • به‌روزرسانی فوری: تمام نسخه های Redis را به نسخه‌های پچ‌شده مانند 8.2.2 (برای شاخه 8.2)، 8.0.4 (برای 8.0)، 7.4.6 (برای 7.4)، 7.2.11 (برای 7.2) یا 6.2.20 (برای 6.2) به‌روزرسانی کنید. این اقدام، مؤثرترین و قطعی‌ترین راهکار برای رفع آسیب‌پذیری است و باید در اولویت قرار گیرد. سایر اقدامات نقش مکمل را دارند و می‌توانند به کاهش ریسک این آسیب پذیری و مقابله با حملات مشابه کمک کنند.
  • محدودسازی اجرای اسکریپت ها‌: از لیست کنترل دسترسی (ACL) برای محدود کردن دستورات EVAL و EVALSHA استفاده کنید تا کاربران نتوانند اسکریپت‌های Lua را اجرا کنند؛ این روش ریسک را حتی بدون نیاز به پچ کاهش می‌دهد.
  • تقویت امنیت شبکه: دسترسی به Redis را با فایروال اپلیکیشن وب (WAF) مانند ModSecurity محدود کنید و تنها اتصالات لوکال یا از طریق VPN مجاز سازید تا حملات از راه دور مسدود شود.
  • نظارت و ثبت لاگ: ابزارهایی مانند Prometheus یا ELK Stack (Elasticsearch, Logstash, Kibana) را برای مانیتورینگ فعالیت‌های Lua و حافظه Redis پیاده‌سازی کنید و لاگ‌ها را با سطح جزئیات بالا بررسی نمایید تا اسکریپت‌های مشکوک شناسایی شوند.
  • ایزوله‌سازی محیط: Redis را در کانتینرهای ایزوله مانند Docker یا Kubernetes اجرا کنید و از قابلیت‌های ایزوله سازی Lua برای محدود کردن اجرای اسکریپت‌ها بهره ببرید.
  • تست امنیتی: سیستم را با ابزارهایی مانند OWASP ZAP یا Metasploit اسکن کنید تا سناریوهای استفاده پس از آزادسازی و RCE شبیه‌سازی شوند؛ همچنین از fuzzing (تست ورودی تصادفی) برای ارزیابی مقاومت Garbage Collector استفاده نمایید.
  • آموزش کاربران و توسعه‌دهندگان: تیم‌های عملیاتی را درباره ریسک‌های اجرای Lua در Redis و ضرورت اعمال ACL آموزش دهید تا از پیکربندی‌های ناامن جلوگیری شود.

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

امکان استفاده در تاکتیک های Mitre Attack

Initial Access (TA0001)

در سناریوی Redis، مهاجم نیاز به دسترسی اولیه معتبر دارد؛ یعنی هر کاربری که اجازه اجرای Lua داشته باشد می‌تواند نقطه ورود باشد. این دسترسی معمولاً از طریق حساب‌های داخلی، اشتراک‌گذاری نادرست یا سرویس Redis پابلیک‌شده ایجاد می‌شود و مسیر را برای اجرای اسکریپت‌های مخرب باز می‌کند.

Execution (TA0002)

اسکریپت Lua مخرب به‌صورت مستقیم روی سرور Redis اجرا می‌شود و با دستکاری Garbage Collector شرایط Use‑After‑Free ایجاد می‌کند؛ این اجرا پس از بازنویسی حافظه، زمینه اجرای کد دلخواه (RCE) را فراهم می‌کند.

Persistence (TA0003)

مهاجم می‌تواند از طریق نوشتن داده‌های پایدار (مثلاً تنظیمات، داده‌های کنترل‌شده یا فایل‌های اسکریپتی که در اپلیکیشن‌های بالادستی فراخوانی می‌شوند) یک کانال پایداری ایجاد کند. در محیط‌هایی که Redis نقش backend state دارد، این پایداری ساده‌تر و ماندگارتر است.

Privilege Escalation (TA0004)

وقتی مهاجم RCE می‌گیرد، می‌تواند فرآیند Redis را با همان سطح دسترسی سیستم‌عامل کنترل کند.

Defense Evasion (TA0005)

با سوءاستفاده از Lua و UAF، مهاجم می‌تواند رفتار حافظه را دستکاری کرده و بسیاری از لاگ‌های معمول یا الگوهای تشخیصی را دور بزند.

Credential Access (TA0006)

در محیط‌هایی که Redis داده‌های session، token، secrets یا cache app را نگهداری می‌کند، مهاجم پس از گرفتن RCE می‌تواند به این داده‌ها دسترسی خواندنی پیدا کرده و اعتبارنامه‌های حیاتی را استخراج کند.

Discovery (TA0007)

مهاجم پس از کنترل Redis می‌تواند ساختار حافظه، مسیرهای پیکربندی، IPC، و ارتباطات backend را شناسایی کرده و دید کلی از محیط اپلیکیشن و معماری سرویس‌ها به دست بیاورد.

Lateral Movement (TA0008)

دسترسی RCE روی Redis اغلب به مهاجم اجازه pivot و حمله به اپلیکیشن‌های متصل، دسترسی به دیتابیس‌های دیگر، یا ورود به کانتینرهای جانبی و نودهای داخلی Redis را می دهد.

Collection (TA0009)

پس از RCE، مهاجم می‌تواند هر داده نگهداری‌شده شامل session‌ها، tokenها، پیکربندی‌ها، queue payload، cache داده‌های حساس و snapshot های حافظه را جمع‌آوری کند.

Exfiltration (TA0010)

داده‌ها می‌توانند از طریق RESP، reverse shell یا کانال‌های command-and-control استخراج شوند؛ ترافیک خروجی معمولاً عادی به نظر می‌رسد و تشخیص را سخت می‌کند.

Impact (TA0040)

پیامد نهایی شامل اجرای کد دلخواه (RCE)، افشای داده‌های حساس، تغییر داده‌ها یا state سیستم و در برخی موارد توقف کامل سرویس Redis است. در محیط‌های پراستفاده مانند کلاسترهای ابری، این حمله می‌تواند کل زنجیره داده و اپلیکیشن را مختل کند.

منابع

  1. https://www.cve.org/CVERecord?id=CVE-2025-49844
  2. https://www.cvedetails.com/cve/CVE-2025-49844/
  3. https://github.com/redis/redis/security/advisories/GHSA-4789-qfc9-5f9q
  4. https://vulmon.com/vulnerabilitydetails?qid=CVE-2025-49844
  5. https://vuldb.com/?id.326992
  6. https://github.com/redis/redis/commit/d5728cb5795c966c5b5b1e0f0ac576a7e69af539
  7. https://github.com/redis/redis/releases/tag/8.2.2
  8. http://www.openwall.com/lists/oss-security/2025/10/07/2
  9. https://github.com/Yuri08loveElaina/CVE-2025-49844
  10. https://nvd.nist.gov/vuln/detail/CVE-2025-49844
  11. https://cwe.mitre.org/data/definitions/416.html

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *