Vulnerabilidades do Cacti Cacti
🔔 Criar alerta RSS Verificador de versão
CVEs publicadas que afetam Cacti Cacti: 17 registro(s), com versões afetadas e correções.cpe:2.3:a:cacti:cacti
CVE-2026-40941
Média · 6.5
CWE-347 25/06/2026
Cacti: Package Import Signature Validation Bypass Allows Self-Signed Packages
Cacti is an open source performance and fault management framework. Versions 1.2.30 and prior have a package import signature validation bypass allows which allows self-signed packages. This issue has been fixed in version 1.2.31.
CVE-2026-40084
Média · 6.5
CWE-22 25/06/2026
Cacti: Arbitrary File Read via Path Traversal in Report `format_file` Parameter
Cacti is an open source performance and fault management framework. Versions 1.2.30 and prior are vulnerable to Path Traversal through the Report format_file Parameter, causing arbitrary file read. This vulnerability occurs in two stages. In the first stage (stored injection), lib/html_reports.php at line 283 stores $save['format_file'] = $post['format_file'] directly into the database without any validation. In the second stage (file read), lib/reports.php at line 667 concatenates CACTI_PATH_FORMATS . '/' . $format_file, and line 670 then calls file($format_file), reading arbitrary files from the filesystem. This issue has been fixed in version 1.2.31.
CVE-2026-40083
Alta · 7.2
CWE-89 25/06/2026
Cacti: SQL Injection in managers.php
Cacti is an open source performance and fault management framework. Versions 1.2.30 and prior have SQL Injection through unsanitized unserialize+implode in managers.php. At line 756 of managers.php, the application assigns $selected_items by calling cacti_unserialize(stripslashes(gnrv('selected_graphs_array'))). The cacti_unserialize() function calls unserialize() with allowed_classes set to false, which prevents object injection but still allows arbitrary string arrays to be deserialized. Then, at lines 760 to 766, the deserialized array values are passed directly into db_execute('DELETE FROM snmpagent_managers WHERE id IN (' . implode(',', $selected_items) . ')'), where they are imploded into the SQL statement without any integer validation, resulting in SQL Injection when using SNMP agent management permissions. This issue has been fixed in version 1.2.31.
CVE-2026-40082
Média · 5.4
CWE-384 25/06/2026
Cacti: Session Fixation via missing session_regenerate_id() after login
Cacti is an open source performance and fault management framework. Versions 1.2.30 and prior have missing session_regenerate_id() after login, leading to Session Fixation. session_regenerate_id() is NOT called after successful login. The login flow at auth_login.php:203-207 directly sets $_SESSION[SESS_USER_ID] without rotating the session ID. The session cookie configuration is otherwise good (httponly=true, samesite=Strict, secure=true for HTTPS at include/global.php:513-537), but these do not prevent session fixation via same-site vectors. This issue has been fixed in version 1.2.31.
CVE-2026-40080
Média · 6.1
CWE-601 25/06/2026
Cacti: Open Redirect via HTTP_REFERER substring check in auth_login_redirect
Cacti is an open source performance and fault management framework. Versions 1.2.30 and prior are vulnerable to Open Redirect through a substring check rather than a host check at str_contains($referer, CACTI_PATH_URL). When the user's login_opts == '1' (redirect to referer after login), the function used $_SERVER['HTTP_REFERER'] directly. An attacker could craft a referer such as https://evil.com/cacti/. Where CACTI_PATH_URL is /cacti/, the substring matches and the user is redirected to evil.com after login. The pre-existing validate_redirect_url() helper at lib/html_utility.php performed proper validation but was not invoked from auth_login_redirect(). This issue has been fixed in version 1.2.31.
CVE-2026-40079
Crítica · 9.8
CWE-78 24/06/2026
Cacti: injeção de comando do sistema operacional em escape_command() (CVE-2026-40079)
O Cacti é um framework open source de gerenciamento de desempenho e falhas. As versões 1.2.30 e anteriores são vulneráveis a Command Injection devido à falta de sanitização na função escape_command(). A função escape_command() em lib/rrd.php é um no-op: ela retorna $command sem alterações. A linha de comando construída por rrdtool_function_graph() é passada por essa função e depois para shell_exec($full_commandline). O risco está em __rrd_execute(), onde valores de text_format de templates de gráficos (que podem conter substituições de variáveis de host) chegam ao shell_exec sem escaping adequado. Este problema foi corrigido na versão 1.2.31.
CVE-2026-39951
Alta · 8.8
CWE-89 24/06/2026
Cacti: Stored SQL Injection via graph_name_regexp in Reports feature
Cacti is an open source performance and fault management framework. Versions 1.2.30 and prior have a Stored SQL Injection vulnerability through graph_name_regexp in the Reports feature. This issue has been fixed in version 1.2.31.
CVE-2026-39955
Crítica · 9.8
CWE-89 24/06/2026
Injeção de SQL pré-autenticação em graph_view.php do Cacti (CVE-2026-39955)
O Cacti é um framework de código aberto para gerenciamento de desempenho e de falhas. As versões 1.2.30 e anteriores apresentam injeção de SQL pré-autenticação por meio de FILTER_VALIDATE_REGEXP sem âncoras em graph_view.php. Este problema foi corrigido na versão 1.2.31.
CVE-2026-39948
Crítica · 9.8
CWE-89 24/06/2026
Cacti - Injeção de SQL sem autenticação via parâmetro rfilter
Cacti é um framework de código aberto para gerenciamento de desempenho e de falhas. Nas versões 1.2.30 e anteriores, o parâmetro de requisição rfilter é obtido por meio do acessor bruto grv() (em vez de gfrv() com validação FILTER_VALIDATE_IS_REGEX) e concatenado diretamente em cláusulas RLIKE SQL em lib/html_graph.php e lib/html_tree.php, que são acessíveis sem autenticação via graph_view.php em instalações com visualização de gráficos para visitantes habilitada. Como o payload com aspas não balanceadas contorna a validação por expressão regular que, de outro modo, o rejeitaria, um atacante não autenticado pode injetar SQL arbitrário para comprometer a confidencialidade, a integridade e a disponibilidade do banco de dados. Este aviso é semelhante ao GHSA-69gg-mjfm-jjpc. Este problema foi corrigido na versão 1.2.31.
CVE-2026-39938
Crítica · 9.8
CWE-22 24/06/2026
Cacti: Inclusão de Arquivo Local (LFI) Não Autenticada
Cacti é um framework de código aberto para gerenciamento de desempenho e falhas. As versões 1.2.30 e anteriores apresentam LFI não autenticada por meio de graph_theme e do hardening de serialização IPC do rrdtool. Este problema foi resolvido na versão 1.2.31.
CVE-2026-39900
Média · 6.1
CWE-79 24/06/2026
Cacti: Reflected XSS via tab parameter in auth_profile.php JavaScript context
Cacti is an open source performance and fault management framework. Versions 1.2.30 and prior are vulnerable to Reflected XSS via tab parameter in the auth_profile.php JavaScript context. This issue has been fixed in version 1.2.31.
CVE-2026-39899
Média · 5.3
CWE-22 24/06/2026
Cacti: Path Traversal via filename parameter in package_import.php
Cacti is an open source performance and fault management framework. Versions 1.2.30 and prior are vulnerable to Path Traversal via filename parameter in package_import.php. This issue has been fixed in version 1.2.31.
CVE-2026-39897
Média · 6.1
CWE-79 24/06/2026
Cacti has a Reflected XSS Vulnerability via html_auth_footer
Cacti is an open source performance and fault management framework. Versions 1.2.30 and below contain a Reflected XSS vulnerability in the html_auth_footer. This issue has been fixed in version 1.2.31.
CVE-2026-39894
Baixa · 2.5
CWE-474 24/06/2026
Cacti: RRDtool metric shift via LC_NUMERIC locale comma decimal formatting
Cacti is an open source performance and fault management framework. In versions 1.2.30 and below, the locale-dependent decimal formatting in rrdtool_function_update() can corrupt RRDtool metric values. The rrdtool_function_update() function checks metric values with is_numeric() and concatenates them into the RRDtool update command via PHP string interpolation. PHP's string cast of floats is locale-sensitive: if LC_NUMERIC uses comma as decimal separator (e.g., de_DE), a value of 1.5 becomes "1,5". RRDtool expects . as decimal separator, causing metric data to shift into wrong columns or be silently dropped. No setlocale() reset is present in the update path. This causes a data integrity issue, but is not remotely exploitable; it requires server locale misconfiguration. The issue has been fixed in version 1.2.31.
CVE-2026-39893
Crítica · 9.8
CWE-89 24/06/2026
Injeção de SQL no Cacti pelo parâmetro rfilter
Cacti é um framework de código aberto para gerenciamento de desempenho e de falhas. Nas versões 1.2.30 e anteriores, a variável de requisição rfilter era concatenada em uma cláusula SQL RLIKE sem sanitização. O endpoint não exige autenticação (a visualização de gráficos oferece acesso de convidado por meio do usuário convidado configurado), portanto a injeção de SQL era alcançável sem autenticação em instalações com visualização de convidados habilitada. Este problema foi corrigido na versão 1.2.31.
CVE-2025-66399
Alta · 8.8
CWE-77 02/12/2025
SNMP Command Injection leads to RCE in Cacti
Cacti is an open source performance and fault management framework. Prior to 1.2.29, there is an input-validation flaw in the SNMP device configuration functionality. An authenticated Cacti user can supply crafted SNMP community strings containing control characters (including newlines) that are accepted, stored verbatim in the database, and later embedded into backend SNMP operations. In environments where downstream SNMP tooling or wrappers interpret newline-separated tokens as command boundaries, this can lead to unintended command execution with the privileges of the Cacti process. This vulnerability is fixed in 1.2.29.
CVE-2022-46169
Crítica · 9.8
KEV Urgente · 80 Exploit público CWE-78 05/12/2022
Cacti Command Injection Vulnerability
Cacti is an open source platform which provides a robust and extensible operational monitoring and fault management framework for users. In affected versions a command injection vulnerability allows an unauthenticated user to execute arbitrary code on a server running Cacti, if a specific data source was selected for any monitored device. The vulnerability resides in the `remote_agent.php` file. This file can be accessed without authentication. This function retrieves the IP address of the client via `get_client_addr` and resolves this IP address to the corresponding hostname via `gethostbyaddr`. After this, it is verified that an entry within the `poller` table exists, where the hostname corresponds to the resolved hostname. If such an entry was found, the function returns `true` and the client is authorized. This authorization can be bypassed due to the implementation of the `get_client_addr` function. The function is defined in the file `lib/functions.php` and checks serval `$_SERVER` variables to determine the IP address of the client. The variables beginning with `HTTP_` can be arbitrarily set by an attacker. Since there is a default entry in the `poller` table with the hostname of the server running Cacti, an attacker can bypass the authentication e.g. by providing the header `Forwarded-For: <TARGETIP>`. This way the function `get_client_addr` returns the IP address of the server running Cacti. The following call to `gethostbyaddr` will resolve this IP address to the hostname of the server, which will pass the `poller` hostname check because of the default entry. After the authorization of the `remote_agent.php` file is bypassed, an attacker can trigger different actions. One of these actions is called `polldata`. The called function `poll_for_data` retrieves a few request parameters and loads the corresponding `poller_item` entries from the database. If the `action` of a `poller_item` equals `POLLER_ACTION_SCRIPT_PHP`, the function `proc_open` is used to execute a PHP script. The attacker-controlled parameter `$poller_id` is retrieved via the function `get_nfilter_request_var`, which allows arbitrary strings. This variable is later inserted into the string passed to `proc_open`, which leads to a command injection vulnerability. By e.g. providing the `poller_id=;id` the `id` command is executed. In order to reach the vulnerable call, the attacker must provide a `host_id` and `local_data_id`, where the `action` of the corresponding `poller_item` is set to `POLLER_ACTION_SCRIPT_PHP`. Both of these ids (`host_id` and `local_data_id`) can easily be bruteforced. The only requirement is that a `poller_item` with an `POLLER_ACTION_SCRIPT_PHP` action exists. This is very likely on a productive instance because this action is added by some predefined templates like `Device - Uptime` or `Device - Polling Time`.
This command injection vulnerability allows an unauthenticated user to execute arbitrary commands if a `poller_item` with the `action` type `POLLER_ACTION_SCRIPT_PHP` (`2`) is configured. The authorization bypass should be prevented by not allowing an attacker to make `get_client_addr` (file `lib/functions.php`) return an arbitrary IP address. This could be done by not honoring the `HTTP_...` `$_SERVER` variables. If these should be kept for compatibility reasons it should at least be prevented to fake the IP address of the server running Cacti. This vulnerability has been addressed in both the 1.2.x and 1.3.x release branches with `1.2.23` being the first release containing the patch.