آسیب‌پذیری بحرانی CVE-2026-41940 در cPanel و WHM — راهنمای وصله و شناسایی نفوذ

اقدام فوری الزامی است

این آسیب‌پذیری امکان دور زدن احراز هویت (Authentication Bypass) را در تمام نسخه‌های cPanel بعد از ۱۱.۴۰ فراهم می‌کند. اگر سرور شما وصله (Patch امنیتی) دریافت نکرده، بلافاصله اقدام کنید.

علت آسیب‌پذیری

یک نقص امنیتی از نوع Authentication Bypass (دور زدن احراز هویت) در نرم‌افزار cPanel — از جمله نسخه DNSOnly — شناسایی شده است. این آسیب‌پذیری تمامی نسخه‌های بعد از ۱۱.۴۰ را تحت تأثیر قرار می‌دهد.

بهره‌برداری موفق از این نقص به مهاجم اجازه می‌دهد بدون داشتن اعتبارنامه (Credential) معتبر، به پنل مدیریتی cPanel یا WHM دسترسی پیدا کند.

این آسیب‌پذیری از طریق تزریق کاراکتر خط جدید (Newline Injection) در فیلد رمز عبور Session، امکان جعل یک Session احراز هویت‌شده را فراهم می‌کند.

نسخه‌های وصله‌ (Patch امنیتی) شده — cPanel & WHM

تیم cPanel وصله (Patch امنیتی) امنیتی را برای نسخه‌های زیر منتشر کرده است:

  • 11.86.0.41
  • 11.110.0.97
  • 11.118.0.63
  • 11.126.0.54
  • 11.130.0.19
  • 11.132.0.29
  • 11.136.0.5
  • 11.134.0.20

وصله (Patch امنیتی) برای نسخه WP Squared نیز منتشر شده است: 136.1.7

اقدامات الزامی

مرحله ۱ — به‌روزرسانی فوری سرور

دستور زیر را با دسترسی root اجرا کنید تا سرور به آخرین نسخه وصله‌شده (Patch امنیتی) ارتقاء یابد:

/scripts/upcp --force

مرحله ۲ — تأیید نسخه و ری‌استارت سرویس cPanel

پس از اتمام به‌روزرسانی، نسخه build فعلی را بررسی و سرویس cpsrvd را راه‌اندازی مجدد کنید:

/usr/local/cpanel/cpanel -V
/scripts/restartsrv_cpsrvd

مرحله ۳ — سرورهایی که به‌روزرسانی خودکار آن‌ها غیرفعال یا قفل شده

اگر به‌روزرسانی‌های cPanel را غیرفعال کرده‌اید یا نسخه cPanel را روی یک نسخه خاص قفل (Pin) کرده‌اید، این سرورها به‌صورت خودکار به‌روز نمی‌شوند. این سرورها را به‌صورت دستی و با اولویت بالا به‌روزرسانی کنید.

نکته مهم برای CentOS 7 / CloudLinux 7

اگر سیستم‌عامل سرور شما CentOS 7 یا CloudLinux 7 است، باید نسخه cPanel را روی 11.110 تنظیم کنید.

مرحله ۴ — مقابله موقت (در صورت عدم امکان به‌روزرسانی فوری)

اگر به هر دلیلی امکان اعمال  وصله (Patch امنیتی) را ندارید، یکی از دو روش زیر را اجرا کنید:

  • مسدودسازی پورت‌ها در فایروال: ترافیک ورودی روی پورت‌های ۲۰۸۳، ۲۰۸۷، ۲۰۹۵ و ۲۰۹۶ را مسدود کنید.
  • توقف سرویس‌های cpsrvd و cpdavd: دستور زیر را اجرا کنید:
whmapi1 configureservice service=cpsrvd enabled=0 monitored=0 && \
whmapi1 configureservice service=cpdavd enabled=0 monitored=0 && \
/scripts/restartsrv_cpsrvd --stop && \
/scripts/restartsrv_cpdavd --stop

