نمای کلی اجرایی و اهمیت معماری
ردیس نسخه ۸.۶.۶ به عنوان یک بهروزرسانی حیاتی برای امنیت و پایداری رسماً منتشر شده است. از آنجا که شبکههای داده درون حافظهای با عملکرد بالا بهطور فزایندهای بارهای کاری زیرساخت اصلی را بر عهده میگیرند—از تعبیههای جستجوی شباهت برداری گرفته تا پیامرسانی توزیعشده انتشار/اشتراک—حفظ ایمنی دقیق حافظه و پایبندی به پروتکل از اهمیت بالایی برخوردار است. این نسخه به چندین آسیبپذیری شامل عملیاتهای مجموعه برداری، تجزیه پایایی RDB، روالهای احراز هویت TLS، و ماشینهای حالت مسدودسازی کلاینت میپردازد. اهمیت معماری نسخه ۸.۶.۶ در کاهش پیشگیرانه بردارهای خرابی حافظه نهفته است که در غیر این صورت میتوانستند امکان اجرای کد از راه دور (RCE) یا ارتقای سطح دسترسی را در استقرارهای چندمشتری فراهم کنند.
از منظر زیرساخت سازمانی، بهروزرسانیهایی مانند نسخه ۸.۶.۶ نقش ردیس را به عنوان یک لایه پایگاه داده و کش مقاومسازیشده تقویت میکنند. چندین مورد از مسائل حلشده—مانند نوشتنهای خارج از محدوده پشته در ساختارهای CMSketch و خرابی حافظه ناشی از محمولههای ناقص SLOT_INFO در طول بازیابی RDB—مقاومسازی مداوم منطق تجزیه در برابر ورودیهای نامطمئن را نشان میدهند. علاوه بر این، اشکالات همزمانی مربوط به تردهای پسزمینه که اسکنهای شباهت برداری (VSIM) را اجرا میکنند در حالی که دستورات جهش گراف (VREM) در حال اجرا هستند خنثی شدهاند و پایداری استخر ترد را تحت بارهای کاری سنگین هوش مصنوعی و یادگیری ماشین تضمین میکنند.
بهبودهای اصلی و ارگونومی توسعهدهنده
تمرکز اصلی ردیس ۸.۶.۶ بر soundness ساختاری، بهویژه در پیرامون خطوط لوله سریالسازی ساختار داده و اعتبارسنچی رمزنگاری است. یک اصلاح حیاتی مکانیسم احراز هویت گواهی کلاینت TLS را هدف قرار میدهد، جایی که یک نام عمومی (Common Name) دستکاریشده مخرب حاوی یک بایت NUL جاسازیشده قبلاً باعث قطع رشته شده بود. این آسیبپذیری به کلاینتها اجازه میداد تا بررسیهای مورد نظر را دور بزنند و خود را به عنوان کاربران ممتاز لیست کنترل دسترسی (ACL) جا بزنند. نسخه ۸.۶.۶ با تشدید مدیریت طول رشته در سراسر زیرسیستم تأیید هویت TLS، این مشکل را برطرف میکند و نگاشت دقیق هویت را تضمین میکند.
ارگونومی توسعهدهنده و پایداری سیستم با رفع اشکالات پیچیده همزمانی و مدیریت حالت بیش از پیش تقویت شدهاند. در زیرسیستم مجموعههای برداری، اعتبارسنچی از دست رفته در سطح گره در طول بارگذاری RDB و مدیریت بازگشت مقادیر منفی ناامن در تابع hnsw_search() (که قبلاً مقادیر منفی را به تعداد زیادی از نوع بدون علامت تبدیل میکرد و منجر به خواندن خارج از محدوده میشد) بهطور کامل حل شدهاند. علاوه بر این، بهبودهای مدیریت حافظه به شرایط استفاده پس از آزادی (use-after-free) در لیست دادههای در انتظار TLS و لیست کلاینتهای مسدودشده رسیدگی میکنند—و از شرایط مسابقهای (race conditions) که در آن پردازش مجدد دستورات آبشاری یا پایان دادن به اتصالات میتوانست حلقه رویداد را ناپایدار کند، جلوگیری میکنند.
ماتریس مقایسه معماری
| بردار معماری | خط مبنای قبلی | ردیس ۸.۶.۶ | تأثیر بر استقرارها |
|---|---|---|---|
| امنیت دکد کردن RDB | آسیبپذیر در برابر نوشتنهای خارج از محدوده از طریق محمولههای ناقص CMSketch و SLOT_INFO. |
سطوح گره و مرزهای اسلات را به شدت در طول دکد کردن اعتبارسنچی میکند. | بردارهای اجرای کد از راه دور (RCE) را از طریق فایلهای اسنپشات نامطمئن از بین میبرد. |
| همزمانی مجموعههای برداری | شرایط مسابقهای بین جهشهای گراف VREM و تردهای پسزمینه VSIM. |
همگامسازی ایمن برای تردها که از اصلاحات گراف HNSW محافظت میکند. | از استفاده پس از آزادی و خرابی حافظه در طول پرسوجوهای برداری همزمان جلوگیری میکند. |
| احراز هویت کلاینت TLS | آسیبپذیر در برابر قطع بایت NUL در نامهای عمومی گواهی. | اجرای دقیق طول رشته که از جعل هویت جلوگیری میکند. | خوشههای سازمانی ختمشده با TLS را در برابر ارتقای سطح دسترسی امن میکند. |
| اجرای کلید ACL | دور زدن احتمالی مجوز کلید در SORT، GEORADIUS، و XREAD. |
کلیدهای ACL تأییدشده را با کلیدهای واقعی که توسط روالهای اجرایی دسترسی پیدا میشوند، همراستا میکند. | ایزولهسازی دقیق چندمشتری و مرزهای امنیتی را اعمال میکند. |
تغییرات اساسی و نکات مهاجرت
ردیس ۸.۶.۶ با نسخههای قبلی ۸.x از نظر فرمتهای داده، درایورهای کلاینت و دستورالعملهای پیکربندی کاملاً سازگار است. هیچ تغییر ناسازگاری در پروتکلهای کلاینت یا پارامترهای پیکربندی ایجاد نشده است. با این حال، مدیران باید توجه داشته باشند که اصلاحات امنیتی مربوط به دور زدن مجوز کلید ACL در دستورات پیچیده (SORT، GEORADIUS، GEORADIUSBYMEMBER، XREAD، XREADGROUP) و قطع گواهی TLS ممکن است باعث شود کلاینتهای پیکربندیشده نادرست یا قوانین بیش از حد مجاز ACL، خطاهای مجوزی را صادر کنند. محیطهایی که به نامهای عمومی نامناسب TLS یا دامنههای ACL همپوشانیدار متکی هستند باید بلافاصله پس از ارتقا، گزارشهای دسترسی را بررسی کنند.
راهنمای گامبهگام ارتقا
ارتقا به ردیس ۸.۶.۶ برای معماریهای خوشه غلتان (rolling cluster) ساده است. برای اطمینان از عدم قطعی (zero downtime) و یکپارچگی تأییدشده دادهها، این مراحل را دنبال کنید:
انجام بررسی همگامسازی کپی پیش از ارتقا قبل از شروع ارتقا، مطمئن شوید که تمام کپیها (replicas) بهطور کامل با گره اصلی همگام شدهاند:
redis-cli -h 127.0.0.1 -p 6379 INFO replicationاجرای بهروزرسانی باینری غلتان فایل باینری سرور ردیس را به ترتیب در گرههای خوشه دانلود، کامپایل و راهاندازی مجدد کنید (ابتدا با کپیها شروع کنید، سپس در صورت نیاز به گره اصلی سوییچ کنید):
make distclean make BUILD_TLS=yes sudo make install sudo systemctl restart redis-serverبررسی امنیت و سلامت خوشه تأیید کنید که سرور نسخه ۸.۶.۶ را اجرا میکند و ارتباط گرههای خوشه و دستدهیهای TLS به درستی کار میکنند:
redis-cli -h 127.0.0.1 -p 6379 INFO server | grep redis_version redis-cli -h 127.0.0.1 -p 6379 CLUSTER INFO
