Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-25589-25588-25243-23631-23479-REDIS — نص تشخيصي ومعالجة لخمس ثغرات أمنية في Redis، يوفر فحصًا وتخفيفًا قائمًا على ACL وإرشادات لتقوية الإعدادات لثغرات تنفيذ الأكواد عن بُعد (RCE) الموثّقة. | Kitploit
أدوات/GitHubGitHub/mgiay/cve-2026-25589-25588-25243-23631-23479-redis
تحليل الثغرات الأمنيةتدقيق التكوينالتعلم والتعليمموارد منسقةأمن قواعد البيانات
GitHubmgiay/cve-2026-25589-25588-25243-23631-23479-redis

CVE-2026-25589-25588-25243-23631-23479-REDIS

نص تشخيصي ومعالجة لخمس ثغرات أمنية في Redis، يوفر فحصًا وتخفيفًا قائمًا على ACL وإرشادات لتقوية الإعدادات لثغرات تنفيذ الأكواد عن بُعد (RCE) الموثّقة.

عرض المستودع
منذ 3 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

دليل فحص ومعالجة 5 ثغرات CVE في Redis حتى 2026.05.08

تاريخ الإصدار: 2026-05-08 المؤلف: TonyCao ([email protected]) المصدر: Redis Security Advisory


الفهرس

  1. نظرة عامة
  2. الإصدارات المتأثرة
  3. تفاصيل كل CVE
    • CVE-2026-23479 — Use-after-free في Unblock Client Flow
    • CVE-2026-25243 — وصول غير صالح للذاكرة في RESTORE
    • CVE-2026-25588 — RESTORE مع وحدة RedisTimeSeries
    • CVE-2026-25589 — RESTORE مع وحدة RedisBloom
    • CVE-2026-23631 — Lua Use-After-Free عبر مزامنة Master-Replica
  4. دليل استخدام السكربت
  5. طرق المعالجة العامة
  6. تقييم المخاطر — أنظمة Redis الداخلية / Sentinel
  7. مرجع ACL
  8. إجراءات الفحص الدورية
  • الأسئلة الشائعة (FAQ)

  • نظرة عامة

    في 05/05/2026، نشرت Redis Ltd. نشرة أمنية حول 5 ثغرات أمنية خطيرة تؤثر على جميع إصدارات Redis OSS/CE. جميع هذه الثغرات يمكن أن تؤدي إلى تنفيذ كود عن بُعد (RCE) إذا تم استغلالها بنجاح.

    #كود CVECVSSالمستوىنوع الخللشروط الاستغلال
    1CVE-2026-234797.7HIGHUse-After-Freeمصادق عليه، لديه صلاحية تشغيل أوامر الحظر
    2CVE-2026-252437.7HIGHوصول غير صالح للذاكرةمصادق عليه، لديه صلاحية تشغيل RESTORE
    3CVE-2026-255887.7HIGHوصول غير صالح للذاكرةمصادق عليه، لديه صلاحية RESTORE + وحدة RedisTimeSeries
    4CVE-2026-255897.7HIGHوصول غير صالح للذاكرةمصادق عليه، لديه صلاحية RESTORE + وحدة RedisBloom
    5CVE-2026-236316.1MEDIUMUse-After-Freeمصادق عليه، replica مع replica-read-only = معطل

    النقطة المشتركة: جميع الثغرات تتطلب أن يكون المهاجم مصادقًا (authenticated) على مثيل Redis. CVE-2026-23631 تؤثر فقط على replica مع إعداد replica-read-only disabled.


    الإصدارات المتأثرة

    Redis OSS/CE — جميع الإصدارات قبل التصحيح

    سلسلة الإصداراتالإصدار المُصحح (الحد الأدنى)
    6.2.x6.2.22
    7.2.x7.2.14
    7.4.x7.4.9
    8.2.x8.2.6
    8.4.x8.4.3
    8.6.x8.6.3

    الوحدات — الإصدارات المُصححة

    الوحدةالحد الأدنى للإصدار
    RedisTimeSeries1.12.14 / 1.10.24 / 1.8.23
    RedisBloom2.8.20 / 2.6.28 / 2.4.23

    Redis Software (Enterprise)

    الإصدارالتصحيح
    8.0.68.0.10-64
    7.22.27.22.2-79
    7.8.67.8.6-253
    7.4.67.4.6-279
    7.2.47.2.4-153

    Redis Cloud

    جميع عمليات نشر Redis Cloud تم تصحيحها تلقائيًا في وقت نشر النشرة الأمنية.


    تفاصيل كل CVE

    CVE-2026-23479

    الخاصيةالقيمة
    العنوانUse-After-Free في Unblock Client Flow
    CVSS 4.07.7 (HIGH)
    CWECWE-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).

    علامات الاكتشاف

    • تعطل خادم Redis مع تتبع مكدس (stack trace) يحتوي على دوال متعلقة بـ unblock client، processCommandAndResetClient
    • عملية redis-server تنفذ أوامر غير معروفة
    • اتصالات شبكة غير مصرح بها إلى مثيل Redis

    أوامر الحظر المتأثرة```

    BLPOP, BRPOP, BRPOPLPUSH, BLMOVE, BLMPOP, BZPOPMIN, BZPOPMAX, BZMPOP, WAIT, WAITAOF, XREAD, XREADGROUP

    root@kitploit:~
    #### طريقة المعالجة (بدون ترقية)
    
    **الطريقة 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

    Thêm vào redis.conf:

    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 ""

    root@kitploit:~
    **الطريقة 3 — تفعيل الوضع المحمي وتقييد الاتصالات:**```bash
    redis-cli CONFIG SET protected-mode yes
    # Trong redis.conf:
    protected-mode yes
    bind 127.0.0.1
    

    CVE-2026-25243

    الخاصيةالقيمة
    العنوانوصول غير صالح للذاكرة في أمر RESTORE
    CVSS 4.07.7 (عالٍ)
    CWECWE-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

    الوصف الفني

    تتضمن الثغرة مشكلتين فرعيتين:

    1. تحرير مزدوج (Double-free) في نواة Redis (اكتشفها Emil Lerner) — معالجة RESTORE لحمولة تسلسلية خاصة تؤدي إلى تحرير الذاكرة مرتين على نفس المؤشر.
    2. تجاوز عدد صحيح وقراءة خارج الحدود (Out-Of-Bounds read) في VectorSets (اكتشفها Joseph Surin) — حمولة مصممة خصيصًا تسبب تجاوزًا في الأعداد الصحيحة، مما يؤدي إلى قراءة/كتابة خارج منطقة الذاكرة المخصصة.

    يقوم مهاجم مُصادق عليه بإرسال حمولة RESTORE مصممة خصيصًا لاستغلال الأخطاء المذكورة أعلاه، مما قد يؤدي إلى تنفيذ تعليمات برمجية عن بُعد (RCE) في سياق عملية redis-server.

    مؤشرات الاكتشاف

    • تعطل غير طبيعي لخادم Redis
    • تغيير في ملفات النظام (خاصة في المجلد الذي يحتوي على RDB/AOF/إعدادات Redis)
    • اتصالات شبكة غير مصرح بها من/إلى مثيل Redis
    • تغيير في ملف إعدادات Redis

    طرق المعالجة (بدون الترقية)

    الطريقة 1 — حظر RESTORE عبر ACL (موصى به):```bash

    Chặn lệnh RESTORE

    redis-cli ACL SETUSER default -restore

    Hoặc chặn toàn bộ nhóm lệnh nguy hiểm

    redis-cli ACL SETUSER default -@dangerous

    redis-cli ACL SAVE

    root@kitploit:~
    **الطريقة 2 — تعطيل RESTORE (يتطلب إعادة تشغيل Redis):**```bash
    # Thêm vào redis.conf:
    rename-command RESTORE ""
    

    الطريقة 3 — إنشاء ACL مستخدم خاص بالتطبيق:```bash

    Tao user cho ung dung chi voi quyen doc/ghi co ban

    redis-cli ACL SETUSER app_user on >StrongPass123 ~*
    +@read +@write
    -@dangerous
    -@admin
    -@scripting
    -@blocking
    -restore
    -debug

    redis-cli ACL SAVE

    root@kitploit:~
    ---
    
    ### 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

    root@kitploit:~
    بعد ذلك، احذف السطر التالي من `redis.conf`:```
    loadmodule /path/to/redistimeseries.so
    

    الطريقة 3 — ترقية الوحدة فقط (بدون ترقية Redis):

    قم بتنزيل إصدار الوحدة المُصحّح:

    • RedisTimeSeries 1.12.14 (للسلسلة 1.12)
    • RedisTimeSeries 1.10.24 (للسلسلة 1.10)
    • RedisTimeSeries 1.8.23 (للسلسلة 1.8)```bash

    Thay the file .so cu bang phien ban moi

    Sau do restart Redis hoac:

    redis-cli MODULE UNLOAD timeseries redis-cli MODULE LOAD /path/to/new/redistimeseries.so

    root@kitploit:~
    ---
    
    ### 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

    root@kitploit:~
    بعد ذلك، احذف السطر التالي من `redis.conf`:```
    loadmodule /path/to/redisbloom.so
    

    الطريقة 3 — ترقية الوحدة فقط (بدون ترقية Redis):

    قم بتنزيل إصدار الوحدة المُصحّح:

    • RedisBloom 2.8.20 (للسلسلة 2.8)
    • RedisBloom 2.6.28 (للسلسلة 2.6)
    • RedisBloom 2.4.23 (للسلسلة 2.4)```bash redis-cli MODULE UNLOAD bf redis-cli MODULE LOAD /path/to/new/redisbloom.so
    root@kitploit:~
    ---
    
    ### 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

    root@kitploit:~
    **الطريقة 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
    root@kitploit:~
    ### متطلبات النظام
    
    - **نظام التشغيل:** 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/
    

    طريقة الاستخدام

    1. عرض التعليمات```bash

    Cấp quyền thực thi

    chmod +x CVE-2026-25589-25588-25243-23631-23479-REDIS.sh

    Chạy không tham số → hiển thị help

    ./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh

    Hoặc tường minh

    ./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --help

    root@kitploit:~
    #### 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
    

    3. معالجة كل CVE على حدة```bash

    Fix tung CVE cu the

    ./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

    root@kitploit:~
    #### 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
    

    5. الإصلاح الكامل```bash

    Fix tat ca CVE (co backup config)

    ./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --fix-all

    Fix all voi file config rieng

    ./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --fix-all
    -c /etc/redis/redis.conf

    Fix all khong backup (khong khuyen nghi)

    ./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --fix-all --no-backup

    Fix all Redis tu xa

    ./CVE-2026-25589-25588-25243-23631-23479-REDIS.sh --fix-all
    -H 10.0.0.1 -p 6379 -a mypassword

    root@kitploit:~
    ### جدول المعاملات الكامل
    
    #### معاملات الإجراء (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:

    • CVE-2026-25243 (RESTORE double-free/OOB)
    • CVE-2026-25588 (RESTORE + RedisTimeSeries)
    • CVE-2026-25589 (RESTORE + RedisBloom)
    root@kitploit:~
    ---
    
    ## طرق المعالجة العامة
    
    ### الطريقة 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
    

    الطريقة 2: rename-command — يتطلب إعادة تشغيل Redis

    أضف الأسطر التالية إلى redis.conf:```conf

    Vo hieu hoa RESTORE (CVE-2026-25243, 25588, 25589)

    rename-command RESTORE ""

    Vo hieu hoa blocking commands (CVE-2026-23479)

    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 ""

    Vo hieu hoa Lua commands (CVE-2026-23631)

    rename-command EVAL "" rename-command EVALSHA "" rename-command SCRIPT "" rename-command FUNCTION "" rename-command FCALL "" rename-command FCALL_RO ""

    root@kitploit:~
    بعد ذلك، أعد تشغيل Redis:```bash
    sudo systemctl restart redis-server
    # hoặc
    sudo service redis-server restart
    

    الطريقة 3: تكوين الشبكة + جدار الحماية```bash

    Trong redis.conf:

    protected-mode yes bind 127.0.0.1 192.168.1.10 # Chi lang nghe IP tin cay

    iptables — chi cho phep IP noi bo

    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

    Luu iptables

    iptables-save > /etc/iptables/rules.v4

    root@kitploit:~
    ### الطريقة 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
    

    الطريقة 5: إزالة الوحدات غير الضرورية```bash

    Kiem tra module dang nap

    redis-cli MODULE LIST

    Go bo module khong can thiet

    redis-cli MODULE UNLOAD timeseries # CVE-2026-25588 redis-cli MODULE UNLOAD bf # CVE-2026-25589

    Xoa loadmodule khoi redis.conf

    Tim va xoa dong:

    loadmodule /path/to/redistimeseries.so

    loadmodule /path/to/redisbloom.so

    root@kitploit:~
    ---
    
    ## تقييم المخاطر — نظام ريديس الداخلي / سينتينل
    
    هذا القسم مخصص لمجموعات **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
    

    نموذج التهديد المحدد لمجموعة Sentinel

    مجموعة 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.conf10 دقائق (مع إعادة تشغيل)نعم (إعادة تشغيل Redis)
    P2 — نافذة الصيانة القادمةترقية Redis إلى الإصدار المُصحح (6.2.22, 7.2.14, 7.4.9, 8.2.6, 8.4.3, 8.6.3)30-60 دقيقة / مجموعةنعم (إعادة تشغيل المجموعة بالكامل)

    مثال: حماية مجموعة Sentinel بالكامل باستخدام ACL (بدون downtime)```bash

    ============================================

    Chay tren TUNG node Redis (master + replica)

    ============================================

    1. Tao ACL user an toan cho ung dung

    redis-cli -h <node_ip> -p 6379 -a ACL SETUSER app_user on >StrongPass123 ~*
    +@read +@write
    -@dangerous -@admin -@scripting -@blocking
    -restore -debug

    2. Vo hieu hoa default user

    redis-cli -h <node_ip> -p 6379 -a ACL SETUSER default off

    3. Luu ACL

    redis-cli -h <node_ip> -p 6379 -a ACL SAVE

    4. Kiem tra lai

    redis-cli -h <node_ip> -p 6379 -a --user app_user --pass StrongPass123 PING

    root@kitploit:~
    ```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ấu hình

    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:

    root@kitploit:~
    # 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"
    

    Biến môi trường

    Các biến môi trường sau có thể được sử dụng để ghi đè cấu hình:

    BiếnMô tảGiá trị mặc định
    TOOL_DOWNLOAD_DIRThư mục tải xuống./downloads
    TOOL_TIMEOUTThời gian chờ tải xuống (giây)60
    TOOL_RETRIESSố lần thử lại3
    TOOL_PROXYURL proxy(trống)
    TOOL_LOG_LEVELMức độ ghi loginfo

    Kiến trúc

    Công cụ được tổ chức theo kiến trúc mô-đun:

    root@kitploit:~
    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
    

    Luồng xử lý

    1. Phân tích đối số: cli.py phân tích các đối số dòng lệnh.
    2. Tải cấu hình: config.py tải cấu hình từ tệp và biến môi trường.
    3. Khởi tạo logger: logger.py thiết lập ghi log dựa trên cấu hình.
    4. Tải xuống: downloader.py xử lý việc tải xuống các gói được chỉ định.
    5. Xác minh: verifier.py xác minh chữ ký nếu được bật.
    6. Báo cáo: Công cụ ghi lại kết quả và thoát với mã trạng thái thích hợp.

    Xử lý lỗi

    Công cụ sử dụng các mã thoát sau:

    Mã thoátÝ nghĩa
    0Thành công
    1Lỗi chung
    2Lỗi đối số dòng lệnh
    3Lỗi cấu hình
    4Lỗi mạng
    5Lỗi xác minh chữ ký

    Các lỗi phổ biến

    • 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ệ.

    Phát triển

    Thiết lập môi trường phát triển

    root@kitploit:~
    # 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/
    

    Đóng góp

    1. Fork repository.
    2. Tạo nhánh tính năng (git checkout -b feature/amazing-feature).
    3. Commit các thay đổi (git commit -m 'Add some amazing feature').
    4. Đẩy lên nhánh (git push origin feature/amazing-feature).
    5. Mở Pull Request.

    Giấy phép

    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.

    Tín dụng

    • Tác giả: Tên tác giả
    • Người đóng góp: Danh sách người đóng góp
    • Công cụ của bên thứ ba: requests, PyYAML, click
    root@kitploit:~
    # ============================================
    # 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. يتحمل المستخدم مسؤولية التحقق والتأكد من أن إجراءات المعالجة مناسبة لبيئته قبل تطبيقها.
    
    تنزيل الأداة