اسکریپت شناسایی نشانه‌های نفوذ (IOC Detection Script)

برای بررسی اینکه آیا سرور شما پیش از وصله مورد بهره‌برداری قرار گرفته یا نه، cPanel یک اسکریپت تشخیص ارائه داده است. این اسکریپت فایل‌های Session موجود در فایل‌سیستم را اسکن کرده و نشانه‌های احتمالی نفوذ را بررسی می‌کند.

این اسکریپت چهار نشانه اصلی را بررسی می‌کند:

  • IOC 0: وجود همزمان فیلدهای token_denied و cp_security_token در یک Session با منشأ badpass — قوی‌ترین نشانه بهره‌برداری موفق یا ناموفق.
  • IOC 1: Session در حالت pre-auth (احراز هویت نشده) که دارای ویژگی‌های Session احراز هویت‌شده است.
  • IOC 2: Session با tfa_verified=1 بدون منشأ ورود معتبر.
  • IOC 3: مقدار فیلد pass حاوی کاراکتر خط جدید (Newline Injection) — فایل Session دست‌کاری‌شده.

محتوای فایل ioc_checksessions_files.sh را ذخیره کرده و به‌صورت زیر اجرا کنید:

/bin/bash ./ioc_checksessions_files.sh

کد کامل اسکریپت

#!/bin/bash
# Scan for compromised session files

SESSIONS_DIR="/var/cpanel/sessions"
COMPROMISED=0

echo "[*] Scanning session files for injection indicators..."

