
نص تشخيصي ومعالجة لخمس ثغرات أمنية في Redis، يوفر فحصًا وتخفيفًا قائمًا على ACL وإرشادات لتقوية الإعدادات لثغرات تنفيذ الأكواد عن بُعد (RCE) الموثّقة.
تاريخ الإصدار: 2026-05-08 المؤلف: TonyCao ([email protected]) المصدر: Redis Security Advisory
في 05/05/2026، نشرت Redis Ltd. نشرة أمنية حول 5 ثغرات أمنية خطيرة تؤثر على جميع إصدارات Redis OSS/CE. جميع هذه الثغرات يمكن أن تؤدي إلى تنفيذ كود عن بُعد (RCE) إذا تم استغلالها بنجاح.
| # | كود CVE | CVSS | المستوى | نوع الخلل | شروط الاستغلال |
|---|---|---|---|---|---|
| 1 | CVE-2026-23479 | 7.7 | HIGH | Use-After-Free | مصادق عليه، لديه صلاحية تشغيل أوامر الحظر |
| 2 | CVE-2026-25243 | 7.7 | HIGH | وصول غير صالح للذاكرة | مصادق عليه، لديه صلاحية تشغيل RESTORE |
| 3 | CVE-2026-25588 | 7.7 | HIGH | وصول غير صالح للذاكرة | مصادق عليه، لديه صلاحية RESTORE + وحدة RedisTimeSeries |
| 4 | CVE-2026-25589 | 7.7 | HIGH | وصول غير صالح للذاكرة | مصادق عليه، لديه صلاحية RESTORE + وحدة RedisBloom |
| 5 | CVE-2026-23631 | 6.1 | MEDIUM | Use-After-Free | مصادق عليه، replica مع replica-read-only = معطل |
النقطة المشتركة: جميع الثغرات تتطلب أن يكون المهاجم مصادقًا (authenticated) على مثيل Redis. CVE-2026-23631 تؤثر فقط على replica مع إعداد
replica-read-only disabled.
| سلسلة الإصدارات | الإصدار المُصحح (الحد الأدنى) |
|---|---|
| 6.2.x | 6.2.22 |
| 7.2.x | 7.2.14 |
| 7.4.x | 7.4.9 |
| 8.2.x | 8.2.6 |
| 8.4.x | 8.4.3 |
| 8.6.x | 8.6.3 |
| الوحدة | الحد الأدنى للإصدار |
|---|---|
| RedisTimeSeries | 1.12.14 / 1.10.24 / 1.8.23 |
| RedisBloom | 2.8.20 / 2.6.28 / 2.4.23 |
| الإصدار | التصحيح |
|---|---|
| 8.0.6 | 8.0.10-64 |
| 7.22.2 | 7.22.2-79 |
| 7.8.6 | 7.8.6-253 |
| 7.4.6 | 7.4.6-279 |
| 7.2.4 | 7.2.4-153 |
جميع عمليات نشر Redis Cloud تم تصحيحها تلقائيًا في وقت نشر النشرة الأمنية.
| الخاصية | القيمة |
|---|---|
| العنوان | Use-After-Free في Unblock Client Flow |
| CVSS 4.0 | 7.7 (HIGH) |
| CWE | CWE-416 (Use After Free) |
| المتجه | AV:N/AC:H/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N |
| الشروط | مهاجم مصادق عليه، لديه صلاحية تنفيذ أوامر الحظر |
| النطاق | جميع Redis OSS/CE، Redis Software <= 8.0.6 |
عندما يكون العميل محظورًا (blocked) — على سبيل المثال في انتظار BLPOP — ويتم إخلاؤه (evict) أثناء إعادة تنفيذ الأمر المحظور، قد ترجع الدالة processCommandAndResetClient خطأً. الكود الحالي لا يعالج هذه الحالة بشكل صحيح، مما يؤدي إلى مؤشر يشير إلى منطقة ذاكرة تم تحريرها (use-after-free). يمكن للمهاجم استغلال UAF لتنفيذ كود عن بُعد (RCE).
unblock client، processCommandAndResetClientredis-server تنفذ أوامر غير معروفةBLPOP, BRPOP, BRPOPLPUSH, BLMOVE, BLMPOP, BZPOPMIN, BZPOPMAX, BZMPOP, WAIT, WAITAOF, XREAD, XREADGROUP
#### طريقة المعالجة (بدون ترقية)
**الطريقة 1 — الحظر عبر ACL (موصى به):**```bash
# Chặn toàn bộ nhóm lệnh blocking
redis-cli ACL SETUSER default -@blocking
# Hoặc chặn từng lệnh cụ thể
redis-cli ACL SETUSER default -BLPOP -BRPOP -BRPOPLPUSH -BLMOVE -BLMPOP \
-BZPOPMIN -BZPOPMAX -BZMPOP \
-WAIT -WAITAOF \
-XREAD -XREADGROUP
# Lưu ACL
redis-cli ACL SAVE
الطريقة 2 — التعطيل عبر rename-command (يتطلب إعادة تشغيل Redis):```bash
rename-command BLPOP "" rename-command BRPOP "" rename-command BRPOPLPUSH "" rename-command BLMOVE "" rename-command BLMPOP "" rename-command BZPOPMIN "" rename-command BZPOPMAX "" rename-command BZMPOP "" rename-command WAIT "" rename-command WAITAOF "" rename-command XREAD "" rename-command XREADGROUP ""
**الطريقة 3 — تفعيل الوضع المحمي وتقييد الاتصالات:**```bash
redis-cli CONFIG SET protected-mode yes
# Trong redis.conf:
protected-mode yes
bind 127.0.0.1
| الخاصية | القيمة |
|---|---|
| العنوان | وصول غير صالح للذاكرة في أمر RESTORE |
| CVSS 4.0 | 7.7 (عالٍ) |
| CWE | CWE-20 (تحقق غير صحيح من الإدخال) + CWE-122 (تجاوز سعة الكومة) |
| المتجه | AV:N/AC:H/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N |
| الشروط | مهاجم مُصادق عليه، لديه صلاحية تنفيذ RESTORE |
| النطاق | جميع إصدارات Redis OSS/CE، وRedis Software <= 8.0.6 |
تتضمن الثغرة مشكلتين فرعيتين:
يقوم مهاجم مُصادق عليه بإرسال حمولة RESTORE مصممة خصيصًا لاستغلال الأخطاء المذكورة أعلاه، مما قد يؤدي إلى تنفيذ تعليمات برمجية عن بُعد (RCE) في سياق عملية redis-server.
الطريقة 1 — حظر RESTORE عبر ACL (موصى به):```bash
redis-cli ACL SETUSER default -restore
redis-cli ACL SETUSER default -@dangerous
redis-cli ACL SAVE
**الطريقة 2 — تعطيل RESTORE (يتطلب إعادة تشغيل Redis):**```bash
# Thêm vào redis.conf:
rename-command RESTORE ""
الطريقة 3 — إنشاء ACL مستخدم خاص بالتطبيق:```bash
redis-cli ACL SETUSER app_user on >StrongPass123 ~*
+@read +@write
-@dangerous
-@admin
-@scripting
-@blocking
-restore
-debug
redis-cli ACL SAVE
---
### CVE-2026-25588
| الخاصية | القيمة |
| ----------- | ---------------------------------------------------------------- |
| **العنوان** | وصول غير صالح للذاكرة في RESTORE مع وحدة RedisTimeSeries |
| **CVSS 4.0**| **7.7 (عالية)** |
| **CWE** | CWE-20 + CWE-122 |
| **المتجه** | `AV:N/AC:H/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N` |
| **الشروط** | مصادقة + صلاحية RESTORE + **تحميل وحدة RedisTimeSeries** |
| **النطاق** | Redis OSS/CE + وحدة RedisTimeSeries |
#### الوصف الفني
عند استخدام أمر `RESTORE` على مثيل محمّل بوحدة **RedisTimeSeries module**، يمكن أن يؤدي حمولة serialized مصممة خصيصًا إلى إثارة وصول غير صالح للذاكرة أثناء معالجة بيانات السلاسل الزمنية. تكمن الثغرة في الطريقة التي تقوم بها وحدة RedisTimeSeries بإلغاء تسلسل البيانات من حمولة RESTORE.
#### مؤشرات الاكتشاف
- تعطل Redis مع تتبع مكدس مرتبط بوحدة RedisTimeSeries
- وحدة RedisTimeSeries محمّلة (`MODULE LIST` يعرض timeseries)
- تنفيذ أوامر غير متوقع بواسطة redis-server
#### طرق المعالجة (بدون ترقية)
**الطريقة 1 — حظر RESTORE عبر ACL:** (مشابه لـ CVE-2026-25243)```bash
redis-cli ACL SETUSER default -restore
redis-cli ACL SAVE
الطريقة 2 — إزالة وحدة RedisTimeSeries (إذا لم تكن ضرورية):```bash redis-cli MODULE UNLOAD timeseries
بعد ذلك، احذف السطر التالي من `redis.conf`:```
loadmodule /path/to/redistimeseries.so
الطريقة 3 — ترقية الوحدة فقط (بدون ترقية Redis):
قم بتنزيل إصدار الوحدة المُصحّح:
redis-cli MODULE UNLOAD timeseries redis-cli MODULE LOAD /path/to/new/redistimeseries.so
---
### CVE-2026-25589
| الخاصية | القيمة |
| ----------- | ----------------------------------------------------------------------------- |
| **العنوان** | وصول غير صالح للذاكرة في RESTORE مع وحدة RedisBloom |
| **CVSS 4.0**| **7.7 (عالية)** |
| **CWE** | CWE-20 + CWE-122 + CWE-787 (كتابة خارج الحدود) + CWE-190 (فيضان عدد صحيح) |
| **المتجه** | `AV:N/AC:H/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N` |
| **الشروط** | مصادقة + صلاحية RESTORE + **وحدة RedisBloom محمّلة** |
| **النطاق** | Redis OSS/CE + وحدة RedisBloom |
#### الوصف الفني
تتضمن الثغرة عدة مشكلات فرعية في وحدة RedisBloom عند معالجة حمولة RESTORE:
1. **قراءة/كتابة خارج الحدود** (Daniel Firer) — قراءة/كتابة خارج نطاق الذاكرة المخصصة
2. **فيضان عدد صحيح، فيضان مخزن مؤقت في الكومة، وقراءة/كتابة خارج الحدود** (Joseph Surin) — فيضان عدد صحيح يؤدي إلى فيضان مخزن مؤقت في الكومة
عند تحميل وحدة RedisBloom، يمكن للمهاجم إرسال حمولة RESTORE مصممة خصيصًا لاستغلال الأخطاء المذكورة أعلاه أثناء عملية إلغاء تسلسل بيانات مرشح Bloom، أو مرشح Cuckoo، أو Count-Min Sketch، أو Top-K.
#### مؤشرات الاكتشاف
- تعطل Redis مع تتبع مكدس مرتبط بوحدة RedisBloom
- وحدة RedisBloom محمّلة حاليًا (`MODULE LIST` يعرض bf/bloom)
- بيانات في مرشحات Bloom تالفة أو متغيرة بشكل غير طبيعي
#### طرق المعالجة (بدون ترقية)
**الطريقة 1 — حظر RESTORE عبر ACL:** (مثل CVE-2026-25243)```bash
redis-cli ACL SETUSER default -restore
redis-cli ACL SAVE
الطريقة 2 — إزالة وحدة RedisBloom (إذا لم تكن ضرورية):```bash redis-cli MODULE UNLOAD bf
بعد ذلك، احذف السطر التالي من `redis.conf`:```
loadmodule /path/to/redisbloom.so
الطريقة 3 — ترقية الوحدة فقط (بدون ترقية Redis):
قم بتنزيل إصدار الوحدة المُصحّح:
---
### CVE-2026-23631
| الخاصية | القيمة |
| ----------- | ------------------------------------------------------------- |
| **العنوان** | Lua Use-After-Free عبر مزامنة Master-Replica |
| **CVSS 4.0**| **6.1 (MEDIUM)** |
| **CWE** | CWE-416 (Use After Free) |
| **المتجه** | `AV:N/AC:H/AT:N/PR:L/UI:N/VC:N/VI:H/VA:H/SC:N/SI:N/SA:N` |
| **الشروط** | مصادق عليه + **replica** مع `replica-read-only` = **معطّل** |
| **النطاق** | جميع Redis OSS/CE مع Lua scripting، فقط على الـ replica |
| **الاسم الرمزي** | "DarkReplica" (Yoni Shiraz, Wiz Zeroday Cloud) |
#### الوصف الفني
يمكن للمهاجم المصادق عليه استغلال آلية مزامنة master-replica لإرسال نصوص Lua خاصة، مما يؤدي إلى تفعيل use-after-free في محرك Lua على الـ replica.
**شرط مهم:** الخلل **يؤثر فقط على الـ replica** المُهيأ مع `replica-read-only disabled` (أي replica قابلة للكتابة). هذا **ليس** الإعداد الافتراضي — الافتراضي هو `replica-read-only` = `yes`.
إذا تم تكوين الـ replica في وضع القراءة فقط (الافتراضي)، فإن المثيل **غير متأثر**.
#### مؤشرات التعرف
- تعطل Redis على الـ replica مع تتبع مكدس من محرك Lua
- تكوين `replica-read-only` = `no` على الـ replica
- تنفيذ أوامر غير معروفة على الـ replica
- اتصالات شبكة غير مصرح بها إلى الـ replica
#### طرق المعالجة (بدون ترقية)
**الطريقة 1 — تفعيل replica-read-only (موصى به، وهو الافتراضي):**```bash
# Runtime
redis-cli CONFIG SET replica-read-only yes
# Trong redis.conf:
replica-read-only yes
الطريقة 2 — حظر Lua scripting عبر ACL:```bash redis-cli ACL SETUSER default -@scripting redis-cli ACL SETUSER default -eval -evalsha -script -function -fcall -fcall_ro redis-cli ACL SAVE
**الطريقة 3 — تعطيل أوامر Lua (يتطلب إعادة تشغيل Redis):**```bash
# Thêm vào redis.conf:
rename-command EVAL ""
rename-command EVALSHA ""
rename-command SCRIPT ""
rename-command FUNCTION ""
rename-command FCALL ""
rename-command FCALL_RO ""
--scan ← التشخيص، فحص جميع ثغرات CVE--fix-... ← تطبيق إجراءات المعالجة لثغرة CVE محددة```
$ ./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh
→ hiển thị banner + HELP + thoát### متطلبات النظام
- **نظام التشغيل:** Linux (Ubuntu, Debian, CentOS, RHEL, ...)
- **الأداة:** `redis-cli` (عادةً ما تكون ضمن حزمة `redis-tools` أو `redis`)
- **الصلاحيات:** صلاحية قراءة/كتابة ملف `redis.conf` (لإصلاح المشكلة)
- **الاتصال:** شبكة إلى مثيل Redis المطلوب فحصه
### تثبيت redis-cli (إذا لم يكن مثبتًا)```bash
# Ubuntu/Debian
sudo apt update && sudo apt install -y redis-tools
# CentOS/RHEL 7
sudo yum install -y redis
# CentOS/RHEL 8+/Fedora
sudo dnf install -y redis
# Hoặc từ source
wget https://download.redis.io/releases/redis-stable.tar.gz
tar xzf redis-stable.tar.gz
cd redis-stable && make redis-cli
sudo cp src/redis-cli /usr/local/bin/
chmod +x CVE-2026-25589-25588-25243-23631-23479-REDIS.sh
./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh
./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --help
#### 2. فحص جميع ثغرات CVE (التشخيص)```bash
# Local Redis
./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --scan
# Redis từ xa
./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --scan \
-H 192.168.1.100 -p 6379 -a "your_password"
# Với ACL user
./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --scan \
-H 10.0.0.50 -p 6380 -u admin -a "admin_password"
# Qua Unix socket
./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --scan \
-s /var/run/redis/redis-server.sock
# Kèm xuất báo cáo
./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --scan \
-o redis_cve_report_$(date +%Y%m%d).txt
./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --fix-cve-23479 ./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --fix-cve-25243 -H 10.0.0.1 -a mypassword ./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --fix-cve-25588 ./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --fix-cve-25589 ./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --fix-cve-23631 -c /etc/redis/redis.conf
#### 4. الإصلاح السريع حسب المجموعة (موصى به)```bash
# Chan RESTORE → bao ve 3/5 CVE (25243 + 25588 + 25589)
./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --fix-restore
# Chan blocking commands → bao ve CVE-2026-23479
./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --fix-blocking
# Chan Lua + bat replica-read-only → bao ve CVE-2026-23631
./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --fix-lua
./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --fix-all
./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --fix-all
-c /etc/redis/redis.conf
./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --fix-all --no-backup
./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --fix-all
-H 10.0.0.1 -p 6379 -a mypassword
### جدول المعاملات الكامل
#### معاملات الإجراء (ACTION) — إلزامية
| المعامل | الوظيفة | عدد CVEs المحمية |
| ----------------- | ----------------------------------------- | --------------------------- |
| *(بدون معامل)* | عرض دليل الاستخدام | — |
| `--scan` | فحص تشخيصي شامل لجميع CVEs الخمسة | — |
| `--fix-all` | إصلاح جميع CVEs | **5/5** |
| `--fix-restore` | **[سريع]** حظر أمر RESTORE فقط | **3/5** (25243, 25588, 25589) |
| `--fix-blocking` | **[سريع]** حظر أوامر الحظر فقط | **1/5** (23479) |
| `--fix-lua` | **[سريع]** حظر Lua + تفعيل replica-read-only | **1/5** (23631) |
| `--fix-cve-23479` | إصلاح CVE-2026-23479 | 1/5 |
| `--fix-cve-25243` | إصلاح CVE-2026-25243 | 1/5 |
| `--fix-cve-25588` | إصلاح CVE-2026-25588 | 1/5 |
| `--fix-cve-25589` | إصلاح CVE-2026-25589 | 1/5 |
| `--fix-cve-23631` | إصلاح CVE-2026-23631 | 1/5 |
#### معاملات الاتصال
| المعامل | الوصف | الافتراضي |
| --------------------- | ------------------------ | ------------ |
| `-H, --host HOST` | عنوان مضيف Redis | `127.0.0.1` |
| `-p, --port PORT` | منفذ Redis | `6379` |
| `-a, --pass PASS` | كلمة مرور Redis | *(فارغ)* |
| `-u, --user USER` | اسم مستخدم ACL | `default` |
| `-s, --socket PATH` | مسار مقبس Unix | *(فارغ)* |
#### معاملات إضافية
| المعامل | الوصف | الافتراضي |
| --------------------- | --------------------------------------- | ------------------------ |
| `-h, --help` | عرض المساعدة | — |
| `-c, --config FILE` | مسار redis.conf | `/etc/redis/redis.conf` |
| `-o, --output FILE` | كتابة التقرير إلى ملف (فقط مع `--scan`) | *(فارغ)* |
| `--redis-cli PATH` | مسار ثنائي redis-cli | `redis-cli` (من PATH) |
| `--no-backup` | عدم عمل نسخة احتياطية من الإعداد قبل التعديل | `false` |
### أكواد الخروج (Exit Codes)
| الكود | المعنى |
| ----- | ----------------------------------------------------- |
| `0` | نجاح — لم يتم اكتشاف أي CVE أو اكتمل الإصلاح |
| `1` | خطأ: لم يتم العثور على redis-cli أو تعذر الاتصال |
| `2` | `--scan` اكتشف CVE واحدًا على الأقل — يتطلب إصلاحًا |
### مخرجات الفحص (`--scan`)```
╔══════════════════════════════════════════════════════════════════════╗
║ REDIS CVE SCANNER & MITIGATION TOOL ║
╚══════════════════════════════════════════════════════════════════════╝
[*] THONG TIN REDIS INSTANCE
Host:Port : 127.0.0.1:6379
Version : 7.2.5
Mode : standalone
Role : master
Modules : timeseries bf
═══════════════════════════════════════════════════════════════════════
[1/5] CVE-2026-23479 - Use-after-free trong Unblock Client Flow
CVSS 7.7 (HIGH) | RCE
═══════════════════════════════════════════════════════════════════════
[✗] CO KHA NANG BI ANH HUONG - Redis 7.2.5 (can >= 7.2.14)
... (CVE 2-5 tuong tu)
╔══════════════════════════════════════════════════════════════════════╗
║ TOM TAT KET QUA ║
╚══════════════════════════════════════════════════════════════════════╝
[✗] CVE-2026-23479 - VULNERABLE
[✗] CVE-2026-25243 - VULNERABLE
[✗] CVE-2026-25588 - VULNERABLE
[✗] CVE-2026-25589 - VULNERABLE
[✓] CVE-2026-23631 - OK
Ket qua: 1 PASS / 4 VULNERABLE
═══════════════════════════════════════════════════════════════════════
[!] Phat hien 4 CVE. Su dung cac tuy chon --fix-... de khac phuc.
VD: ./script.sh --fix-restore # Chan RESTORE (3 CVE)
VD: ./script.sh --fix-blocking # Chan blocking (1 CVE)
VD: ./script.sh --fix-lua # Chan Lua (1 CVE)
VD: ./script.sh --fix-all # Khac phuc toan bo
═══════════════════════════════════════════════════════════════════════
--fix-restore)```╔══════════════════════════════════════════════════════════════════════╗ ║ REDIS CVE SCANNER & MITIGATION TOOL ║ ╚══════════════════════════════════════════════════════════════════════╝
[*] THONG TIN REDIS INSTANCE Host:Port : 127.0.0.1:6379 Version : 7.2.5 ...
╔══════════════════════════════════════════════════════════════════════╗ ║ FIX NHANH: Chan RESTORE (CVE-2026-25243 + 25588 + 25589) ║ ╚══════════════════════════════════════════════════════════════════════╝ Bao ve 3/5 CVE chi voi 1 lenh chan RESTORE
[+] Da backup redis.conf toi: /etc/redis/redis.conf.cve-backup-20260508_120000 [*] Chan RESTORE qua ACL (khong can restart) => ACL SETUSER default -restore ... OK => ACL SAVE ... OK
[*] rename-command RESTORE "" (can restart) => Vo hieu hoa: rename-command RESTORE "" [!] CAN RESTART REDIS de rename-command co hieu luc
[✓] Da chan RESTORE. Cac CVE duoc bao ve:
---
## طرق المعالجة العامة
### الطريقة 1: ACL (Redis >= 6.0) — موصى بها
هذه هي الطريقة **الأكثر أمانًا ومرونة**، ولا تتطلب إعادة تشغيل Redis.```bash
# Tao ACL user an toan cho ung dung
redis-cli ACL SETUSER app_user on >StrongPassword123 ~* \
+@read \ # Quyen doc du lieu
+@write \ # Quyen ghi du lieu
-@dangerous \ # CHAN tat ca lenh nguy hiem (gồm RESTORE)
-@admin \ # CHAN lenh quan tri
-@scripting \ # CHAN Lua scripting
-@blocking \ # CHAN blocking commands
-@keyspace \ # CHAN keyspace notifications
-@pubsub # CHAN pub/sub (neu khong dung)
# Vo hieu hoa default user
redis-cli ACL SETUSER default off
# Luu ACL vinh vien
redis-cli ACL SAVE
أضف الأسطر التالية إلى redis.conf:```conf
rename-command RESTORE ""
rename-command BLPOP "" rename-command BRPOP "" rename-command BRPOPLPUSH "" rename-command BLMOVE "" rename-command BLMPOP "" rename-command BZPOPMIN "" rename-command BZPOPMAX "" rename-command BZMPOP "" rename-command XREAD "" rename-command XREADGROUP ""
rename-command EVAL "" rename-command EVALSHA "" rename-command SCRIPT "" rename-command FUNCTION "" rename-command FCALL "" rename-command FCALL_RO ""
بعد ذلك، أعد تشغيل Redis:```bash
sudo systemctl restart redis-server
# hoặc
sudo service redis-server restart
protected-mode yes bind 127.0.0.1 192.168.1.10 # Chi lang nghe IP tin cay
iptables -A INPUT -p tcp --dport 6379 -s 127.0.0.1 -j ACCEPT iptables -A INPUT -p tcp --dport 6379 -s 10.0.0.0/8 -j ACCEPT iptables -A INPUT -p tcp --dport 6379 -j DROP
iptables-save > /etc/iptables/rules.v4
### الطريقة 4: تشغيل Redis بأقل الصلاحيات```bash
# Tao user redis khong co shell
sudo useradd -r -s /bin/false redis
# Chown thu muc Redis
sudo chown -R redis:redis /var/lib/redis
sudo chown -R redis:redis /etc/redis
# Chay Redis duoi user redis
sudo -u redis redis-server /etc/redis/redis.conf
redis-cli MODULE LIST
redis-cli MODULE UNLOAD timeseries # CVE-2026-25588 redis-cli MODULE UNLOAD bf # CVE-2026-25589
---
## تقييم المخاطر — نظام ريديس الداخلي / سينتينل
هذا القسم مخصص لمجموعات **Redis Sentinel** أو خوادم Redis المستقلة التي تعمل داخل الشبكة الداخلية، والمحمية بجدار حماية (Fortinet، iptables، إلخ) و**بدون اتصال مباشر بالإنترنت**.
### الملخص
| مستوى الحماية الحالي | تقليل المخاطر؟ | هل هناك حاجة للترقية؟ |
| ------------------------------- | -------------------------------------------------------------- | ---------------------------------------- |
| لا يوجد وصول للإنترنت | **نعم** — يزيل المهاجمين من الخارج | ليست هناك حاجة عاجلة |
| جدار حماية Fortinet (مع IPS/DPI) | **نعم** — يفلتر عناوين IP المصدر، ويمكن لـ IPS اكتشاف الحمولات غير الطبيعية | ليست هناك حاجة عاجلة |
| iptables (تقييد عناوين IP المصدر) | **نعم** — فقط العناوين المسموح بها يمكنها الاتصال بمنفذ Redis | ليست هناك حاجة عاجلة |
| **الجمع بين الإجراءات الثلاثة أعلاه** | **يقلل احتمالية الاستغلال بشكل كبير جدًا** | **ليست هناك حاجة عاجلة، ولكن يُنصح بوضع خطة** |
### النقطة الجوهرية: لماذا جدار الحماية غير كافٍ؟
جميع نقاط الضعف الخمس (CVE) تشترك في أمر واحد: يجب أن يكون المهاجم **قد تمت مصادقته بالفعل** مع Redis (PR:L — امتيازات مطلوبة: منخفضة في متجه CVSS). جدار الحماية يمنع الاتصالات من عناوين IP غير المسموح بها، لكنه **لا يحمي** من التهديدات التالية:
| التهديد | احتمالية الحدوث | العواقب إذا تم استغلاله |
| ------------------------------------------------------------------------------------------------------------------ | ----------------------------- | ---------------------------------------------------------------------------- |
| **موظف داخلي خبيث** — لديه وصول إلى الشبكة الداخلية + يعرف كلمة مرور Redis | منخفضة لكن لا يمكن استبعادها | **تنفيذ أوامر عن بُعد (RCE)** على خادم Redis، تصعيد الامتيازات، سرقة البيانات |
| **جهاز داخلي مخترق (حركة جانبية)** — المهاجم يخترق أي جهاز داخل الشبكة، ثم يهاجم Redis منها | متوسطة | جميع بيانات Redis تُسرق/تُعدل/تُحذف؛ يمكن للمهاجم تثبيت باب خلفي |
| **خطأ في تكوين جدار الحماية** — فتح منفذ Redis للخارج عن طريق الخطأ بسبب تغيير قاعدة خاطئ | منخفضة | يعادل تعريضه مباشرة للإنترنت |
| **سلسلة التوريد / طرف ثالث** — شركاء أو موردون لديهم اتصال VPN بالشبكة الداخلية | منخفضة | تنفيذ أوامر عن بُعد (RCE)، تسريب بيانات |
| **ثغرة في جدار الحماية/الشبكة نفسه** — المهاجم يتجاوز جدار الحماية عبر ثغرة أخرى | منخفضة جدًا | النظام الداخلي بأكمله يتأثر |
### تحليل المخاطر الكمي
---```
Rủi ro = Xác suất khai thác × Hậu quả
Với firewall + air-gap:
= (RẤT THẤP: 0.5% - 2%/năm) × (NGHIÊM TRỌNG: RCE toàn hệ thống, mất toàn bộ dữ liệu)
= RỦI RO TRUNG BÌNH — vẫn đáng quan tâm
مجموعة Redis Sentinel تحمل مخاطر إضافية خاصة بها:
| ناقل هجوم Sentinel | الوصف | CVE ذات الصلة |
|---|---|---|
| الاستيلاء على Sentinel — المهاجم يستولي على عقدة Sentinel، ومن ثم يقوم بـ failover إلى replica خبيث | يتواصل Sentinel عبر منفذ خاص (عادة 26379)، إذا لم يكن محميًا بشكل منفصل | CVE-2026-23631 (إذا كانت الـ replica تحتوي على replica-read-only no) |
| ترقية الـ replica — replica مستولى عليها يتم ترقيتها إلى master | يتم تغيير بيانات المجموعة بأكملها | جميع CVEs الخاصة بـ RESTORE (25243, 25588, 25589) |
| مزامنة master-replica — المهاجم يعترض تدفق المزامنة | يتم سرقة البيانات أثناء عملية المزامنة | CVE-2026-23631 |
| الأولوية | الإجراء | وقت التنفيذ | هل يتطلب downtime؟ |
|---|---|---|---|
| P0 — فوري | تشغيل سكربت الفحص على جميع العقد (master + replica + sentinel): ./CVE-...sh -H <ip> -p <port> -a <pass> | 2-5 دقائق / عقدة | لا |
| P0 — فوري | التحقق من replica-read-only yes على جميع الـ replicas: redis-cli CONFIG GET replica-read-only | دقيقة واحدة / عقدة | لا |
| P1 — خلال الأسبوع | حظر RESTORE عبر ACL (بدون الحاجة إلى إعادة تشغيل): redis-cli ACL SETUSER default -restore; redis-cli ACL SAVE | دقيقتان / عقدة | لا |
| P1 — خلال الأسبوع | حظر أوامر @blocking عبر ACL (CVE-2026-23479) | دقيقتان / عقدة | لا |
| P1 — خلال الأسبوع | حظر أوامر @scripting عبر ACL إذا لم يتم استخدام Lua (CVE-2026-23631) | دقيقتان / عقدة | لا |
| P2 — نافذة الصيانة القادمة | إضافة rename-command RESTORE "", rename-command EVAL "", ... إلى redis.conf | 10 دقائق (مع إعادة تشغيل) | نعم (إعادة تشغيل Redis) |
| P2 — نافذة الصيانة القادمة | ترقية Redis إلى الإصدار المُصحح (6.2.22, 7.2.14, 7.4.9, 8.2.6, 8.4.3, 8.6.3) | 30-60 دقيقة / مجموعة | نعم (إعادة تشغيل المجموعة بالكامل) |
redis-cli -h <node_ip> -p 6379 -a ACL SETUSER app_user on >StrongPass123 ~*
+@read +@write
-@dangerous -@admin -@scripting -@blocking
-restore -debug
redis-cli -h <node_ip> -p 6379 -a ACL SETUSER default off
redis-cli -h <node_ip> -p 6379 -a ACL SAVE
redis-cli -h <node_ip> -p 6379 -a --user app_user --pass StrongPass123 PING
```markdown
- **`--no-verify`**: Bỏ qua xác minh chữ ký (không được khuyến nghị cho môi trường sản xuất).
- **`--timeout <giây>`**: Đặt thời gian chờ tải xuống (mặc định: `60`).
- **`--retries <số lần>`**: Số lần thử lại khi tải xuống thất bại (mặc định: `3`).
- **`--proxy <url>`**: Sử dụng proxy HTTP(S) cho tất cả các yêu cầu mạng.
- **`--output <đường dẫn>`**: Chỉ định thư mục đầu ra tùy chỉnh (mặc định: `./downloads`).
- **`--log-level <mức độ>`**: Đặt mức độ ghi log (`debug`, `info`, `warning`, `error`; mặc định: `info`).
### Ví dụ sử dụng
```bash
# Tải xuống một gói cụ thể
./tool.py --package "example-package" --version "1.2.3"
# Tải xuống nhiều gói cùng lúc
./tool.py --package "pkg1" --package "pkg2" --package "pkg3"
# Sử dụng proxy và tăng số lần thử lại
./tool.py --package "example-package" --proxy "http://proxy.example.com:8080" --retries 5
# Tải xuống phiên bản mới nhất và lưu vào thư mục tùy chỉnh
./tool.py --package "example-package" --latest --output "/tmp/my-downloads"
Công cụ có thể được cấu hình thông qua tệp config.yaml trong thư mục gốc của dự án. Tệp cấu hình hỗ trợ các tùy chọn sau:
# config.yaml
download:
directory: "./downloads"
timeout: 60
retries: 3
verify_signatures: true
network:
proxy: ""
user_agent: "MyTool/1.0"
logging:
level: "info"
file: "./logs/tool.log"
Các biến môi trường sau có thể được sử dụng để ghi đè cấu hình:
| Biến | Mô tả | Giá trị mặc định |
|---|---|---|
TOOL_DOWNLOAD_DIR | Thư mục tải xuống | ./downloads |
TOOL_TIMEOUT | Thời gian chờ tải xuống (giây) | 60 |
TOOL_RETRIES | Số lần thử lại | 3 |
TOOL_PROXY | URL proxy | (trống) |
TOOL_LOG_LEVEL | Mức độ ghi log | info |
Công cụ được tổ chức theo kiến trúc mô-đun:
src/
├── __init__.py
├── cli.py # Xử lý đối số dòng lệnh
├── config.py # Quản lý cấu hình
├── downloader.py # Logic tải xuống
├── verifier.py # Xác minh chữ ký
├── logger.py # Thiết lập ghi log
└── utils.py # Các hàm tiện ích
cli.py phân tích các đối số dòng lệnh.config.py tải cấu hình từ tệp và biến môi trường.logger.py thiết lập ghi log dựa trên cấu hình.downloader.py xử lý việc tải xuống các gói được chỉ định.verifier.py xác minh chữ ký nếu được bật.Công cụ sử dụng các mã thoát sau:
| Mã thoát | Ý nghĩa |
|---|---|
0 | Thành công |
1 | Lỗi chung |
2 | Lỗi đối số dòng lệnh |
3 | Lỗi cấu hình |
4 | Lỗi mạng |
5 | Lỗi xác minh chữ ký |
Lỗi mạng: Không thể kết nối với máy chủ: Kiểm tra kết nối internet và cài đặt proxy.Lỗi xác minh: Chữ ký không hợp lệ: Gói có thể đã bị giả mạo. Tải xuống lại từ nguồn đáng tin cậy.Lỗi cấu hình: Tệp không tìm thấy: Đảm bảo tệp config.yaml tồn tại và có định dạng hợp lệ.# Tạo môi trường ảo
python -m venv venv
source venv/bin/activate # Trên Windows: venv\Scripts\activate
# Cài đặt các phụ thuộc phát triển
pip install -r requirements-dev.txt
# Chạy kiểm tra
pytest tests/
# Chạy lint
flake8 src/
git checkout -b feature/amazing-feature).git commit -m 'Add some amazing feature').git push origin feature/amazing-feature).Dự án này được phân phối theo giấy phép MIT. Xem tệp LICENSE để biết thêm chi tiết.
# ============================================
# Chay tren TUNG node Sentinel (port 26379)
# ============================================
# Sentinel thuong khong can RESTORE/EVAL — chan toan bo lenh nguy hiem
redis-cli -h <sentinel_ip> -p 26379 -a <sentinel_pass> ACL SETUSER default \
-@dangerous -@admin -@scripting -@blocking -restore
redis-cli -h <sentinel_ip> -p 26379 -a <sentinel_pass> ACL SAVE
```
### تدفق القرار: هل تحتاج إلى الترقية فورًا؟```
Hệ thống Redis của bạn có public-facing không?
├── CÓ → NÂNG CẤP NGAY hoặc áp dụng workaround TRONG 24H
└── KHÔNG (nội bộ / air-gapped)
├── Có dùng Lua scripting (EVAL/EVALSHA)?
│ ├── CÓ → CVE-2026-23631: Kiểm tra replica-read-only, chặn @scripting qua ACL
│ └── KHÔNG → Rủi ro thấp hơn
├── Có dùng RedisTimeSeries hoặc RedisBloom module?
│ ├── CÓ → CVE-2026-25588/25589: Chặn RESTORE qua ACL, nâng cấp module
│ └── KHÔNG → Không bị ảnh hưởng bởi 25588/25589
├── Có dùng blocking commands (BLPOP, XREAD, ...)?
│ ├── CÓ → CVE-2026-23479: Chặn @blocking qua ACL hoặc rename-command
│ └── KHÔNG → Chặn @blocking để an toàn (không ảnh hưởng)
└── KẾT LUẬN:
├── Áp dụng ACL workaround NGAY TRONG TUẦN (không downtime)
└── Lên kế hoạch nâng cấp TRONG MAINTENANCE WINDOW TIẾP THEO
```
### الخلاصة
> **جدار الحماية + عزل الشبكة يقللان احتمالية الاستغلال إلى مستوى منخفض جدًا، لكن العواقب في حال نجاح الاستغلال تظل تنفيذًا عن بُعد (RCE) على النظام بأكمله.** ومع أن تكلفة المعالجة تكاد تكون صفرًا (إضافة بضعة أسطر من قواعد ACL دون الحاجة إلى إعادة تشغيل)، فإن تطبيق إجراء الحماية يُعد قرارًا مجديًا من ناحية إدارة المخاطر. **لا داعي للذعر والترقية العاجلة**، لكن **يُنصح بتطبيق الحل المؤقت عبر ACL خلال هذا الأسبوع** وجدولة الترقية ضمن نافذة الصيانة التالية.
---
## مرجع ACL
### مجموعات الأوامر المهمة
| المجموعة | الوصف | تأثير CVE |
| ------------- | ---------------------------------------------------------------------------------------------- | -------------------------------- |
| `@dangerous` | أوامر خطيرة (تشمل RESTORE، FLUSHDB، FLUSHALL، KEYS، SHUTDOWN، DEBUG، CONFIG) | CVE-2026-25243, 25588, 25589 |
| `@blocking` | أوامر الحظر (BLPOP، BRPOP، BZPOPMIN، XREAD، WAIT، ...) | CVE-2026-23479 |
| `@scripting` | برمجة Lua (EVAL، EVALSHA، SCRIPT، FUNCTION، FCALL) | CVE-2026-23631 |
| `@admin` | أوامر الإدارة (CONFIG، ACL، CLIENT، CLUSTER، MONITOR، SHUTDOWN، ...) | حماية عامة |
| `@keyspace` | أوامر متعلقة بمساحة المفاتيح (KEYS، SCAN، FLUSHDB، FLUSHALL، ...) | حماية عامة |
| `@read` | أوامر قراءة البيانات (GET، HGET، LRANGE، SMEMBERS، ZRANGE، ...) | آمنة |
| `@write` | أوامر كتابة البيانات (SET، HSET، LPUSH، SADD، ZADD، ...) | آمنة |
### مثال على تكوين ACL كامل```bash
# 1. Tao admin user (day du quyen)
redis-cli ACL SETUSER admin on >AdminPass123 ~* +@all
# 2. Tao app user (quyen gioi han)
redis-cli ACL SETUSER app on >AppPass123 ~* \
+@read \
+@write \
-@dangerous \
-@admin \
-@scripting \
-@blocking \
-restore \
-debug
# 3. Tao readonly user (chi doc)
redis-cli ACL SETUSER reader on >ReaderPass123 ~* \
+@read \
-@dangerous \
-@admin \
-@scripting
# 4. Vo hieu hoa default user
redis-cli ACL SETUSER default off
# 5. Luu ACL
redis-cli ACL SAVE
# 6. Kiem tra ACL
redis-cli ACL LIST
```
### التحقق الفعّال من قوائم التحكم بالوصول (ACL)```bash
# Liet ke tat ca ACL rules
redis-cli ACL LIST
# Kiem tra quyen cua mot user
redis-cli ACL GETUSER app
# Kiem tra user hien tai
redis-cli ACL WHOAMI
# Xem log vi pham ACL
redis-cli ACL LOG
```
---
## إجراء الفحص الدوري
### 1. الفحص لمرة واحدة (مخصص)```bash
./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --scan \
-H <redis_host> -p <port> -a <password> \
-o report_$(date +%Y%m%d_%H%M%S).txt
```
### 2. فحص دفعة من مثيلات Redis متعددة
أنشئ ملف `redis_hosts.txt`:```
# Format: host:port:password:user
10.0.0.1:6379:pass1:default
10.0.0.2:6379:pass2:default
10.0.0.3:6380:pass3:admin
```
Script kiểm tra hàng loạt:```bash
#!/bin/bash
# File: batch_check.sh
BATCH_RESULT="batch_result_$(date +%Y%m%d_%H%M%S).txt"
while IFS=':' read -r host port pass user; do
[[ "$host" =~ ^#.* ]] && continue # Bo qua comment
[[ -z "$host" ]] && continue # Bo qua dong trong
echo "============================================" | tee -a "$BATCH_RESULT"
echo "Kiem tra: $host:$port" | tee -a "$BATCH_RESULT"
echo "============================================" | tee -a "$BATCH_RESULT"
./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --scan \
-H "$host" -p "${port:-6379}" \
-a "${pass:-}" -u "${user:-default}" \
2>&1 | tee -a "$BATCH_RESULT"
echo "" | tee -a "$BATCH_RESULT"
done < redis_hosts.txt
echo "Bao cao tong hop: $BATCH_RESULT"
```
### 3. التكامل مع cron (فحص يومي)```bash
# Them vao crontab (chay hang ngay luc 7:00 AM)
0 7 * * * /opt/scripts/CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --scan \
-H 127.0.0.1 -p 6379 -a mypassword \
-o /var/log/redis/cve_report_$(date +\%Y\%m\%d).txt \
> /dev/null 2>&1
```
### 4. التكامل في خط أنابيب CI/CD```yaml
# GitLab CI example
redis-security-scan:
stage: security
image: redis:7-alpine
script:
- chmod +x CVE-2026-25589-25588-25243-23631-23479-REDIS.sh
- ./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --scan \
-H $REDIS_HOST -p $REDIS_PORT -a $REDIS_PASS \
-o cve_report.txt
artifacts:
paths:
- cve_report.txt
when: always
allow_failure: true
```
---
## الأسئلة الشائعة (FAQ)
### س: هل أحتاج إلى إعادة تشغيل Redis بعد تطبيق `--fix-...`؟
**ج:** نعم، بالنسبة لتغييرات `rename-command` — فهي لا تصبح سارية المفعول إلا بعد إعادة تشغيل Redis. التغييرات عبر `CONFIG SET` (مثل `protected-mode`، `replica-read-only`) تصبح سارية المفعول فورًا. التغييرات عبر `ACL SETUSER` + `ACL SAVE` تصبح سارية المفعول فورًا، **بدون الحاجة إلى إعادة تشغيل**. إذا كنت تستخدم ACL فقط (`--fix-restore`، `--fix-blocking`، `--fix-lua`)، فلن تحتاج إلى إعادة تشغيل. يقوم السكربت دائمًا بتطبيق كل من ACL (وقت التشغيل) و rename-command (يتطلب إعادة تشغيل) في نفس الوقت لتوفير حماية متعددة الطبقات.
### س: هل يؤثر حظر RESTORE على التشغيل الطبيعي؟
**ج:** عادةً ما يُستخدم أمر `RESTORE` فقط في الحالات التالية:
- استعادة البيانات من النسخ الاحتياطي
- ترحيل البيانات بين النسخ (instances)
- مزامنة البيانات المخصصة
إذا كان تطبيقك لا يستخدم RESTORE، فإن حظر هذا الأمر آمن. إذا كنت تستخدمه، فأنشئ مستخدم ACL منفصلًا لديه صلاحية RESTORE واستخدمه فقط لأغراض الإدارة.
### س: أنا أستخدم Redis < 6.0، و ACL غير متاح. ماذا أفعل؟
**ج:** مع Redis < 6.0، يمكنك فقط استخدام `rename-command` لتعطيل الأوامر. الخطوات:
1. أضف `rename-command RESTORE ""` إلى redis.conf
2. أضف أوامر `rename-command` لأوامر الحظر (blocking commands)
3. فعّل `protected-mode yes`
4. قم بإعداد `requirepass` بكلمة مرور قوية
5. قيّد الاتصالات عبر جدار الحماية
6. أعد تشغيل Redis
### س: كيف أعرف ما إذا كانت وحدات RedisTimeSeries/RedisBloom محمّلة؟
**ج:** قم بتشغيل الأمر:```bash
redis-cli MODULE LIST
```
سيظهر الإخراج قائمة بالوحدات النمطية المحمّلة مع الإصدار. إذا لم ترَ `timeseries` أو `bf`، فهذا يعني أن الوحدة النمطية غير محمّلة.
### س: هل `--fix-all` / `--fix-restore` / `--fix-...` آمنة للإنتاج؟
**ج:** تنفذ أوامر الإصلاح تغييرات آمنة:
- نسخ احتياطي لـ redis.conf قبل التعديل (إلا عند استخدام `--no-backup`)
- **ACL** (`-restore`, `-@blocking`, `-@scripting`): تسري فورًا، بدون توقف، وسهلة التراجع
- **rename-command**: يتطلب إعادة تشغيل Redis ليصبح ساريًا
- **CONFIG SET**: وقت التشغيل، ويُفقد عند إعادة التشغيل إذا لم يُكتب في redis.conf
توصية: بالنسبة للإنتاج، يُفضّل استخدام `--fix-restore`, `--fix-blocking`, `--fix-lua` أولاً (ACL فقط، بدون إعادة تشغيل). ثم جدولة نافذة صيانة لإعادة التشغيل مع `rename-command`.
### س: كيف يمكن التراجع عن تغييرات `--fix-...`؟
**ج:**
1. إذا تم النسخ الاحتياطي: انسخ ملف النسخ الاحتياطي فوق redis.conf، ثم أعد تشغيل Redis
2. إذا استخدمت `CONFIG SET`: إعادة تشغيل Redis ستستعيد الإعدادات من الملف
3. إذا استخدمت `ACL SETUSER`: استخدم `ACL SETUSER <user> +<cmd>` لاستعادة الصلاحيات
### س: هل يجب عليّ ترقية Redis؟
**ج:** **نعم، إذا كان ذلك ممكنًا.** الترقية إلى إصدار مُصحّح هي الحل الجذري الأكثر فعالية. هذا السكربت مخصص للحالات التالية:
- عدم القدرة على الترقية فورًا بسبب قيود التطبيق
- الحاجة إلى وقت لاختبار الإصدار الجديد
- الحاجة إلى إجراء حماية مؤقت أثناء انتظار نافذة الصيانة
### س: Redis يعمل داخليًا، بدون إنترنت، ومحمي بجدار حماية — هل أحتاج إلى الترقية؟
**ج:** **لا حاجة للترقية العاجلة**، لكن **يُنصح بتطبيق الحلول المؤقتة ووضع خطة للترقية** لأن:
- جدار الحماية يقلل فقط من **احتمالية** التعرض للهجوم، ولا يزيل الخطر تمامًا
- المهاجم من داخل الشبكة الداخلية (موظف خبيث، جهاز مخترق، حركة جانبية) لا يزال بإمكانه الاستغلال
- عواقب الاستغلال هي **RCE على مستوى النظام بالكامل** — أعلى مستوى من الخطورة
- **تكلفة الحلول المؤقتة منخفضة جدًا**: إضافة ACL `-restore -@blocking -@scripting` تستغرق دقيقتين، بدون توقف
**الخطة الموصى بها:**
1. **هذا الأسبوع:** تطبيق حل ACL المؤقت (بدون توقف)
2. **نافذة الصيانة القادمة:** ترقية Redis + إضافة `rename-command`
انظر التفاصيل في [تقييم المخاطر — نظام Redis الداخلي / Sentinel](#تقييم-المخاطر--نظام-redis-الداخلي--sentinel).
---
## المراجع
- [استشارة أمان Redis الرسمية](https://redis.io/blog/security-advisory-cve202623479-cve202625243-cve-2026-25588-cve202625589-cve-2026-23631/)
- [GitHub Advisory — CVE-2026-25243 (RESTORE RCE)](https://github.com/redis/redis/security/advisories/GHSA-c8h9-259x-jff4)
- [GitHub Advisory — CVE-2026-23631 (Lua UAF)](https://github.com/redis/redis/security/advisories/GHSA-8ghh-qpmp-7826)
- [توثيق Redis ACL](https://redis.io/docs/latest/operate/oss_and_stack/management/security/acl/)
- [توثيق Redis rename-command](https://redis.io/docs/latest/operate/oss_and_stack/management/security/#disable-specific-commands)
- [NVD — CVE-2026-25243](https://nvd.nist.gov/vuln/detail/CVE-2026-25243)
- [NVD — CVE-2026-25588](https://nvd.nist.gov/vuln/detail/CVE-2026-25588)
- [OpenCVE — CVE-2026-23479](https://app.opencve.io/cve/CVE-2026-23479)
- [Tenable — CVE-2026-23631](https://www.tenable.com/cve/CVE-2026-23631)
---
> **إخلاء مسؤولية:** تم إعداد هذا المستند بناءً على معلومات عامة من استشارة أمان Redis ومصادر NVD. يتحمل المستخدم مسؤولية التحقق والتأكد من أن إجراءات المعالجة مناسبة لبيئته قبل تطبيقها.