هوش نگارنوین - دستیار اطلاع‌رسانی
تحلیل سریع این اطلاعیه:

کاربر گرامی، هوش نگارنوین محتوای این خبر را پایش کرد. این اطلاعیه شامل اطلاعات فنی/عمومی است که برای پایداری سرویس شما اهمیت دارد. پیشنهاد می‌شود بخش‌های هایلایت شده را با دقت مطالعه فرمایید.

مشکل باگ امنیتی سی پنل cPanel CVE-2026-41940 - cPanel & WHM / WP2 Security Update

حمعه, 1 مه, 2026
10:59
زمان مطالعه: حدود 15 دقیقه

? هشدار امنیتی فوری: شناسایی آسیب‌پذیری بحرانی در سی‌پنل (CVE-2026-41940) – همین حالا اقدام کنید!

کاربران گرامی و همراهان وفادار نگارنوین،

با سلام و احترام،

تیم امنیتی نگارنوین به صورت مستمر و ۲۴ ساعته پایداری و امنیت سرورهای شما را پایش می‌کند. به اطلاع می‌رساند، ساعاتی پیش شرکت سی‌پنل (cPanel) یک هشدار امنیتی با درجه اهمیت «بحرانی» (Critical) صادر کرده است که مستقیماً امنیت سرورهای مجازی و اختصاصی را هدف قرار می‌دهد.

این آسیب‌پذیری با شناسه CVE-2026-41940 شناخته می‌شود و به مهاجمان اجازه می‌دهد تا با دور زدن سیستم احراز هویت، بدون نیاز به نام کاربری و رمز عبور، دسترسی کامل (Root) به سرور شما پیدا کنند. این یک تهدید بسیار جدی برای تمام داده‌های شماست.

محدوده تأثیر: تقریباً تمامی نسخه‌های سی‌پنل پس از نسخه ۱1.40 تحت تأثیر این باگ هستند.

تیم فنی نگارنوین، طبق پروتکل‌های امنیتی خود، وظیفه دارد در سریع‌ترین زمان ممکن شما را از این خطر آگاه ساخته و راهکارهای عملی و فوری را برای ایمن‌سازی سرورهایتان ارائه دهد.

مشکل امنیتی سی پنل

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


? گام اول: راهکار اصلی – آپدیت فوری و اجباری سی‌پنل

شرکت سی‌پنل پچ‌های امنیتی را منتشر کرده است. بهترین و مطمئن‌ترین راهکار، به‌روزرسانی فوری کنترل‌پنل به آخرین نسخه امن است.

برای این منظور، از طریق دسترسی Root وارد محیط خط فرمان (SSH) سرور خود شوید و مراحل زیر را به دقت انجام دهید:

۱. اجرای اجباری اسکریپت به‌روزرسانی:

دستور زیر را برای اجبار سرور به دریافت و نصب آخرین پچ امنیتی وارد کنید:

Bash
 
/scripts/upcp --force

۲. تأیید به‌روزرسانی و ری‌استارت سرویس‌ها:

پس از اتمام کامل فرآیند آپدیت (که ممکن است چند دقیقه طول بکشد)، دستورات زیر را برای اطمینان از اعمال تغییرات و راه‌اندازی مجدد سرویس سی‌پنل وارد کنید:

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

⚠️ نکات حیاتی برای سیستم‌عامل‌های قدیمی‌تر (Legacy)

اگر سرور شما از سیستم‌عامل‌های EOL (پایان عمر) استفاده می‌کند، احتمالاً آپدیت اتوماتیک کار نمی‌کند. ابتدا باید سطح آپدیت (Tier) را تنظیم کنید:

✅ برای کاربران CentOS 7 و CloudLinux 7: ابتدا دستور زیر را بزنید تا نسخه روی سری 11.110 تنظیم شود، سپس دستور /scripts/upcp --force را اجرا کنید:

Bash
 
whmapi1 set_tier tier=11.110

✅ برای کاربران CentOS 6 و CloudLinux 6 (نسخه 110.0.50): پیش از اجرای آپدیت اصلی، حتماً این دستور را وارد نمایید:

Bash
 
whmapi1 set_tier tier=11.110.0.103

? گام دوم: اقدامات پیشگیرانه موقت (اگر قادر به آپدیت نیستید)

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

? روش اول (توصیه شده): محدودسازی در فایروال از طریق فایروال سرور (مانند CSF)، پورت‌های 2083، 2087، 2095 و 2096 را برای ترافیک ورودی عمومی مسدود کنید و فقط به IPهای مطمئن خود اجازه دسترسی بدهید.

? روش دوم: خاموش کردن سرویس‌های لاگین (از طریق SSH) دستور یکپارچه زیر را در SSH اجرا کنید تا سرویس‌های مرتبط با لاگین سی‌پنل و Webmaill به طور موقت متوقف شوند:

Bash
 
whmapi1 configureservice service=cpsrvd enabled=0 monitored=0 && whmapi1 configureservice service=cpdavd enabled=0 monitored=0 && /scripts/restartsrv_cpsrvd --stop && /scripts/restartsrv_cpdavd --stop

