6 اقدام فوری الزامی است
این آسیبپذیری امکان دور زدن احراز هویت (Authentication Bypass) را در تمام نسخههای cPanel بعد از ۱۱.۴۰ فراهم میکند. اگر سرور شما وصله (Patch امنیتی) دریافت نکرده، بلافاصله اقدام کنید.
علت آسیبپذیری
یک نقص امنیتی از نوع Authentication Bypass (دور زدن احراز هویت) در نرمافزار cPanel — از جمله نسخه DNSOnly — شناسایی شده است. این آسیبپذیری تمامی نسخههای بعد از ۱۱.۴۰ را تحت تأثیر قرار میدهد.
بهرهبرداری موفق از این نقص به مهاجم اجازه میدهد بدون داشتن اعتبارنامه (Credential) معتبر، به پنل مدیریتی cPanel یا WHM دسترسی پیدا کند.
این آسیبپذیری از طریق تزریق کاراکتر خط جدید (Newline Injection) در فیلد رمز عبور Session، امکان جعل یک Session احراز هویتشده را فراهم میکند.
نسخههای وصله (Patch امنیتی) شده — cPanel & WHM
تیم cPanel وصله (Patch امنیتی) امنیتی را برای نسخههای زیر منتشر کرده است:
11.86.0.4111.110.0.9711.118.0.6311.126.0.5411.130.0.1911.132.0.2911.136.0.511.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 تمیز گزینهای است که ارزش بررسی دارد.
