- شناسه CVE-2025-22604 :CVE
- CWE-78 :CWE
- yes :Advisory
- منتشر شده: ژانویه 27, 2025
- به روز شده: ژانویه 27, 2025
- امتیاز: 9.1
- نوع حمله: OS Command Injection
- اثر گذاری: Command Execution
- حوزه: نرم افزارهای شبکه و امنیت
- برند: Cacti
- محصول: Cacti
- وضعیتPublished :CVE
- Yes :POC
- وضعیت آسیب پذیری: patch شده
چکیده
CVE-2025-22604، یک آسیب پذیری بحرانی در Cacti تا نسخه 1.2.8 است. این آسیب پذیری بر روی عملکرد تابع ss_net_snmp_disk_io/ss_net_snmp_disk_bytes در کامپوننت OID Handler اثر می گذارد. این آسیب پذیری می تواند به حمله OS Command Injection منجر شود. حمله می تواند از راه دور راه اندازی شود. توصیه می شود کامپوننت آسیب پذیر را به نسخه های بالاتر ارتقا دهید.
توضیحات
به دلیل نقص موجود در پارسر نتایج SNMP چند خطی، کاربران احراز هویت شده می توانند OID های تغییر شکل داده شده را در پاسخ قرار دهند. زمانی که پاسخ به وسیله توابع ss_net_snmp_disk_io() یا ss_net_snmp_disk_bytes() پردازش می شود، بخشی از هر OID به عنوان یک کلید در یک آرایه ای که به عنوان یک دستور سیستمی بکار می رود، استفاده شده و منجر به حمله اجرای دستور(Command Execution) خواهد شد.
در cacti_snmp_walk() ، نرم افزار از exec_into_array() برای اجرای دستورات و خواندن نتایج به دست آمده در آرایه های چند خطی استفاده می کند. پس از آن کد زیر با بررسی علامت یکسان، آن خطوط را بررسی کرده و بخش سمت چپ را به عنوان OID و سمت راست به عنوان مقدار آن تخصیص می دهد. این OID های پارس شده به نتیجه نهایی الحاق می شوند. در این فرآیند به جای OID ها مقادیر فیلتر می شوند.
اگر خطی که در حال پارس شدن است حاوی OID نباشد ( به وسیله regex چک شده است)، بدون فیلتر شدن به مقدار OID قبلی تخصیص داده می شود.
تابع ss_net_snmp_disk_io() ، با استفاده از snmpwalk سه OID درخواست می کند و آنها در متغیرهای $names و $iops ذخیره می کند. بخش پایانی هر OID از متغیر$names به آرایه ای به نام $indexes الحاق خواهد شد.
$parts = explode(‘.’, $measure[‘oid’]);
$indexes[$parts[cacti_sizeof($parts)-1]] = $parts[cacti_sizeof($parts)-1];
یک درخواست snmpwalk دیگر ایجاد شده و Cacti آخرین بخش هر OID این درخواست را بررسی می کند تا ببیند در $indexes قرار دارد یا نه. اگر این بخش وجود داشته باشد، مقدار این OID به آرایه ای به نام $current اضافه می شود.
$current[“dr$index”] = $measure[‘value’];
Current، به صورت json انکد می شود و به شِل کامند اضافه می شود. پیش از آنکه رشته json به شِل داده شود، Cacti با استفاده از ” ‘ ” داده را quote می کند که این کار به راحتی قابل دور زدن است.
$data = ” ‘ ” . json_encode($current) . ” ‘ ” ;
shell_exec(“echo $data > $tmpdir/$tmpfile”);
سیستم امتیاز دهی آسیب پذیری ها بر اساس استاندارد های تحقیقاتی حوزه نمره دهی به آسیب پذیری ها، امتیازات زیر را برای شدت اثرگذاری این آسیب پذیری در نظر گرفته است.
CVSS
Score | Severity | Version | Vector String |
9.1 | CRITICAL | 3.1 | CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H |
لیست محصولات آسیب پذیر
در زمان انتشار این اعلامیه، این آسیب پذیری نسخه های زیر در معرض این آسیب پذیری قرار دارند:
- Cacti <= 1.2.28
لیست محصولات بروز شده
این آسیب پذیری از نسخه زیر به بعد اصلاح شده است :
- Cacti 1.2.29
نتیجه گیری
آسیب پذیری فوق در دسته آسیب پذیری های بحرانی دسته بندی می شود. توصیه شده نسبت به بروزرسانی نسخه فعلی به نسخه های بالاتر اصلاح شده افزارهای خود اقدام کنید تا در معرض این آسیب پذیری قرار نگیرند.
منابع
- https://www.cve.org/CVERecord?id=CVE-2025-22604
- https://www.cvedetails.com/cve/CVE-2025-22604/
- https://github.com/Cacti/cacti/security/advisories/GHSA-c5j8-jxj3-hh36
- https://vulmon.com/vulnerabilitydetails?qid=CVE-2025-22604
- https://vuldb.com/?id.293586
- https://cwe.mitre.org/data/definitions/78.html