for session_file in "$SESSIONS_DIR"/raw/*; do
    [ -f "$session_file" ] || continue
    session_name=$(basename "$session_file")
    preauth_file="$SESSIONS_DIR/preauth/$session_name"

    # IOC 0: token_denied + cp_security_token با منشأ badpass
    if grep -q '^token_denied=' "$session_file" && \
       grep -q '^cp_security_token=' "$session_file"; then

        token_val=$(grep '^cp_security_token=' "$session_file" | head -1 | cut -d= -f2)
        denied_val=$(grep '^token_denied=' "$session_file" | head -1 | cut -d= -f2)
        origin=$(grep '^origin_as_string=' "$session_file" | head -1 | cut -d= -f2-)
        used=$(grep -a "$token_val" /usr/local/cpanel/logs/access_log | grep -m1 " 200 ")
        external_auth=$(grep '^successful_external_auth_with_timestamp=' "$session_file")

        if grep -q '^origin_as_string=.*method=badpass' "$session_file"; then
            if [ -z "$external_auth" ] && [ -z "$used" ]; then
                echo "Found possible injected session file: $session_file"
                echo "  - No sign of usage"
            else
                echo "[!] CRITICAL: Exploitation artifact - token_denied with injected cp_security_token: $session_file"
                echo "    - cp_security_token=$token_val"
                echo "    - token_denied=$denied_val"
                echo "    - origin=$origin"
                echo "    - Verdict: Session was pre-auth (badpass origin) with attacker-injected token"
                echo "    - USED:  $used"
                COMPROMISED=1
            fi
        else
            echo "[!] WARNING: Suspicious session with token_denied + cp_security_token: $session_file"
        fi
    fi

    # IOC 1: Pre-auth session با ویژگی‌های Session احراز هویت‌شده
    if [ -f "$preauth_file" ]; then
        if grep -qE '^successful_external_auth_with_timestamp=' "$session_file"; then
            echo "[!] CRITICAL: Injected session detected: $session_file"
            COMPROMISED=1
        fi
    fi

    # IOC 2: tfa_verified=1 بدون منشأ ورود معتبر
    if grep -q '^tfa_verified=1' "$session_file" && \
       ! grep -q '^origin_as_string=.*method=handle_form_login' "$session_file" && \
       ! grep -q '^origin_as_string=.*method=create_user_session' "$session_file" && \
       ! grep -q '^origin_as_string=.*method=handle_auth_transfer' "$session_file"; then
        echo "[!] WARNING: Session with tfa_verified but suspicious origin: $session_file"
        COMPROMISED=1
    fi

    # IOC 3: Newline در مقدار pass
    if grep -qzP '(?m)^pass=.*\n.' "$session_file" 2>/dev/null; then
        echo "[!] CRITICAL: Multi-line pass value detected: $session_file"
        COMPROMISED=1
    fi
done

if [ "$COMPROMISED" -eq 0 ]; then
    echo ""
    echo "[+] No indicators of compromise found."
else
    echo ""
    echo "[!] INDICATORS OF COMPROMISE DETECTED - IMMEDIATE ACTION REQUIRED"
    echo "    1. Purge all affected sessions"
    echo "    2. Force password reset for root and all WHM users"
    echo "    3. Audit /var/log/wtmp and WHM access logs for unauthorized access"
    echo "    4. Check for persistence mechanisms (cron, SSH keys, backdoors)"
fi

نمونه خروجی اسکریپت (سرور آلوده)

در صورت بهره‌برداری موفق، خروجی اسکریپت به شکل زیر خواهد بود (نمونه از IP مهاجم: 100.96.3.23):

[*] Scanning session files for injection indicators...
[!] CRITICAL: Exploitation artifact - token_denied with injected cp_security_token:
    /var/cpanel/sessions/raw/:Q3f8Ag2epeBuTaIZ
    - cp_security_token=/cpsess04396539398
    - token_denied=1
    - origin=address=100.96.3.23,app=whostmgrd,method=badpass
    - Verdict: Session was pre-auth (badpass origin) with attacker-injected token

[!] WARNING: Session with tfa_verified but suspicious origin:
    /var/cpanel/sessions/raw/:Q3f8Ag2epeBuTaIZ

[!] INDICATORS OF COMPROMISE DETECTED - IMMEDIATE ACTION REQUIRED
    1. Purge all affected sessions
    2. Force password reset for root and all WHM users
    3. Audit /var/log/wtmp and WHM access logs for unauthorized access
    4. Check for persistence mechanisms (cron, SSH keys, backdoors)

اقدامات پس از شناسایی نفوذ

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

  • پاک‌سازی تمام Session های آسیب‌دیده: تمام فایل‌های Session مشکوک در مسیر /var/cpanel/sessions/ را حذف کنید.
  • بازنشانی اجباری رمز عبور root و تمام کاربران WHM: پس از نفوذ باید تمام اعتبارنامه‌ها ابطال و رمزهای جدید تعریف شوند.
  • بررسی لاگ‌های دسترسی: فایل /var/log/wtmp و لاگ‌های دسترسی WHM را برای شناسایی ورودهای غیرمجاز تحلیل کنید.
  • بررسی مکانیزم‌های ماندگاری (Persistence): به‌دنبال بکدور، Cron Job های مشکوک و SSH Key های ناشناس در سرور بگردید.

منبع

این مقاله بر اساس اطلاعیه رسمی تیم cPanel تهیه شده است. برای مشاهده متن اصلی به صفحه پشتیبانی cPanel مراجعه کنید.

اگر این مقاله برایتان مفید بود، برای مدیریت بهتر سرور پیشنهاد می‌کنیم نگاهی به لایسنس اشتراکی cPanel پارس آپتایم بیندازید — تحویل فوری و با قیمت مناسب. همچنین اگر به دنبال زیرساخت پایدار برای راه‌اندازی cPanel هستید، سرور مجازی لینوکس ایران با پورت ۱۰Gbps و IPv4 تمیز گزینه‌ای است که ارزش بررسی دارد.

مطالعه این مطالب را هم توصیه میکنیم

خدمات مورد نیاز شما را با کیفیتی که انتظار دارید و قیمتی که انتظار ندارید.

آیا این مطلب برای شما مفید بود؟
پارس آپتایم | ارائه‌دهنده VPS و میزبانی وب