Le jeudi 22 août 2024, 18:01:02 UTC Adam D. Barratt a écrit :
> Control: tags -1 + moreinfo
> 
> On Thu, 2024-08-22 at 15:38 +0000, Bastien Roucariès wrote:
> > [ Reason ]
> > Security upload. Except CVE-2024-27082 that need
> > coordination with other packages.
> 
> You appear to have forgotten the debdiff.

Yes I just resend
> 
> Regards,
> 
> Adam
> 

diff -Nru cacti-1.2.24+ds1/debian/changelog cacti-1.2.24+ds1/debian/changelog
--- cacti-1.2.24+ds1/debian/changelog	2024-03-15 09:53:35.000000000 +0000
+++ cacti-1.2.24+ds1/debian/changelog	2024-08-11 17:28:54.000000000 +0000
@@ -1,3 +1,71 @@
+cacti (1.2.24+ds1-1+deb12u3) unstable; urgency=medium
+
+  * Non-maintainer upload by the LTS Security Team.
+  * Fix CVE-2024-25641: RCE vulnerability when importing packages
+    An arbitrary file write vulnerability, exploitable through the
+    "Package Import" feature, allows authenticated users having
+    the "Import Templates" permission to execute arbitrary PHP
+    code on the web server (RCE).
+  * Fix CVE-2024-29894: XSS vulnerability when using JavaScript
+    based messaging API.
+    raise_message_javascript from lib/functions.php now uses purify.js
+    to fix CVE-2023-50250 (among others).
+    However it still generates the code out of unescaped
+    PHP variables $title and $header.
+    If those variables contain single quotes, they can be used
+    to inject JavaScript code.
+  * Fix CVE-2024-31443. XSS vulnerability when managing data queries
+    Some of the data stored in form_save() function in data_queries.php
+    is not thoroughly checked and is used to concatenate the
+    HTML statement in grow_right_pane_tree() function from lib/html.php,
+    finally resulting in XSS.
+  * Fix CVE-2024-31444: XSS vulnerability when reading tree rules with
+    Automation API.
+    Some of the data stored in automation_tree_rules_form_save() function
+    in automation_tree_rules.php is not thoroughly checked and is used
+    to concatenate the HTML statement in form_confirm() function from
+    lib/html.php , finally resulting in XSS.
+  * Fix CVE-2024-31445: SQL injection vulnerability
+    A SQL injection vulnerability in `automation_get_new_graphs_sql`
+    function of `api_automation.php` allows authenticated users to exploit
+    these SQL injection vulnerabilities to perform privilege escalation
+    and remote code execution. In `api_automation.php` line 856, the
+    `get_request_var('filter')` is being concatenated into the SQL
+    statement without any sanitization. In `api_automation.php` line 717,
+    The filter of `'filter'` is `FILTER_DEFAULT`, which means there is no
+    filter for it
+  * Fix CVE-2024-31458: SQL injection vulnerability
+    Some of the data stored in `form_save()` function in
+    `graph_template_inputs.php` is not thoroughly checked and is used to
+    concatenate the SQL statement in
+    `draw_nontemplated_fields_graph_item()` function from
+    `lib/html_form_templates.php` , finally resulting in SQL injection
+  * Fix CVE-2024-31459: Remote code execution
+    There is a file inclusion issue in the lib/plugin.php file.
+    Combined with SQL injection vulnerabilities, RCE can be implemented.
+  * Fix CVE-2024-31460: SQL code injection
+    Some of the data stored in `automation_tree_rules.php` is not
+    thoroughly checked and is used to concatenate the SQL statement in
+    `create_all_header_nodes()` function from `lib/api_automation.php` ,
+    finally resulting in SQL injection. Using SQL based secondary
+    injection technology, attackers can modify the contents of the Cacti
+    database, and based on the modified content, it may be possible to
+    achieve further impact, such as arbitrary file reading, and even
+    remote code execution through arbitrary file writing
+  * Fix CVE-2024-34340: type juggling vulnerability
+    Cacti calls `compat_password_hash` when users set their
+    password. `compat_password_hash` use `password_hash` if there is it,
+    else use `md5`. When verifying password, it calls
+    `compat_password_verify`. In `compat_password_verify`,
+    `password_verify` is called if there is it, else use
+    `md5`. `password_verify` and `password_hash` are supported on PHP <
+    5.5.0, following PHP manual. The vulnerability is in
+    `compat_password_verify`. Md5-hashed user input is compared with
+    correct password in database by `$md5 == $hash`. It is a loose
+    comparison, not `===`.
+
+ -- Bastien Roucari??s <ro...@debian.org>  Sun, 11 Aug 2024 17:28:54 +0000
+
 cacti (1.2.24+ds1-1+deb12u2) bookworm-security; urgency=high
 
   [Sylvain Beucler]  