? گام سوم: بررسی وضعیت امنیت سرور (آیا هک شده‌اید؟)

سی‌پنل اسکریپتی را برای بررسی علائم نفوذ (Indicators of Compromise) ارائه کرده است. حتی پس از آپدیت، توصیه می‌شود این بررسی را انجام دهید تا مطمئن شوید قبل از آپدیت، مهاجمان وارد نشده باشند.

۱. یک فایل به نام ioc_check.sh بسازید:

Bash
 
nano ioc_check.sh

۲. کدهای زیر را درون آن کپی و ذخیره کنید (کلیدهای Ctrl+O و سپس Ctrl+X):

#!/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")

    # Check if this session is/was pre-auth
    preauth_file="$SESSIONS_DIR/preauth/$session_name"

    # IOC 0: Session has both token_denied AND cp_security_token and method=badpass origin (strong indicator of exploitation)
    #
    # token_denied is set by do_token_denied() in cpsrvd when a request
    # supplies an incorrect security token. cp_security_token is the
    # attacker-injected token value. This combination indicates:
    #
    #   1. Attacker injected a cp_security_token via newline payload
    #   2. Attacker attempted to use the injected token
    #   3. cpsrvd recorded the token mismatch (token_denied counter)
    #      during the exploitation window before the session was
    #      fully promoted
    #
    # In a legitimate session:
    #   - token_denied is only present after a user-initiated
    #     security token failure (rare, typically from expired bookmarks)
    #   - It would never co-exist with a badpass origin AND an
    #     attacker-controlled cp_security_token
    #
    # This IOC catches BOTH successful and failed exploitation attempts.
    if grep -q '^token_denied=' "$session_file" && \
       grep -q '^cp_security_token=' "$session_file"; then

        # Extract values for triage context
        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")

        # High confidence if origin is badpass (session was pre-auth)
        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
        # Medium confidence but still suspicious for any session
        else
            echo "[!] WARNING: Suspicious session with token_denied + cp_security_token: $session_file"
            echo "    - cp_security_token=$token_val"
            echo "    - token_denied=$denied_val"
            echo "    - origin=$origin"
            echo "    - Review manually: may be legitimate token expiration or exploitation attempt"
        fi
    fi

    # IOC 1: Pre-auth session with authenticated attributes
    if [ -f "$preauth_file" ]; then
        if grep -qE '^successful_external_auth_with_timestamp=' "$session_file"; then
            echo "[!] CRITICAL: Injected session detected: $session_file"
            echo "    - Contains 'successful_external_auth_with_timestamp' in pre-auth session"
            COMPROMISED=1
        fi
    fi

    # IOC 2: Any session with tfa_verified but no valid origin
    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: Password field containing newlines (corrupted session file)
    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

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

۳. اسکریپت را اجرا کنید:

Bash
 
chmod +x ioc_check.sh
./ioc_check.sh

? هشدار قرمز: اگر پیامی مبنی بر نفوذ مشاهده کردید!

اگر در خروجی اسکریپت، پیام CRITICAL یا IMMEDIATE ACTION REQUIRED را مشاهده کردید، بدین معناست که سرور شما احتمالاً مورد سوءاستفاده قرار گرفته است. در این صورت، بدون فوت وقت اقدامات زیر را انجام دهید:

  1. حذف تمام سشن‌های فعال (Session) در WHM.

  2. تغییر فوری رمز عبور کاربری Root و تمامی کاربران WHM و سی‌پنل.

  3. بررسی دقیق لاگ‌های دسترسی (Access Logs) برای یافتن IPهای ناشناس.

  4. بررسی سرور جهت یافتن هرگونه فایل مخرب (Backdoor)، کرون‌جاب (Cron) مشکوک یا کلیدهای SSH ناشناس.


? نگارنوین، سپر امنیتی شما در دنیای دیجیتال

امنیت اطلاعات شما اولویت اول ماست. اگر در اجرای دستورات فنی فوق تخصص کافی ندارید، اصلاً نگران نباشید. ما در کنار شما هستیم.

کافیست همین حالا وارد پنل کاربری خود شده و یک تیکت با عنوان «درخواست بررسی فوری امنیتی CVE-2026-41940» به دپارتمان پشتیبانی فنی ارسال کنید. کارشناسان مجرب امنیتی نگارنوین، عملیات بررسی، آپدیت و ایمن‌سازی سرور شما را در سریع‌ترین زمان ممکن و با دقت بالا انجام خواهند داد.

با آرزوی امنیت و پایداری برای کسب‌وکار آنلاین شما،

تیم فنی و امنیتی نگارنوین


 

(منبع جهت مطالعه بیشتر: اطلاعیه رسمی سی‌پنل)

سوالات بیشتری دارید؟

کارشناسان نگارنوین آماده پاسخگویی هستند.

امنیت و پایداری

تضمین آپ‌تایم ۹۹.۹٪ در دیتاسنترهای داخلی.

Loading