diff -Nru cacti-1.2.24+ds1/debian/patches/0026-CVE-2024-25641-Merge-pull-request-from-GHSA-7cmj-g5q.patch cacti-1.2.24+ds1/debian/patches/0026-CVE-2024-25641-Merge-pull-request-from-GHSA-7cmj-g5q.patch
--- cacti-1.2.24+ds1/debian/patches/0026-CVE-2024-25641-Merge-pull-request-from-GHSA-7cmj-g5q.patch	1970-01-01 00:00:00.000000000 +0000
+++ cacti-1.2.24+ds1/debian/patches/0026-CVE-2024-25641-Merge-pull-request-from-GHSA-7cmj-g5q.patch	2024-08-11 17:28:54.000000000 +0000
@@ -0,0 +1,94 @@
+From: Petr Macek <petr.ma...@kostax.cz>
+Date: Sun, 7 Apr 2024 16:25:58 +0200
+Subject: CVE-2024-25641: Merge pull request from GHSA-7cmj-g5qc-pj88
+
+* QA: Fixing Package Import CVE
+
+For now, we will only accept the Cacti public keys until such time as we are a registered CNA and have the ability to verify third parties or we make other arrangements.
+
+* QA: The keys in our package have trailing spaces
+
+[description]
+Cacti provides an operational monitoring and fault management
+framework. Prior to version 1.2.27, an arbitrary file write
+vulnerability, exploitable through the "Package Import" feature,
+allows authenticated users having the "Import Templates" permission to
+execute arbitrary PHP code on the web server. The vulnerability is
+located within the `import_package()` function defined into the
+`/lib/import.php` script. The function blindly trusts the filename and
+file content provided within the XML data, and writes such files into
+the Cacti base path (or even outside, since path traversal sequences
+are not filtered). This can be exploited to write or overwrite
+arbitrary files on the web server, leading to execution of arbitrary
+PHP code or other security impacts. Version 1.2.27 contains a patch
+for this issue.
+
+bug: https://github.com/Cacti/cacti/security/advisories/GHSA-7cmj-g5qc-pj88
+bug-debian-security: https://security-tracker.debian.org/tracker/CVE-2024-25641
+origin: backport, https://github.com/Cacti/cacti/commit/eff35b0ff26cc27c82d7880469ed6d5e3bef6210
+---
+ lib/import.php     | 19 ++++++++++++++-----
+ package_import.php |  2 ++
+ 2 files changed, 16 insertions(+), 5 deletions(-)
+
+diff --git a/lib/import.php b/lib/import.php
+index c1320c8..fc4e3ad 100644
+--- a/lib/import.php
++++ b/lib/import.php
+@@ -510,14 +510,20 @@ function import_package($xmlfile, $profile_id = 1, $remove_orphans = false, $rep
+ 		$fdata = base64_decode($f['data']);
+ 		$name = $f['name'];
+ 
++		/* The xml file without path is the main template of the package. It is processed below using $debug_data */
+ 		if (strpos($name, 'scripts/') !== false || strpos($name, 'resource/') !== false) {
+ 			$filename = $config['base_path'] . "/$name";
+-
+ 			if (!$preview) {
+-				if (!cacti_sizeof($import_files) || in_array($name, $import_files)) {
+-					cacti_log('Writing file: ' . $filename, false, 'IMPORT', POLLER_VERBOSITY_MEDIUM);
++				if (!cacti_sizeof($import_files) || in_array($name, $import_files, true)) {
++					cacti_log('Checking filepath: ' . $filename, false, 'IMPORT', POLLER_VERBOSITY_MEDIUM);
++
++					if (!preg_match('/^(scripts|resource)[a-zA-Z0-9_\-\/]*$/', dirname($name))) {
++						cacti_log('FATAL: Incorrect path: ' . $filename, true, 'IMPORT', POLLER_VERBOSITY_LOW);
++
++						$filestatus[$filename] = __('incorrect path, file not saved');
++					} elseif ((is_writeable(dirname($filename)) && !file_exists($filename)) || is_writable($filename)) {
++						cacti_log('Writing file: ' . $filename, false, 'IMPORT', POLLER_VERBOSITY_MEDIUM);
+ 
+-					if ((is_writeable(dirname($filename)) && !file_exists($filename)) || is_writable($filename)) {
+ 						$file = fopen($filename, 'wb');
+ 
+ 						if (is_resource($file)) {
+@@ -549,7 +555,9 @@ function import_package($xmlfile, $profile_id = 1, $remove_orphans = false, $rep
+ 					$existing = md5_file($filename);
+ 				}
+ 
+-				if (is_writeable(dirname($filename))) {
++				if (!preg_match('/^(scripts|resource)[a-zA-Z0-9_\-\/]*$/', dirname($name))) {
++					$filestatus[$filename] = 'incorrect path';
++				} elseif (is_writeable(dirname($filename))) {
+ 					if (file_exists($filename) && is_writable($filename)) {
+ 						if ($new == $existing) {
+ 							$filestatus[$filename] = 'writable, identical';
+@@ -576,6 +584,7 @@ function import_package($xmlfile, $profile_id = 1, $remove_orphans = false, $rep
+ 				} else {
+ 					$filestatus[$filename] = 'not writable, new';
+ 				}
++
+ 			}
+ 		} else {
+ 			if (!$preview) {
+diff --git a/package_import.php b/package_import.php
+index 797350d..84b432e 100644
+--- a/package_import.php
++++ b/package_import.php
+@@ -546,6 +546,8 @@ function import_display_package_data($templates, $files, $package_name, $xmlfile
+ 							$nstatus .= ($nstatus != '' ? ', ':'') . __('Writable');
+ 						} elseif ($s == 'new') {
+ 							$nstatus .= ($nstatus != '' ? ', ':'') . __('New');
++						} elseif ($s == 'incorrect path') {
++							$nstatus .= ($nstatus != '' ? ', ':'') . __('Incorrect path, will not be imported');
+ 						} else {
+ 							$nstatus .= ($nstatus != '' ? ', ':'') . __('Unknown');
+ 						}
diff -Nru cacti-1.2.24+ds1/debian/patches/0027-1-2-CVE-2024-29894-Merge-pull-request-from-GHSA-grj5.patch cacti-1.2.24+ds1/debian/patches/0027-1-2-CVE-2024-29894-Merge-pull-request-from-GHSA-grj5.patch
--- cacti-1.2.24+ds1/debian/patches/0027-1-2-CVE-2024-29894-Merge-pull-request-from-GHSA-grj5.patch	1970-01-01 00:00:00.000000000 +0000
+++ cacti-1.2.24+ds1/debian/patches/0027-1-2-CVE-2024-29894-Merge-pull-request-from-GHSA-grj5.patch	2024-08-11 17:28:54.000000000 +0000
@@ -0,0 +1,46 @@
+From: Beuc <b...@beuc.net>
+Date: Sun, 7 Apr 2024 16:06:56 +0200
+Subject: [1/2] CVE-2024-29894 Merge pull request from GHSA-grj5-8fcj-34gh
+
+Cacti contain a residual cross-site scripting vulnerability caused by an
+incomplete fix for CVE-2023-50250. `raise_message_javascript` from
+`lib/functions.php` now uses purify.js to fix CVE-2023-50250 (among
+others). However, it still generates the code out of unescaped PHP
+variables `$title` and `$header`. If those variables contain single
+quotes, they can be used to inject JavaScript code. An attacker
+exploiting this vulnerability could execute actions on behalf of
+other users. This ability to impersonate users could lead to
+unauthorized changes to settings.
+
+[Summary]
+
+CVE-2023-50250, fixed in 1.2.26, can still be triggered with a non-empty file named "');alert(1);('".xml.
+
+[Details]
+
+raise_message_javascript from lib/functions.php now uses purify.js to fix CVE-2023-50250 (among others).
+However it still generates the code out of unescaped PHP variables $title and $header.
+If those variables contain single quotes, they can be used to inject JavaScript code.
+
+bug: https://github.com/Cacti/cacti/security/advisories/GHSA-grj5-8fcj-34gh
+origin: https://github.com/Cacti/cacti/commit/9c75f8da5b609d17c8c031fd46362f730358b792
+bug-debian-security: https://security-tracker.debian.org/tracker/CVE-2024-29894
+---
+ lib/functions.php | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/lib/functions.php b/lib/functions.php
+index 89429bd..1d04f9a 100644
+--- a/lib/functions.php
++++ b/lib/functions.php
+@@ -1041,8 +1041,8 @@ function raise_message($message_id, $message = '', $message_level = MESSAGE_LEVE
+ function raise_message_javascript($title, $header, $message) {
+ 	?>
+ 	<script type='text/javascript'>
+-	var mixedReasonTitle = DOMPurify.sanitize('<?php print $title;?>');
+-	var mixedOnPage      = DOMPurify.sanitize('<?php print $header;?>');
++	var mixedReasonTitle = DOMPurify.sanitize(<?php print json_encode($title, JSON_THROW_ON_ERROR);?>);
++	var mixedOnPage      = DOMPurify.sanitize(<?php print json_encode($header, JSON_THROW_ON_ERROR);?>);
+ 	sessionMessage   = {
+ 		message: DOMPurify.sanitize('<?php print $message;?>'),
+ 		level: MESSAGE_LEVEL_MIXED
diff -Nru cacti-1.2.24+ds1/debian/patches/0028-2-2-CVE-2024-29894-GHSA-grj5-8fcj-34gh-follow-up-fix.patch cacti-1.2.24+ds1/debian/patches/0028-2-2-CVE-2024-29894-GHSA-grj5-8fcj-34gh-follow-up-fix.patch
--- cacti-1.2.24+ds1/debian/patches/0028-2-2-CVE-2024-29894-GHSA-grj5-8fcj-34gh-follow-up-fix.patch	1970-01-01 00:00:00.000000000 +0000
+++ cacti-1.2.24+ds1/debian/patches/0028-2-2-CVE-2024-29894-GHSA-grj5-8fcj-34gh-follow-up-fix.patch	2024-08-11 17:28:54.000000000 +0000
@@ -0,0 +1,28 @@
+From: Beuc <b...@beuc.net>
+Date: Sat, 18 May 2024 14:36:41 +0200
+Subject: [2/2] CVE-2024-29894  GHSA-grj5-8fcj-34gh follow-up fix (#5751)
+
+Not sure how this was lost during the back&forth during the
+GHSA process but we missed escaping the 3rd parameter of
+raise_message_javascript().
+
+bug: https://github.com/Cacti/cacti/pull/5751
+origin: https://github.com/Cacti/cacti/pull/5751/commits/7c60ef33e2a87b3047d66f651d7a2a096d108e58
+bug-debian-security: https://security-tracker.debian.org/tracker/CVE-2024-29894
+---
+ lib/functions.php | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/functions.php b/lib/functions.php
+index 1d04f9a..d8460a3 100644
+--- a/lib/functions.php
++++ b/lib/functions.php
+@@ -1044,7 +1044,7 @@ function raise_message_javascript($title, $header, $message) {
+ 	var mixedReasonTitle = DOMPurify.sanitize(<?php print json_encode($title, JSON_THROW_ON_ERROR);?>);
+ 	var mixedOnPage      = DOMPurify.sanitize(<?php print json_encode($header, JSON_THROW_ON_ERROR);?>);
+ 	sessionMessage   = {
+-		message: DOMPurify.sanitize('<?php print $message;?>'),
++		message: DOMPurify.sanitize(<?php print json_encode($message, JSON_THROW_ON_ERROR);?>),
+ 		level: MESSAGE_LEVEL_MIXED
+ 	};
+ 
diff -Nru cacti-1.2.24+ds1/debian/patches/0029-CVE-2024-31443-Merge-pull-request-from-GHSA-rqc8-78c.patch cacti-1.2.24+ds1/debian/patches/0029-CVE-2024-31443-Merge-pull-request-from-GHSA-rqc8-78c.patch
--- cacti-1.2.24+ds1/debian/patches/0029-CVE-2024-31443-Merge-pull-request-from-GHSA-rqc8-78c.patch	1970-01-01 00:00:00.000000000 +0000
+++ cacti-1.2.24+ds1/debian/patches/0029-CVE-2024-31443-Merge-pull-request-from-GHSA-rqc8-78c.patch	2024-08-11 17:28:54.000000000 +0000
@@ -0,0 +1,42 @@
+From: TheWitness <thewitn...@cacti.net>
+Date: Sun, 7 Apr 2024 10:08:10 -0400
+Subject: CVE-2024-31443: Merge pull request from GHSA-rqc8-78cm-85j3
+
+some of the data stored in `form_save()` function in
+`data_queries.php` is not thoroughly checked and is used to
+concatenate the HTML statement in `grow_right_pane_tree()` function
+from `lib/html.php` , finally resulting in cross-site scripting.
+
+Co-authored-by: ishgard <ishg...@njust.edu.cn>
+---
+ lib/html_tree.php | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/lib/html_tree.php b/lib/html_tree.php
+index 029c5c7..ed470e6 100644
+--- a/lib/html_tree.php
++++ b/lib/html_tree.php
+@@ -917,6 +917,7 @@ function grow_right_pane_tree($tree_id, $leaf_id, $host_group_data) {
+ 			WHERE id = ?',
+ 			array($host_group_data_array[1]));
+ 
++		$name = html_escape($name);
+ 		$host_group_data_name = '<strong>' . __('Graph Template:'). '</strong> ' . $name;
+ 		$graph_template_id    = $host_group_data_array[1];
+ 	} elseif ($host_group_data_array[0] == 'dq') {
+@@ -925,6 +926,7 @@ function grow_right_pane_tree($tree_id, $leaf_id, $host_group_data) {
+ 			WHERE id = ?',
+ 			array($host_group_data_array[1]));
+ 
++		$name = html_escape($name);
+ 		$host_group_data_name = '<strong>' . __('Graph Template:') . '</strong> ' . (empty($host_group_data_array[1]) ? __('Non Query Based') : $name);
+ 		$data_query_id        = $host_group_data_array[1];
+ 	} elseif ($host_group_data_array[0] == 'dqi') {
+@@ -933,6 +935,7 @@ function grow_right_pane_tree($tree_id, $leaf_id, $host_group_data) {
+ 			WHERE id = ?',
+ 			array($host_group_data_array[1]));
+ 
++		$name = html_escape($name);
+ 		$host_group_data_name = '<strong>' . __('Graph Template:') . '</strong> ' . (empty($host_group_data_array[1]) ? __('Non Query Based') : $name) . '-> ' . (empty($host_group_data_array[2]) ? __('Template Based') : get_formatted_data_query_index($leaf['host_id'], $host_group_data_array[1], $host_group_data_array[2]));
+ 		$data_query_id    = $host_group_data_array[1];
+ 		$data_query_index = $host_group_data_array[2];
diff -Nru cacti-1.2.24+ds1/debian/patches/0030-CVE-2024-31444-GHSA-p4ch-7hjw-6m87-XSS-vulnerability.patch cacti-1.2.24+ds1/debian/patches/0030-CVE-2024-31444-GHSA-p4ch-7hjw-6m87-XSS-vulnerability.patch
--- cacti-1.2.24+ds1/debian/patches/0030-CVE-2024-31444-GHSA-p4ch-7hjw-6m87-XSS-vulnerability.patch	1970-01-01 00:00:00.000000000 +0000
+++ cacti-1.2.24+ds1/debian/patches/0030-CVE-2024-31444-GHSA-p4ch-7hjw-6m87-XSS-vulnerability.patch	2024-08-11 17:28:54.000000000 +0000
@@ -0,0 +1,54 @@
+From: TheWitness <thewitn...@cacti.net>
+Date: Tue, 9 Apr 2024 06:59:40 -0400
+Subject: CVE-2024-31444 GHSA-p4ch-7hjw-6m87 XSS vulnerability when reading
+ tree rules with Automation API
+
+some of the data stored in `automation_tree_rules_form_save()`
+function in `automation_tree_rules.php` is not thoroughly checked and
+is used to concatenate the HTML statement in `form_confirm()` function
+from `lib/html.php` , finally resulting in cross-site
+scripting. Version 1.2.27 contains a patch for the issue.
+
+origin: https://github.com/Cacti/cacti/commit/86d614c38c54e0ce58774d86617ecfbb853fb57b
+bug: https://github.com/Cacti/cacti/security/advisories/GHSA-p4ch-7hjw-6m87
+bug-debian-security: https://security-tracker.debian.org/tracker/CVE-2024-31444
+---
+ lib/html.php | 20 ++++++++++++--------
+ 1 file changed, 12 insertions(+), 8 deletions(-)
+
+diff --git a/lib/html.php b/lib/html.php
+index 681aa37..11827c8 100644
+--- a/lib/html.php
++++ b/lib/html.php
+@@ -1631,19 +1631,23 @@ function DrawMatrixHeaderItem($matrix_name, $matrix_text_color, $column_span = 1
+ 	<?php
+ }
+ 
+-function form_area($text) { ?>
++function form_area($text) {
++	?>
+ 	<tr>
+ 		<td class='textArea'>
+-			<?php print $text;?>
++			<?php print html_escape($text);?>
+ 		</td>
+ 	</tr>
+-<?php }
++	<?php
++}
+ 
+-/* is_console_page - determines if current passed url is considered to be
+-          a console page
+-   @arg url - url to be checked
+-   @returns true if console page, false if not
+-*/
++/**
++ * is_console_page - determines if current passed url is considered to be a console page
++ *
++ * @param url - url to be checked
++ *
++ * @return true if console page, false if not
++ */
+ function is_console_page($url) {
+ 	global $menu;
+ 
diff -Nru cacti-1.2.24+ds1/debian/patches/0031-CVE-2024-31445-GHSA-vjph-r677-6pcc-SQL-injection-vul.patch cacti-1.2.24+ds1/debian/patches/0031-CVE-2024-31445-GHSA-vjph-r677-6pcc-SQL-injection-vul.patch
--- cacti-1.2.24+ds1/debian/patches/0031-CVE-2024-31445-GHSA-vjph-r677-6pcc-SQL-injection-vul.patch	1970-01-01 00:00:00.000000000 +0000
+++ cacti-1.2.24+ds1/debian/patches/0031-CVE-2024-31445-GHSA-vjph-r677-6pcc-SQL-injection-vul.patch	2024-08-11 17:28:54.000000000 +0000
@@ -0,0 +1,33 @@
+From: TheWitness <thewitn...@cacti.net>
+Date: Sun, 7 Apr 2024 10:24:07 -0400
+Subject: CVE-2024-31445 GHSA-vjph-r677-6pcc SQL injection vulnerability
+
+A SQL injection vulnerability in `automation_get_new_graphs_sql`
+function of `api_automation.php` allows authenticated users to exploit
+these SQL injection vulnerabilities to perform privilege escalation
+and remote code execution. In `api_automation.php` line 856, the
+`get_request_var('filter')` is being concatenated into the SQL
+statement without any sanitization. In `api_automation.php` line 717,
+The filter of `'filter'` is `FILTER_DEFAULT`, which means there is no
+filter for it
+
+bug: https://github.com/Cacti/cacti/security/advisories/GHSA-vjph-r677-6pcc
+origin: https://github.com/Cacti/cacti/commit/fd93c6e47651958b77c3bbe6a01fff695f81e886
+bug-debian-security: https://security-tracker.debian.org/tracker/CVE-2024-31445
+---
+ lib/api_automation.php | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/api_automation.php b/lib/api_automation.php
+index a93b188..78d15ad 100644
+--- a/lib/api_automation.php
++++ b/lib/api_automation.php
+@@ -1566,7 +1566,7 @@ function build_graph_object_sql_having($rule, $filter) {
+ 			$i = 0;
+ 
+ 			foreach($field_names as $column) {
+-				$sql_having .= ($i == 0 ? '':' OR ') . '`' . implode('`.`', explode('.', $column['field_name'])) . '`' . ' LIKE "%' . $filter . '%"';
++				$sql_having .= ($i == 0 ? '':' OR ') . '`' . implode('`.`', explode('.', $column['field_name'])) . '`' . ' LIKE ' . db_qstr('%' . $filter . '%');
+ 				$i++;
+ 			}
+ 
diff -Nru cacti-1.2.24+ds1/debian/patches/0032-CVE-2024-31458-GHSA-jrxg-8wh8-943x-SQL-injection.patch cacti-1.2.24+ds1/debian/patches/0032-CVE-2024-31458-GHSA-jrxg-8wh8-943x-SQL-injection.patch
--- cacti-1.2.24+ds1/debian/patches/0032-CVE-2024-31458-GHSA-jrxg-8wh8-943x-SQL-injection.patch	1970-01-01 00:00:00.000000000 +0000
+++ cacti-1.2.24+ds1/debian/patches/0032-CVE-2024-31458-GHSA-jrxg-8wh8-943x-SQL-injection.patch	2024-08-11 17:28:54.000000000 +0000
@@ -0,0 +1,39 @@
+From: TheWitness <thewitn...@cacti.net>
+Date: Sun, 7 Apr 2024 10:28:28 -0400
+Subject: CVE-2024-31458 GHSA-jrxg-8wh8-943x SQL injection
+
+some of the data stored in `form_save()` function in `graph_template_inputs.php` is
+not thoroughly checked and is used to concatenate the SQL statement in
+`draw_nontemplated_fields_graph_item()` function from
+`lib/html_form_templates.php` , finally resulting in SQL injection.
+
+bug: https://github.com/Cacti/cacti/security/advisories/GHSA-jrxg-8wh8-943x
+origin: https://github.com/Cacti/cacti/commit/9e87882007b6091171d1a4786f0de4ae20efef7b
+bug-debian-security: https://security-tracker.debian.org/tracker/CVE-2024-31458
+---
+ lib/html_form_template.php | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+diff --git a/lib/html_form_template.php b/lib/html_form_template.php
+index 635c68c..5478248 100644
+--- a/lib/html_form_template.php
++++ b/lib/html_form_template.php
+@@ -156,6 +156,18 @@ function draw_nontemplated_fields_graph_item($graph_template_id, $local_graph_id
+ 
+ 	if (cacti_sizeof($input_item_list)) {
+ 		foreach ($input_item_list as $item) {
++			if (!db_column_exists('graph_templates_item', $item['column_name'])) {
++				raise_message_javascript(
++					__('Attempted SQL Injection'),
++					__('There was a SQL Injection attempted on the page'),
++					__('A client attempted to create a SQL Injection into Cacti likely from an external host with the address %s', get_client_addr())
++				);
++
++				cacti_log(sprintf('ERROR: A client attempted to create a SQL Injection into Cacti likely from an external host with the address %s', get_client_addr()), false, 'SECURITY');
++
++				exit;
++			}
++
+ 			$form_array = array();
+ 
+ 			if (!empty($local_graph_id)) {
diff -Nru cacti-1.2.24+ds1/debian/patches/0033-CVE-2024-31459-GHSA-cx8g-hvq8-p2rv-remote-code-execu.patch cacti-1.2.24+ds1/debian/patches/0033-CVE-2024-31459-GHSA-cx8g-hvq8-p2rv-remote-code-execu.patch
--- cacti-1.2.24+ds1/debian/patches/0033-CVE-2024-31459-GHSA-cx8g-hvq8-p2rv-remote-code-execu.patch	1970-01-01 00:00:00.000000000 +0000
+++ cacti-1.2.24+ds1/debian/patches/0033-CVE-2024-31459-GHSA-cx8g-hvq8-p2rv-remote-code-execu.patch	2024-08-11 17:28:54.000000000 +0000
@@ -0,0 +1,30 @@
+From: TheWitness <thewitn...@cacti.net>
+Date: Sun, 7 Apr 2024 10:28:13 -0400
+Subject: CVE-2024-31459 GHSA-cx8g-hvq8-p2rv remote code execution
+
+There is a file inclusion issue in the lib/plugin.php file.
+Combined with SQL injection vulnerabilities, RCE can be implemented.
+
+origin: https://github.com/Cacti/cacti/commit/96d9a4c60693d87ba0e347f1c7d33047b4effc61
+bug: https://github.com/Cacti/cacti/security/advisories/GHSA-cx8g-hvq8-p2rv
+bug-debian-security: https://security-tracker.debian.org/tracker/CVE-2024-31459
+---
+ lib/plugins.php | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/lib/plugins.php b/lib/plugins.php
+index 8b91c6a..000cb6d 100644
+--- a/lib/plugins.php
++++ b/lib/plugins.php
+@@ -73,6 +73,11 @@ function api_plugin_hook($name) {
+ 
+ 	if (!empty($result)) {
+ 		foreach ($result as $hdata) {
++			// Security check
++			if (strpos($hdata['file'], '..') !== false) {
++				cacti_log("ERROR: Attempted inclusion of not plugin file $plugin_file from $plugin_name with the hook name $name", false, 'SECURITY');
++				continue;
++			}
+ 			if (!in_array($hdata['name'], $plugins_integrated, true)) {
+ 				if (file_exists($config['base_path'] . '/plugins/' . $hdata['name'] . '/' . $hdata['file'])) {
+ 					include_once($config['base_path'] . '/plugins/' . $hdata['name'] . '/' . $hdata['file']);
diff -Nru cacti-1.2.24+ds1/debian/patches/0034-CVE-2024-31460-GHSA-gj3f-p326-gh8r-SQL-injection.patch cacti-1.2.24+ds1/debian/patches/0034-CVE-2024-31460-GHSA-gj3f-p326-gh8r-SQL-injection.patch
--- cacti-1.2.24+ds1/debian/patches/0034-CVE-2024-31460-GHSA-gj3f-p326-gh8r-SQL-injection.patch	1970-01-01 00:00:00.000000000 +0000
+++ cacti-1.2.24+ds1/debian/patches/0034-CVE-2024-31460-GHSA-gj3f-p326-gh8r-SQL-injection.patch	2024-08-11 17:28:54.000000000 +0000
@@ -0,0 +1,70 @@
+From: TheWitness <thewitn...@cacti.net>
+Date: Sun, 7 Apr 2024 10:27:22 -0400
+Subject: CVE-2024-31460 GHSA-gj3f-p326-gh8r  SQL injection
+
+some of the data stored in `automation_tree_rules.php` is not
+thoroughly checked and is used to concatenate the SQL statement in
+`create_all_header_nodes()` function from `lib/api_automation.php` ,
+finally resulting in SQL injection. Using SQL based secondary
+injection technology, attackers can modify the contents of the Cacti
+database, and based on the modified content, it may be possible to
+achieve further impact, such as arbitrary file reading, and even
+remote code execution through arbitrary file writing
+
+bug: https://github.com/Cacti/cacti/security/advisories/GHSA-gj3f-p326-gh8r
+origin: https://github.com/Cacti/cacti/commit/8b516cb9a73322ad532231e74000c2ee097b495e
+bug-debian-security: https://security-tracker.debian.org/tracker/CVE-2024-31460
+---
+ lib/api_automation.php | 25 +++++++++++++++++++++++--
+ 1 file changed, 23 insertions(+), 2 deletions(-)
+
+diff --git a/lib/api_automation.php b/lib/api_automation.php
+index 78d15ad..f25f223 100644
+--- a/lib/api_automation.php
++++ b/lib/api_automation.php
+@@ -1136,7 +1136,7 @@ function display_matching_trees ($rule_id, $rule_type, $item, $url) {
+ 	if ($leaf_type == TREE_ITEM_TYPE_HOST) {
+ 		$sql_tables = 'FROM host AS h
+ 			LEFT JOIN host_template AS ht
+-			ON (h.host_template_id=ht.id)';
++			ON (h.host_template_id = ht.id)';
+ 
+ 		$sql_where = 'WHERE h.deleted = ""';
+ 	} elseif ($leaf_type == TREE_ITEM_TYPE_GRAPH) {
+@@ -1185,7 +1185,14 @@ function display_matching_trees ($rule_id, $rule_type, $item, $url) {
+ 	$sql_filter = build_matching_objects_filter($rule_id, AUTOMATION_RULE_TYPE_TREE_MATCH);
+ 
+ 	$templates = array();
+-	$sql_field = $item['field'] . ' AS source ';
++
++	if (api_automation_column_exists($item['field'], array('host', 'host_template', 'graph_local', 'graph_templates_graph', 'graph_templates'))) {
++		$sql_field = $item['field'] . ' AS source ';
++	} else {
++		$sql_field = '"SQL Injection" AS source ';
++		cacti_log('Attempted SQL Injection found in Tree Automation for the field variable.', false, 'AUTOM8');
++		raise_message('sql_injection', __('Attempted SQL Injection found in Tree Automation for the field variable.'), MESSAGE_LEVEL_ERROR);
++	}
+ 
+ 	/* now we build up a new query for counting the rows */
+ 	$rows_query = "SELECT h.id AS host_id, h.hostname, h.description,
+@@ -1271,6 +1278,20 @@ function display_matching_trees ($rule_id, $rule_type, $item, $url) {
+ 	print "</form>\n";
+ }
+ 
++function api_automation_column_exists($column, $tables) {
++	$column = str_replace(array('h.', 'ht.', 'gt.', 'gl.', 'gtg.'), '', 1);
++
++	if (cacti_sizeof($tables)) {
++		foreach($tables as $table) {
++			if (db_column_exists($table, $column)) {
++				return true;
++			}
++		}
++	}
++
++	return false;
++}
++
+ function display_match_rule_items($title, $rule_id, $rule_type, $module) {
+ 	global $automation_op_array, $automation_oper, $automation_tree_header_types;
+ 
diff -Nru cacti-1.2.24+ds1/debian/patches/0035-CVE-2024-34340-GHSA-37x7-mfjv-mm7m-type-juggling-vul.patch cacti-1.2.24+ds1/debian/patches/0035-CVE-2024-34340-GHSA-37x7-mfjv-mm7m-type-juggling-vul.patch
--- cacti-1.2.24+ds1/debian/patches/0035-CVE-2024-34340-GHSA-37x7-mfjv-mm7m-type-juggling-vul.patch	1970-01-01 00:00:00.000000000 +0000
+++ cacti-1.2.24+ds1/debian/patches/0035-CVE-2024-34340-GHSA-37x7-mfjv-mm7m-type-juggling-vul.patch	2024-08-11 17:28:54.000000000 +0000
@@ -0,0 +1,38 @@
+From: TheWitness <thewitn...@cacti.net>
+Date: Tue, 7 May 2024 12:57:11 -0400
+Subject: CVE-2024-34340 GHSA-37x7-mfjv-mm7m type juggling vulnerability
+
+Cacti calls `compat_password_hash` when users set their
+password. `compat_password_hash` use `password_hash` if there is it,
+else use `md5`. When verifying password, it calls
+`compat_password_verify`. In `compat_password_verify`,
+`password_verify` is called if there is it, else use
+`md5`. `password_verify` and `password_hash` are supported on PHP <
+5.5.0, following PHP manual. The vulnerability is in
+`compat_password_verify`. Md5-hashed user input is compared with
+correct password in database by `$md5 == $hash`. It is a loose
+comparison, not `===`. It is a type juggling vulnerability
+
+[backport]
+Drop changelog and french translation update
+
+origin: backport, https://github.com/Cacti/cacti/commit/6183961089980322dfd9fd8011ade0f41703eaea
+bug: https://github.com/Cacti/cacti/security/advisories/GHSA-37x7-mfjv-mm7m
+bug-debian-security: https://security-tracker.debian.org/tracker/CVE-2024-34340
+---
+ lib/auth.php | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/auth.php b/lib/auth.php
+index 5e43d0e..5cc193c 100644
+--- a/lib/auth.php
++++ b/lib/auth.php
+@@ -4403,7 +4403,7 @@ function compat_password_verify($password, $hash) {
+ 
+ 	$md5 = md5($password);
+ 
+-	return ($md5 == $hash);
++	return ($md5 === $hash);
+ }
+ 
+ /**
diff -Nru cacti-1.2.24+ds1/debian/patches/series cacti-1.2.24+ds1/debian/patches/series
--- cacti-1.2.24+ds1/debian/patches/series	2024-03-15 09:53:35.000000000 +0000
+++ cacti-1.2.24+ds1/debian/patches/series	2024-08-11 17:28:54.000000000 +0000
@@ -18,9 +18,18 @@
 CVE-2023-39365.patch
 0001-Fixing-5318-Multiple-minor-stored-XSS-vulnerabilitie.patch
 0001-Fixing-5318-Additional-XSS-in-Cacti.patch
-
 CVE-2023-39513.patch
 CVE-2023-49084.patch
 CVE-2023-49085.patch
 CVE-2023-49086.patch
 CVE-2023-49088,50250,50569.patch
+0026-CVE-2024-25641-Merge-pull-request-from-GHSA-7cmj-g5q.patch
+0027-1-2-CVE-2024-29894-Merge-pull-request-from-GHSA-grj5.patch
+0028-2-2-CVE-2024-29894-GHSA-grj5-8fcj-34gh-follow-up-fix.patch
+0029-CVE-2024-31443-Merge-pull-request-from-GHSA-rqc8-78c.patch
+0030-CVE-2024-31444-GHSA-p4ch-7hjw-6m87-XSS-vulnerability.patch
+0031-CVE-2024-31445-GHSA-vjph-r677-6pcc-SQL-injection-vul.patch
+0032-CVE-2024-31458-GHSA-jrxg-8wh8-943x-SQL-injection.patch
+0033-CVE-2024-31459-GHSA-cx8g-hvq8-p2rv-remote-code-execu.patch
+0034-CVE-2024-31460-GHSA-gj3f-p326-gh8r-SQL-injection.patch
+0035-CVE-2024-34340-GHSA-37x7-mfjv-mm7m-type-juggling-vul.patch

Attachment: signature.asc
Description: This is a digitally signed message part.

Reply via email to