Compare commits
8 Commits
c8
...
a8-cve-202
Author | SHA1 | Date | |
---|---|---|---|
c1cd3dbf79 | |||
89b1e48d4d | |||
bc44fa8a57 | |||
3a1b8841f0 | |||
808725f60d | |||
80346230b2 | |||
574359d30a | |||
7a51a30c62 |
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1 @@
|
||||
SOURCES/open-vm-tools-12.2.5-21855600.tar.gz
|
||||
SOURCES/open-vm-tools-12.3.5-22544099.tar.gz
|
||||
|
@ -1 +0,0 @@
|
||||
6bc6e77418cc4a039063a7ca40859535b9bbb339 SOURCES/open-vm-tools-12.2.5-21855600.tar.gz
|
374
SOURCES/0000-open-vm-tools-cve-2025-22247.patch
Normal file
374
SOURCES/0000-open-vm-tools-cve-2025-22247.patch
Normal file
@ -0,0 +1,374 @@
|
||||
From 7874e572b5aac5a418551dc5e3935c1e74bf6f1f Mon Sep 17 00:00:00 2001
|
||||
From: John Wolfe <john.wolfe@broadcom.com>
|
||||
Date: Mon, 5 May 2025 15:58:03 -0700
|
||||
Subject: [PATCH] Validate user names and file paths
|
||||
|
||||
Prevent usage of illegal characters in user names and file paths.
|
||||
Also, disallow unexpected symlinks in file paths.
|
||||
|
||||
This patch contains changes to common source files not applicable
|
||||
to open-vm-tools.
|
||||
|
||||
All files being updated should be consider to have the copyright to
|
||||
be updated to:
|
||||
|
||||
* Copyright (c) XXXX-2025 Broadcom. All Rights Reserved.
|
||||
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
||||
|
||||
The 2025 Broadcom copyright information update is not part of this
|
||||
patch set to allow the patch to be easily applied to previous
|
||||
open-vm-tools source releases.
|
||||
---
|
||||
open-vm-tools/vgauth/common/VGAuthUtil.c | 33 +++++++++
|
||||
open-vm-tools/vgauth/common/VGAuthUtil.h | 2 +
|
||||
open-vm-tools/vgauth/common/prefs.h | 3 +
|
||||
open-vm-tools/vgauth/common/usercheck.c | 23 +++++-
|
||||
open-vm-tools/vgauth/serviceImpl/alias.c | 74 ++++++++++++++++++-
|
||||
open-vm-tools/vgauth/serviceImpl/service.c | 27 +++++++
|
||||
open-vm-tools/vgauth/serviceImpl/serviceInt.h | 1 +
|
||||
7 files changed, 160 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/open-vm-tools/vgauth/common/VGAuthUtil.c b/open-vm-tools/vgauth/common/VGAuthUtil.c
|
||||
index 76383c462..9c2adb8d0 100644
|
||||
--- a/open-vm-tools/vgauth/common/VGAuthUtil.c
|
||||
+++ b/open-vm-tools/vgauth/common/VGAuthUtil.c
|
||||
@@ -309,3 +309,36 @@ Util_Assert(const char *cond,
|
||||
#endif
|
||||
g_assert(0);
|
||||
}
|
||||
+
|
||||
+
|
||||
+/*
|
||||
+ ******************************************************************************
|
||||
+ * Util_Utf8CaseCmp -- */ /**
|
||||
+ *
|
||||
+ * Case insensitive comparison for utf8 strings which can have non-ascii
|
||||
+ * characters.
|
||||
+ *
|
||||
+ * @param[in] str1 Null terminated utf8 string.
|
||||
+ * @param[in] str2 Null terminated utf8 string.
|
||||
+ *
|
||||
+ ******************************************************************************
|
||||
+ */
|
||||
+
|
||||
+int
|
||||
+Util_Utf8CaseCmp(const gchar *str1,
|
||||
+ const gchar *str2)
|
||||
+{
|
||||
+ int ret;
|
||||
+ gchar *str1Case;
|
||||
+ gchar *str2Case;
|
||||
+
|
||||
+ str1Case = g_utf8_casefold(str1, -1);
|
||||
+ str2Case = g_utf8_casefold(str2, -1);
|
||||
+
|
||||
+ ret = g_strcmp0(str1Case, str2Case);
|
||||
+
|
||||
+ g_free(str1Case);
|
||||
+ g_free(str2Case);
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
diff --git a/open-vm-tools/vgauth/common/VGAuthUtil.h b/open-vm-tools/vgauth/common/VGAuthUtil.h
|
||||
index f7f3aa216..ef32a91da 100644
|
||||
--- a/open-vm-tools/vgauth/common/VGAuthUtil.h
|
||||
+++ b/open-vm-tools/vgauth/common/VGAuthUtil.h
|
||||
@@ -105,4 +105,6 @@ gboolean Util_CheckExpiration(const GTimeVal *start, unsigned int duration);
|
||||
|
||||
void Util_Assert(const char *cond, const char *file, int lineNum);
|
||||
|
||||
+int Util_Utf8CaseCmp(const gchar *str1, const gchar *str2);
|
||||
+
|
||||
#endif
|
||||
diff --git a/open-vm-tools/vgauth/common/prefs.h b/open-vm-tools/vgauth/common/prefs.h
|
||||
index 6c58f3f4b..3299eb26c 100644
|
||||
--- a/open-vm-tools/vgauth/common/prefs.h
|
||||
+++ b/open-vm-tools/vgauth/common/prefs.h
|
||||
@@ -167,6 +167,9 @@ msgCatalog = /etc/vmware-tools/vgauth/messages
|
||||
/** Where the localized version of the messages were installed. */
|
||||
#define VGAUTH_PREF_LOCALIZATION_DIR "msgCatalog"
|
||||
|
||||
+/** If symlinks or junctions are allowed in alias store file path */
|
||||
+#define VGAUTH_PREF_ALLOW_SYMLINKS "allowSymlinks"
|
||||
+
|
||||
/*
|
||||
* Pref values
|
||||
*/
|
||||
diff --git a/open-vm-tools/vgauth/common/usercheck.c b/open-vm-tools/vgauth/common/usercheck.c
|
||||
index 3beede2e8..340aa0411 100644
|
||||
--- a/open-vm-tools/vgauth/common/usercheck.c
|
||||
+++ b/open-vm-tools/vgauth/common/usercheck.c
|
||||
@@ -78,6 +78,8 @@
|
||||
* Solaris as well, but that path is untested.
|
||||
*/
|
||||
|
||||
+#define MAX_USER_NAME_LEN 256
|
||||
+
|
||||
/*
|
||||
* A single retry works for the LDAP case, but try more often in case NIS
|
||||
* or something else has a related issue. Note that a bad username/uid won't
|
||||
@@ -354,12 +356,29 @@ Usercheck_UsernameIsLegal(const gchar *userName)
|
||||
* restricted list for local usernames.
|
||||
*/
|
||||
size_t len;
|
||||
- char *illegalChars = "<>/";
|
||||
+ size_t i = 0;
|
||||
+ int backSlashCnt = 0;
|
||||
+ /*
|
||||
+ * As user names are used to generate its alias store file name/path, it
|
||||
+ * should not contain path traversal characters ('/' and '\').
|
||||
+ */
|
||||
+ char *illegalChars = "<>/\\";
|
||||
|
||||
len = strlen(userName);
|
||||
- if (strcspn(userName, illegalChars) != len) {
|
||||
+ if (len > MAX_USER_NAME_LEN) {
|
||||
return FALSE;
|
||||
}
|
||||
+
|
||||
+ while ((i += strcspn(userName + i, illegalChars)) < len) {
|
||||
+ /*
|
||||
+ * One backward slash is allowed for domain\username separator.
|
||||
+ */
|
||||
+ if (userName[i] != '\\' || ++backSlashCnt > 1) {
|
||||
+ return FALSE;
|
||||
+ }
|
||||
+ ++i;
|
||||
+ }
|
||||
+
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
diff --git a/open-vm-tools/vgauth/serviceImpl/alias.c b/open-vm-tools/vgauth/serviceImpl/alias.c
|
||||
index 4e170202c..c7040ebff 100644
|
||||
--- a/open-vm-tools/vgauth/serviceImpl/alias.c
|
||||
+++ b/open-vm-tools/vgauth/serviceImpl/alias.c
|
||||
@@ -41,6 +41,7 @@
|
||||
#include "certverify.h"
|
||||
#include "VGAuthProto.h"
|
||||
#include "vmxlog.h"
|
||||
+#include "VGAuthUtil.h"
|
||||
|
||||
// puts the identity store in an easy to find place
|
||||
#undef WIN_TEST_MODE
|
||||
@@ -66,6 +67,7 @@
|
||||
#define ALIASSTORE_FILE_PREFIX "user-"
|
||||
#define ALIASSTORE_FILE_SUFFIX ".xml"
|
||||
|
||||
+static gboolean allowSymlinks = FALSE;
|
||||
static gchar *aliasStoreRootDir = DEFAULT_ALIASSTORE_ROOT_DIR;
|
||||
|
||||
#ifdef _WIN32
|
||||
@@ -252,6 +254,12 @@ mapping file layout:
|
||||
|
||||
*/
|
||||
|
||||
+#ifdef _WIN32
|
||||
+#define ISPATHSEP(c) ((c) == '\\' || (c) == '/')
|
||||
+#else
|
||||
+#define ISPATHSEP(c) ((c) == '/')
|
||||
+#endif
|
||||
+
|
||||
|
||||
/*
|
||||
******************************************************************************
|
||||
@@ -466,6 +474,7 @@ ServiceLoadFileContentsWin(const gchar *fileName,
|
||||
gunichar2 *fileNameW = NULL;
|
||||
BOOL ok;
|
||||
DWORD bytesRead;
|
||||
+ gchar *realPath = NULL;
|
||||
|
||||
*fileSize = 0;
|
||||
*contents = NULL;
|
||||
@@ -622,6 +631,22 @@ ServiceLoadFileContentsWin(const gchar *fileName,
|
||||
goto done;
|
||||
}
|
||||
|
||||
+ if (!allowSymlinks) {
|
||||
+ /*
|
||||
+ * Check if fileName is real path.
|
||||
+ */
|
||||
+ if ((realPath = ServiceFileGetPathByHandle(hFile)) == NULL) {
|
||||
+ err = VGAUTH_E_FAIL;
|
||||
+ goto done;
|
||||
+ }
|
||||
+ if (Util_Utf8CaseCmp(realPath, fileName) != 0) {
|
||||
+ Warning("%s: Real path (%s) is not same as file path (%s)\n",
|
||||
+ __FUNCTION__, realPath, fileName);
|
||||
+ err = VGAUTH_E_FAIL;
|
||||
+ goto done;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
/*
|
||||
* Now finally read the contents.
|
||||
*/
|
||||
@@ -650,6 +675,7 @@ done:
|
||||
CloseHandle(hFile);
|
||||
}
|
||||
g_free(fileNameW);
|
||||
+ g_free(realPath);
|
||||
|
||||
return err;
|
||||
}
|
||||
@@ -672,6 +698,7 @@ ServiceLoadFileContentsPosix(const gchar *fileName,
|
||||
gchar *buf;
|
||||
gchar *bp;
|
||||
int fd = -1;
|
||||
+ gchar realPath[PATH_MAX] = { 0 };
|
||||
|
||||
*fileSize = 0;
|
||||
*contents = NULL;
|
||||
@@ -817,6 +844,23 @@ ServiceLoadFileContentsPosix(const gchar *fileName,
|
||||
goto done;
|
||||
}
|
||||
|
||||
+ if (!allowSymlinks) {
|
||||
+ /*
|
||||
+ * Check if fileName is real path.
|
||||
+ */
|
||||
+ if (realpath(fileName, realPath) == NULL) {
|
||||
+ Warning("%s: realpath() failed. errno (%d)\n", __FUNCTION__, errno);
|
||||
+ err = VGAUTH_E_FAIL;
|
||||
+ goto done;
|
||||
+ }
|
||||
+ if (g_strcmp0(realPath, fileName) != 0) {
|
||||
+ Warning("%s: Real path (%s) is not same as file path (%s)\n",
|
||||
+ __FUNCTION__, realPath, fileName);
|
||||
+ err = VGAUTH_E_FAIL;
|
||||
+ goto done;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
/*
|
||||
* All confidence checks passed; read the bits.
|
||||
*/
|
||||
@@ -2803,8 +2847,13 @@ ServiceAliasRemoveAlias(const gchar *reqUserName,
|
||||
|
||||
/*
|
||||
* We don't verify the user exists in a Remove operation, to allow
|
||||
- * cleanup of deleted user's stores.
|
||||
+ * cleanup of deleted user's stores, but we do check whether the
|
||||
+ * user name is legal or not.
|
||||
*/
|
||||
+ if (!Usercheck_UsernameIsLegal(userName)) {
|
||||
+ Warning("%s: Illegal user name '%s'\n", __FUNCTION__, userName);
|
||||
+ return VGAUTH_E_FAIL;
|
||||
+ }
|
||||
|
||||
if (!CertVerify_IsWellFormedPEMCert(pemCert)) {
|
||||
return VGAUTH_E_INVALID_CERTIFICATE;
|
||||
@@ -3036,6 +3085,16 @@ ServiceAliasQueryAliases(const gchar *userName,
|
||||
}
|
||||
#endif
|
||||
|
||||
+ /*
|
||||
+ * We don't verify the user exists in a Query operation to allow
|
||||
+ * cleaning up after a deleted user, but we do check whether the
|
||||
+ * user name is legal or not.
|
||||
+ */
|
||||
+ if (!Usercheck_UsernameIsLegal(userName)) {
|
||||
+ Warning("%s: Illegal user name '%s'\n", __FUNCTION__, userName);
|
||||
+ return VGAUTH_E_FAIL;
|
||||
+ }
|
||||
+
|
||||
err = AliasLoadAliases(userName, num, aList);
|
||||
if (VGAUTH_E_OK != err) {
|
||||
Warning("%s: failed to load Aliases for '%s'\n", __FUNCTION__, userName);
|
||||
@@ -3294,6 +3353,7 @@ ServiceAliasInitAliasStore(void)
|
||||
VGAuthError err = VGAUTH_E_OK;
|
||||
gboolean saveBadDir = FALSE;
|
||||
char *defaultDir = NULL;
|
||||
+ size_t len;
|
||||
|
||||
#ifdef _WIN32
|
||||
{
|
||||
@@ -3324,6 +3384,10 @@ ServiceAliasInitAliasStore(void)
|
||||
defaultDir = g_strdup(DEFAULT_ALIASSTORE_ROOT_DIR);
|
||||
#endif
|
||||
|
||||
+ allowSymlinks = Pref_GetBool(gPrefs,
|
||||
+ VGAUTH_PREF_ALLOW_SYMLINKS,
|
||||
+ VGAUTH_PREF_GROUP_NAME_SERVICE,
|
||||
+ FALSE);
|
||||
/*
|
||||
* Find the alias store directory. This allows an installer to put
|
||||
* it somewhere else if necessary.
|
||||
@@ -3337,6 +3401,14 @@ ServiceAliasInitAliasStore(void)
|
||||
VGAUTH_PREF_GROUP_NAME_SERVICE,
|
||||
defaultDir);
|
||||
|
||||
+ /*
|
||||
+ * Remove the trailing separator if any from aliasStoreRootDir path.
|
||||
+ */
|
||||
+ len = strlen(aliasStoreRootDir);
|
||||
+ if (ISPATHSEP(aliasStoreRootDir[len - 1])) {
|
||||
+ aliasStoreRootDir[len - 1] = '\0';
|
||||
+ }
|
||||
+
|
||||
Log("Using '%s' for alias store root directory\n", aliasStoreRootDir);
|
||||
|
||||
g_free(defaultDir);
|
||||
diff --git a/open-vm-tools/vgauth/serviceImpl/service.c b/open-vm-tools/vgauth/serviceImpl/service.c
|
||||
index d4716526c..e053ed0fa 100644
|
||||
--- a/open-vm-tools/vgauth/serviceImpl/service.c
|
||||
+++ b/open-vm-tools/vgauth/serviceImpl/service.c
|
||||
@@ -28,6 +28,7 @@
|
||||
#include "VGAuthUtil.h"
|
||||
#ifdef _WIN32
|
||||
#include "winUtil.h"
|
||||
+#include <glib.h>
|
||||
#endif
|
||||
|
||||
static ServiceStartListeningForIOFunc startListeningIOFunc = NULL;
|
||||
@@ -283,9 +284,35 @@ static gchar *
|
||||
ServiceUserNameToPipeName(const char *userName)
|
||||
{
|
||||
gchar *escapedName = ServiceEncodeUserName(userName);
|
||||
+#ifdef _WIN32
|
||||
+ /*
|
||||
+ * Adding below pragma only in windows to suppress the compile time warning
|
||||
+ * about unavailability of g_uuid_string_random() since compiler flag
|
||||
+ * GLIB_VERSION_MAX_ALLOWED is defined to GLIB_VERSION_2_34.
|
||||
+ * TODO: Remove below pragma when GLIB_VERSION_MAX_ALLOWED is bumped up to
|
||||
+ * or greater than GLIB_VERSION_2_52.
|
||||
+ */
|
||||
+#pragma warning(suppress : 4996)
|
||||
+ gchar *uuidStr = g_uuid_string_random();
|
||||
+ /*
|
||||
+ * Add a unique suffix to avoid a name collision with an existing named pipe
|
||||
+ * created by someone else (intentionally or by accident).
|
||||
+ * This is not needed for Linux; name collisions on sockets are already
|
||||
+ * avoided there since (1) file system paths to VGAuthService sockets are in
|
||||
+ * a directory that is writable only by root and (2) VGAuthService unlinks a
|
||||
+ * socket path before binding it to a newly created socket.
|
||||
+ */
|
||||
+ gchar *pipeName = g_strdup_printf("%s-%s-%s",
|
||||
+ SERVICE_PUBLIC_PIPE_NAME,
|
||||
+ escapedName,
|
||||
+ uuidStr);
|
||||
+
|
||||
+ g_free(uuidStr);
|
||||
+#else
|
||||
gchar *pipeName = g_strdup_printf("%s-%s",
|
||||
SERVICE_PUBLIC_PIPE_NAME,
|
||||
escapedName);
|
||||
+#endif
|
||||
|
||||
g_free(escapedName);
|
||||
return pipeName;
|
||||
diff --git a/open-vm-tools/vgauth/serviceImpl/serviceInt.h b/open-vm-tools/vgauth/serviceImpl/serviceInt.h
|
||||
index 5f420192b..f4f88547d 100644
|
||||
--- a/open-vm-tools/vgauth/serviceImpl/serviceInt.h
|
||||
+++ b/open-vm-tools/vgauth/serviceImpl/serviceInt.h
|
||||
@@ -441,6 +441,7 @@ VGAuthError ServiceFileVerifyAdminGroupOwnedByHandle(const HANDLE hFile);
|
||||
VGAuthError ServiceFileVerifyEveryoneReadableByHandle(const HANDLE hFile);
|
||||
VGAuthError ServiceFileVerifyUserAccessByHandle(const HANDLE hFile,
|
||||
const char *userName);
|
||||
+gchar *ServiceFileGetPathByHandle(HANDLE hFile);
|
||||
#else
|
||||
VGAuthError ServiceFileVerifyFileOwnerAndPerms(const char *fileName,
|
||||
const char *userName,
|
||||
--
|
||||
2.43.5
|
||||
|
BIN
SOURCES/open-vm-tools-12.1.5-20735119.tar.gz
Normal file
BIN
SOURCES/open-vm-tools-12.1.5-20735119.tar.gz
Normal file
Binary file not shown.
@ -1,424 +0,0 @@
|
||||
From 4fb21bd75fd5a4eceed67a8050436b47750ca716 Mon Sep 17 00:00:00 2001
|
||||
From: Katy Feng <fkaty@vmware.com>
|
||||
Date: Tue, 22 Aug 2023 11:11:42 -0700
|
||||
Subject: [PATCH] Provide alternate method to allow (expected) pre-frozen
|
||||
filesystems
|
||||
|
||||
RH-Author: Ani Sinha <None>
|
||||
RH-MergeRequest: 30: Provide alternate method to allow (expected) pre-frozen filesystems when taking a quiesced snapshot.
|
||||
RH-Jira: RHEL-7012
|
||||
RH-Commit: [1/1] 07570fcdc1fd697d54268e530fc64162eb2a0bdb
|
||||
|
||||
Effective with open-vm-tools 12.2.0, Linux quiesced snapshots will fail if
|
||||
any filesystem(s) have been prefrozen by other than the vmtoolsd process.
|
||||
This has been done to assure that filesystems are inactive while the
|
||||
snapshots are being taken. Some existing prefreeze scripts may be freezing
|
||||
some filesystem(s). In these cases, the vmtoolsd process must be informed of
|
||||
anticipated pre-frozen filesystems by providing an "excludedFileSystem" list in
|
||||
the [vmbackup] section of the tools.conf file.
|
||||
|
||||
This change provides a new switch in the tools.conf file to allow pre-frozen
|
||||
filesystems to be encountered and accepted when doing a quiesced snapshot
|
||||
operation. With the default value of "false", the "ignoreFrozenFileSystems"
|
||||
can be configured with a setting of "true" to notify the quiesced snapshot
|
||||
operation that pre-frozen filesystems are allowed.
|
||||
|
||||
(cherry picked from commit 60c3a80ddc2b400366ed05169e16a6bed6501da2)
|
||||
Signed-off-by: Ani Sinha <anisinha@redhat.com>
|
||||
---
|
||||
open-vm-tools/lib/include/syncDriver.h | 5 ++--
|
||||
open-vm-tools/lib/syncDriver/nullDriver.c | 10 +++++---
|
||||
open-vm-tools/lib/syncDriver/syncDriverInt.h | 14 +++++++----
|
||||
.../lib/syncDriver/syncDriverLinux.c | 25 ++++++++++++++-----
|
||||
.../lib/syncDriver/syncDriverPosix.c | 7 +++---
|
||||
open-vm-tools/lib/syncDriver/vmSyncDriver.c | 10 +++++---
|
||||
.../services/plugins/vix/foundryToolsDaemon.c | 14 +++++++++--
|
||||
.../services/plugins/vmbackup/stateMachine.c | 8 ++++--
|
||||
.../services/plugins/vmbackup/syncDriverOps.c | 5 ++--
|
||||
.../services/plugins/vmbackup/vmBackupInt.h | 19 ++++++++------
|
||||
open-vm-tools/tools.conf | 23 +++++++++++++++++
|
||||
11 files changed, 103 insertions(+), 37 deletions(-)
|
||||
|
||||
diff --git a/open-vm-tools/lib/include/syncDriver.h b/open-vm-tools/lib/include/syncDriver.h
|
||||
index 20712f66..8ef229d4 100644
|
||||
--- a/open-vm-tools/lib/include/syncDriver.h
|
||||
+++ b/open-vm-tools/lib/include/syncDriver.h
|
||||
@@ -1,5 +1,5 @@
|
||||
/*********************************************************
|
||||
- * Copyright (C) 2005-2018 VMware, Inc. All rights reserved.
|
||||
+ * Copyright (c) 2005-2018, 2023 VMware, Inc. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU Lesser General Public License as published
|
||||
@@ -51,7 +51,8 @@ typedef enum {
|
||||
Bool SyncDriver_Init(void);
|
||||
Bool SyncDriver_Freeze(const char *drives, Bool enableNullDriver,
|
||||
SyncDriverHandle *handle,
|
||||
- const char *excludedFileSystems);
|
||||
+ const char *excludedFileSystems,
|
||||
+ Bool ignoreFrozenFS);
|
||||
Bool SyncDriver_Thaw(const SyncDriverHandle handle);
|
||||
SyncDriverStatus SyncDriver_QueryStatus(const SyncDriverHandle handle,
|
||||
int32 timeout);
|
||||
diff --git a/open-vm-tools/lib/syncDriver/nullDriver.c b/open-vm-tools/lib/syncDriver/nullDriver.c
|
||||
index 5e19e208..be96222a 100644
|
||||
--- a/open-vm-tools/lib/syncDriver/nullDriver.c
|
||||
+++ b/open-vm-tools/lib/syncDriver/nullDriver.c
|
||||
@@ -1,5 +1,5 @@
|
||||
/*********************************************************
|
||||
- * Copyright (C) 2011-2016 VMware, Inc. All rights reserved.
|
||||
+ * Copyright (c) 2011-2016, 2023 VMware, Inc. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU Lesser General Public License as published
|
||||
@@ -54,8 +54,9 @@ NullDriverClose(SyncDriverHandle handle)
|
||||
*
|
||||
* Calls sync().
|
||||
*
|
||||
- * @param[in] paths Unused.
|
||||
- * @param[out] handle Where to store the operation handle.
|
||||
+ * @param[in] paths Unused.
|
||||
+ * @param[out] handle Where to store the operation handle.
|
||||
+ * @param[in] ignoreFrozenFS Unused.
|
||||
*
|
||||
* @return A SyncDriverErr.
|
||||
*
|
||||
@@ -64,7 +65,8 @@ NullDriverClose(SyncDriverHandle handle)
|
||||
|
||||
SyncDriverErr
|
||||
NullDriver_Freeze(const GSList *paths,
|
||||
- SyncDriverHandle *handle)
|
||||
+ SyncDriverHandle *handle,
|
||||
+ Bool ignoreFrozenFS)
|
||||
{
|
||||
/*
|
||||
* This is more of a "let's at least do something" than something that
|
||||
diff --git a/open-vm-tools/lib/syncDriver/syncDriverInt.h b/open-vm-tools/lib/syncDriver/syncDriverInt.h
|
||||
index 04f37bf2..a5706298 100644
|
||||
--- a/open-vm-tools/lib/syncDriver/syncDriverInt.h
|
||||
+++ b/open-vm-tools/lib/syncDriver/syncDriverInt.h
|
||||
@@ -1,5 +1,5 @@
|
||||
/*********************************************************
|
||||
- * Copyright (C) 2011-2017 VMware, Inc. All rights reserved.
|
||||
+ * Copyright (c) 2011-2017, 2023 VMware, Inc. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU Lesser General Public License as published
|
||||
@@ -41,7 +41,8 @@ typedef enum {
|
||||
} SyncDriverErr;
|
||||
|
||||
typedef SyncDriverErr (*SyncFreezeFn)(const GSList *paths,
|
||||
- SyncDriverHandle *handle);
|
||||
+ SyncDriverHandle *handle,
|
||||
+ Bool ignoreFrozenFs);
|
||||
|
||||
typedef struct SyncHandle {
|
||||
SyncDriverErr (*thaw)(const SyncDriverHandle handle);
|
||||
@@ -55,15 +56,18 @@ typedef struct SyncHandle {
|
||||
#if defined(__linux__)
|
||||
SyncDriverErr
|
||||
LinuxDriver_Freeze(const GSList *userPaths,
|
||||
- SyncDriverHandle *handle);
|
||||
+ SyncDriverHandle *handle,
|
||||
+ Bool ignoreFrozenFs);
|
||||
|
||||
SyncDriverErr
|
||||
VmSync_Freeze(const GSList *userPaths,
|
||||
- SyncDriverHandle *handle);
|
||||
+ SyncDriverHandle *handle,
|
||||
+ Bool ignoreFrozenFs);
|
||||
|
||||
SyncDriverErr
|
||||
NullDriver_Freeze(const GSList *userPaths,
|
||||
- SyncDriverHandle *handle);
|
||||
+ SyncDriverHandle *handle,
|
||||
+ Bool ignoreFrozenFs);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
diff --git a/open-vm-tools/lib/syncDriver/syncDriverLinux.c b/open-vm-tools/lib/syncDriver/syncDriverLinux.c
|
||||
index 6d9a3568..4581098e 100644
|
||||
--- a/open-vm-tools/lib/syncDriver/syncDriverLinux.c
|
||||
+++ b/open-vm-tools/lib/syncDriver/syncDriverLinux.c
|
||||
@@ -199,8 +199,9 @@ LinuxFiGetAttr(const SyncDriverHandle handle, // IN (ignored)
|
||||
* slow when guest is performing significant IO. Therefore, caller should
|
||||
* consider running this function in a separate thread.
|
||||
*
|
||||
- * @param[in] paths List of paths to freeze.
|
||||
- * @param[out] handle Handle to use for thawing.
|
||||
+ * @param[in] paths List of paths to freeze.
|
||||
+ * @param[out] handle Handle to use for thawing.
|
||||
+ * @param[in] ignoreFrozenFS Switch to allow EBUSY error.
|
||||
*
|
||||
* @return A SyncDriverErr.
|
||||
*
|
||||
@@ -209,7 +210,8 @@ LinuxFiGetAttr(const SyncDriverHandle handle, // IN (ignored)
|
||||
|
||||
SyncDriverErr
|
||||
LinuxDriver_Freeze(const GSList *paths,
|
||||
- SyncDriverHandle *handle)
|
||||
+ SyncDriverHandle *handle,
|
||||
+ Bool ignoreFrozenFS)
|
||||
{
|
||||
ssize_t count = 0;
|
||||
Bool first = TRUE;
|
||||
@@ -324,9 +326,12 @@ LinuxDriver_Freeze(const GSList *paths,
|
||||
* Previously, an EBUSY error was ignored, assuming that we may try
|
||||
* to freeze the same superblock more than once depending on the
|
||||
* OS configuration (e.g., usage of bind mounts).
|
||||
- * Using the filesystem Id to check if this is a filesystem that we
|
||||
- * have seen previously and will ignore this FD only if that is
|
||||
- * the case. Log a warning otherwise since the quiesced snapshot
|
||||
+ * Use the filesystem Id to check if this filesystem has been
|
||||
+ * handled before and, if so, ignore it.
|
||||
+ * Alternatively, allow (ignore) the EBUSY if the
|
||||
+ * "ignoreFrozenFileSystems" switch inside "vmbackup" section of
|
||||
+ * tools.conf file is TRUE.
|
||||
+ * Otherwise, log a warning as the quiesced snapshot
|
||||
* attempt will fail.
|
||||
*/
|
||||
if (ioctlerr == EBUSY) {
|
||||
@@ -339,6 +344,14 @@ LinuxDriver_Freeze(const GSList *paths,
|
||||
*/
|
||||
Debug(LGPFX "skipping path '%s' - previously frozen", path);
|
||||
continue;
|
||||
+ } else if (ignoreFrozenFS) {
|
||||
+ /*
|
||||
+ * Ignores the EBUSY error if the FS has been frozen by another
|
||||
+ * process and the 'ignoreFrozenFileSystems' setting is
|
||||
+ * turned on in tools.conf file.
|
||||
+ */
|
||||
+ Debug(LGPFX "Ignoring the frozen filesystem '%s'",path);
|
||||
+ continue;
|
||||
}
|
||||
/*
|
||||
* It appears that this FS has been locked or frozen by another
|
||||
diff --git a/open-vm-tools/lib/syncDriver/syncDriverPosix.c b/open-vm-tools/lib/syncDriver/syncDriverPosix.c
|
||||
index 7b6132ba..27369639 100644
|
||||
--- a/open-vm-tools/lib/syncDriver/syncDriverPosix.c
|
||||
+++ b/open-vm-tools/lib/syncDriver/syncDriverPosix.c
|
||||
@@ -1,5 +1,5 @@
|
||||
/*********************************************************
|
||||
- * Copyright (C) 2005-2019 VMware, Inc. All rights reserved.
|
||||
+ * Copyright (c) 2005-2019, 2023 VMware, Inc. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU Lesser General Public License as published
|
||||
@@ -456,7 +456,8 @@ Bool
|
||||
SyncDriver_Freeze(const char *userPaths, // IN
|
||||
Bool enableNullDriver, // IN
|
||||
SyncDriverHandle *handle, // OUT
|
||||
- const char *excludedFileSystems) // IN
|
||||
+ const char *excludedFileSystems, // IN
|
||||
+ Bool ignoreFrozenFS) // IN
|
||||
{
|
||||
GSList *paths = NULL;
|
||||
SyncDriverErr err = SD_UNAVAILABLE;
|
||||
@@ -517,7 +518,7 @@ SyncDriver_Freeze(const char *userPaths, // IN
|
||||
continue;
|
||||
}
|
||||
#endif
|
||||
- err = freezeFn(paths, handle);
|
||||
+ err = freezeFn(paths, handle, ignoreFrozenFS);
|
||||
}
|
||||
|
||||
/*
|
||||
diff --git a/open-vm-tools/lib/syncDriver/vmSyncDriver.c b/open-vm-tools/lib/syncDriver/vmSyncDriver.c
|
||||
index 2bd0e886..a0d4a315 100644
|
||||
--- a/open-vm-tools/lib/syncDriver/vmSyncDriver.c
|
||||
+++ b/open-vm-tools/lib/syncDriver/vmSyncDriver.c
|
||||
@@ -1,5 +1,5 @@
|
||||
/*********************************************************
|
||||
- * Copyright (C) 2011-2016 VMware, Inc. All rights reserved.
|
||||
+ * Copyright (c) 2011-2016, 2023 VMware, Inc. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU Lesser General Public License as published
|
||||
@@ -91,8 +91,9 @@ VmSyncClose(SyncDriverHandle handle)
|
||||
* Opens a description to the driver's proc node, and if successful, send an
|
||||
* ioctl to freeze the requested filesystems.
|
||||
*
|
||||
- * @param[in] paths List of paths to freeze.
|
||||
- * @param[out] handle Where to store the handle to use for thawing.
|
||||
+ * @param[in] paths List of paths to freeze.
|
||||
+ * @param[out] handle Where to store the handle to use for thawing.
|
||||
+ * @param[in] ignoreFrozenFS Unused.
|
||||
*
|
||||
* @return A SyncDriverErr.
|
||||
*
|
||||
@@ -101,7 +102,8 @@ VmSyncClose(SyncDriverHandle handle)
|
||||
|
||||
SyncDriverErr
|
||||
VmSync_Freeze(const GSList *paths,
|
||||
- SyncDriverHandle *handle)
|
||||
+ SyncDriverHandle *handle,
|
||||
+ Bool ignoreFrozenFS)
|
||||
{
|
||||
int file;
|
||||
Bool first = TRUE;
|
||||
diff --git a/open-vm-tools/services/plugins/vix/foundryToolsDaemon.c b/open-vm-tools/services/plugins/vix/foundryToolsDaemon.c
|
||||
index 7d45d3f5..079540f1 100644
|
||||
--- a/open-vm-tools/services/plugins/vix/foundryToolsDaemon.c
|
||||
+++ b/open-vm-tools/services/plugins/vix/foundryToolsDaemon.c
|
||||
@@ -1,5 +1,5 @@
|
||||
/*********************************************************
|
||||
- * Copyright (C) 2003-2021 VMware, Inc. All rights reserved.
|
||||
+ * Copyright (c) 2003-2021, 2023 VMware, Inc. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU Lesser General Public License as published
|
||||
@@ -545,6 +545,8 @@ ToolsDaemonTcloSyncDriverFreeze(RpcInData *data)
|
||||
GKeyFile *confDictRef = ctx->config;
|
||||
Bool enableNullDriver;
|
||||
GSource *timer;
|
||||
+ char *excludedFileSystems;
|
||||
+ Bool ignoreFrozenFS;
|
||||
|
||||
/*
|
||||
* Parse the arguments
|
||||
@@ -581,10 +583,18 @@ ToolsDaemonTcloSyncDriverFreeze(RpcInData *data)
|
||||
"vmbackup",
|
||||
"enableNullDriver",
|
||||
FALSE);
|
||||
+ excludedFileSystems = VMTools_ConfigGetString(confDictRef,
|
||||
+ "vmbackup",
|
||||
+ "excludedFileSystems",
|
||||
+ NULL);
|
||||
+ ignoreFrozenFS = VMTools_ConfigGetBoolean(confDictRef,
|
||||
+ "vmbackup",
|
||||
+ "ignoreFrozenFileSystems",
|
||||
+ FALSE);
|
||||
|
||||
/* Perform the actual freeze. */
|
||||
if (!SyncDriver_Freeze(driveList, enableNullDriver, &gSyncDriverHandle,
|
||||
- NULL) ||
|
||||
+ excludedFileSystems, ignoreFrozenFS) ||
|
||||
SyncDriver_QueryStatus(gSyncDriverHandle, INFINITE) != SYNCDRIVER_IDLE) {
|
||||
g_warning("%s: Failed to Freeze drives '%s'\n",
|
||||
__FUNCTION__, driveList);
|
||||
diff --git a/open-vm-tools/services/plugins/vmbackup/stateMachine.c b/open-vm-tools/services/plugins/vmbackup/stateMachine.c
|
||||
index 99f52582..b04565d8 100644
|
||||
--- a/open-vm-tools/services/plugins/vmbackup/stateMachine.c
|
||||
+++ b/open-vm-tools/services/plugins/vmbackup/stateMachine.c
|
||||
@@ -1073,9 +1073,13 @@ VmBackupStartCommon(RpcInData *data,
|
||||
#if defined(__linux__)
|
||||
gBackupState->excludedFileSystems =
|
||||
VMBACKUP_CONFIG_GET_STR(ctx->config, "excludedFileSystems", NULL);
|
||||
- g_debug("Using excludedFileSystems = \"%s\"\n",
|
||||
+ gBackupState->ignoreFrozenFS =
|
||||
+ VMBACKUP_CONFIG_GET_BOOL(ctx->config, "ignoreFrozenFileSystems", FALSE);
|
||||
+
|
||||
+ g_debug("Using excludedFileSystems = \"%s\", ignoreFrozenFileSystems = %d\n",
|
||||
(gBackupState->excludedFileSystems != NULL) ?
|
||||
- gBackupState->excludedFileSystems : "(null)");
|
||||
+ gBackupState->excludedFileSystems : "(null)",
|
||||
+ gBackupState->ignoreFrozenFS);
|
||||
#endif
|
||||
g_debug("Quiescing volumes: %s",
|
||||
(gBackupState->volumes) ? gBackupState->volumes : "(null)");
|
||||
diff --git a/open-vm-tools/services/plugins/vmbackup/syncDriverOps.c b/open-vm-tools/services/plugins/vmbackup/syncDriverOps.c
|
||||
index cc01d294..a090ec72 100644
|
||||
--- a/open-vm-tools/services/plugins/vmbackup/syncDriverOps.c
|
||||
+++ b/open-vm-tools/services/plugins/vmbackup/syncDriverOps.c
|
||||
@@ -1,5 +1,5 @@
|
||||
/*********************************************************
|
||||
- * Copyright (C) 2007-2019, 2021 VMware, Inc. All rights reserved.
|
||||
+ * Copyright (C) 2007-2019, 2021, 2023 VMware, Inc. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU Lesser General Public License as published
|
||||
@@ -276,7 +276,8 @@ VmBackupNewDriverOp(VmBackupState *state, // IN
|
||||
useNullDriverPrefs ?
|
||||
state->enableNullDriver : FALSE,
|
||||
op->syncHandle,
|
||||
- state->excludedFileSystems);
|
||||
+ state->excludedFileSystems,
|
||||
+ state->ignoreFrozenFS);
|
||||
break;
|
||||
case OP_THAW:
|
||||
op->manifest = SyncNewManifest(state, *op->syncHandle);
|
||||
diff --git a/open-vm-tools/services/plugins/vmbackup/vmBackupInt.h b/open-vm-tools/services/plugins/vmbackup/vmBackupInt.h
|
||||
index 0c912174..65e2e552 100644
|
||||
--- a/open-vm-tools/services/plugins/vmbackup/vmBackupInt.h
|
||||
+++ b/open-vm-tools/services/plugins/vmbackup/vmBackupInt.h
|
||||
@@ -1,5 +1,5 @@
|
||||
/*********************************************************
|
||||
- * Copyright (C) 2008-2019 VMware, Inc. All rights reserved.
|
||||
+ * Copyright (c) 2008-2019, 2023 VMware, Inc. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU Lesser General Public License as published
|
||||
@@ -100,18 +100,22 @@ struct VmBackupSyncCompleter;
|
||||
* Don't modify the fields directly - rather, use VmBackup_SetCurrentOp,
|
||||
* which does most of the handling needed by users of the state machine.
|
||||
*
|
||||
- * NOTE: The thread for freeze operation modifies currentOp in BackupState
|
||||
- * which is also accessed by the AsyncCallback driving the state
|
||||
- * machine (run by main thread). Also, gcc might generate two
|
||||
- * instructions for writing a 64-bit value. Therefore, protect the
|
||||
- * access to currentOp and related fields using opLock mutex.
|
||||
+ * NOTE 1: The thread for freeze operation modifies currentOp in BackupState
|
||||
+ * which is also accessed by the AsyncCallback driving the state
|
||||
+ * machine (run by main thread). Also, gcc might generate two
|
||||
+ * instructions for writing a 64-bit value. Therefore, protect the
|
||||
+ * access to currentOp and related fields using opLock mutex.
|
||||
+ *
|
||||
+ * NOTE 2: Only used by Linux guests, ignored on Windows guests and is
|
||||
+ * initialized to "false" when the VmBackupState is initialized
|
||||
+ * at the start of a backup operation.
|
||||
*/
|
||||
|
||||
typedef struct VmBackupState {
|
||||
ToolsAppCtx *ctx;
|
||||
VmBackupOp *currentOp;
|
||||
const char *currentOpName;
|
||||
- GMutex opLock; // See note above
|
||||
+ GMutex opLock; // See note 1 above
|
||||
char *volumes;
|
||||
char *snapshots;
|
||||
guint pollPeriod;
|
||||
@@ -127,6 +131,7 @@ typedef struct VmBackupState {
|
||||
Bool allowHWProvider;
|
||||
Bool execScripts;
|
||||
Bool enableNullDriver;
|
||||
+ Bool ignoreFrozenFS; // See note 2 above
|
||||
Bool needsPriv;
|
||||
gchar *scriptArg;
|
||||
guint timeout;
|
||||
diff --git a/open-vm-tools/tools.conf b/open-vm-tools/tools.conf
|
||||
index e5a03a9c..f238cb59 100644
|
||||
--- a/open-vm-tools/tools.conf
|
||||
+++ b/open-vm-tools/tools.conf
|
||||
@@ -395,6 +395,29 @@
|
||||
|
||||
#excludedFileSystems=
|
||||
|
||||
+# Linux:
|
||||
+# It is possible that filesystems are being frozen in pre-freeze scripts
|
||||
+# to control the order in which those specific filesystems are to be frozen.
|
||||
+# The vmtoolsd process must be informed of all such filesystems with the help
|
||||
+# of "excludedFileSystems" setting of tools.conf.
|
||||
+#
|
||||
+# A temporary workaround is available (starting from 12.3.0) for admins to allow
|
||||
+# quiesceing operation to succeed until the "excludedFileSystems" list
|
||||
+# is configured.
|
||||
+#
|
||||
+# If another process thaws the file system while a quiescing operation
|
||||
+# operation is ongoing, the snapshot may be compromised. Once the
|
||||
+# "excludedFileSystems" list is configured this setting MUST be unset (or set
|
||||
+# to false).
|
||||
+#
|
||||
+# The value of ignoreFrozenFileSystems is a true or false; the default is
|
||||
+# false.
|
||||
+#
|
||||
+# Set to true to ignore pre-frozen file systems during the quiescing operation.
|
||||
+#
|
||||
+# ignoreFrozenFileSystems is Linux only (Not supported on Windows).
|
||||
+#ignoreFrozenFileSystems=false
|
||||
+
|
||||
# execScripts specifies whether to execute scripts as part of the quiescing
|
||||
# operation. Scripts are executed from the scripts directory along with the
|
||||
# legacy scripts.
|
||||
--
|
||||
2.37.3
|
||||
|
@ -1,38 +0,0 @@
|
||||
From a839cb975d58968237bd871b1fb4cbe191af085b Mon Sep 17 00:00:00 2001
|
||||
From: Miroslav Rezanina <mrezanin@redhat.com>
|
||||
Date: Thu, 7 Sep 2023 02:27:50 -0400
|
||||
Subject: [PATCH] VGAuth: Allow only X509 certs to verify the SAML token
|
||||
signature.
|
||||
|
||||
RH-Author: Miroslav Rezanina <mrezanin@redhat.com>
|
||||
RH-Bugzilla: 2236543
|
||||
RH-CVE: CVE-2023-20900
|
||||
|
||||
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||
---
|
||||
open-vm-tools/vgauth/serviceImpl/saml-xmlsec1.c | 9 ++++++++-
|
||||
1 file changed, 8 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/open-vm-tools/vgauth/serviceImpl/saml-xmlsec1.c b/open-vm-tools/vgauth/serviceImpl/saml-xmlsec1.c
|
||||
index f5541a9a..0b2a945b 100644
|
||||
--- a/open-vm-tools/vgauth/serviceImpl/saml-xmlsec1.c
|
||||
+++ b/open-vm-tools/vgauth/serviceImpl/saml-xmlsec1.c
|
||||
@@ -1335,7 +1335,14 @@ VerifySignature(xmlDocPtr doc,
|
||||
*/
|
||||
bRet = RegisterID(xmlDocGetRootElement(doc), "ID");
|
||||
if (bRet == FALSE) {
|
||||
- g_warning("failed to register ID\n");
|
||||
+ g_warning("Failed to register ID\n");
|
||||
+ goto done;
|
||||
+ }
|
||||
+
|
||||
+ /* Use only X509 certs to validate the signature */
|
||||
+ if (xmlSecPtrListAdd(&(dsigCtx->keyInfoReadCtx.enabledKeyData),
|
||||
+ BAD_CAST xmlSecKeyDataX509Id) < 0) {
|
||||
+ g_warning("Failed to limit allowed key data\n");
|
||||
goto done;
|
||||
}
|
||||
|
||||
--
|
||||
2.39.3
|
||||
|
@ -6,10 +6,13 @@ Requires=vgauthd.service
|
||||
After=vgauthd.service
|
||||
DefaultDependencies=no
|
||||
Before=cloud-init-local.service
|
||||
StartLimitIntervalSec=30
|
||||
StartLimitBurst=3
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/vmtoolsd
|
||||
TimeoutStopSec=5
|
||||
Restart=on-failure
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
|
@ -19,9 +19,9 @@
|
||||
################################################################################
|
||||
|
||||
%global _hardened_build 1
|
||||
%global majorversion 12.2
|
||||
%global majorversion 12.3
|
||||
%global minorversion 5
|
||||
%global toolsbuild 21855600
|
||||
%global toolsbuild 22544099
|
||||
%global toolsversion %{majorversion}.%{minorversion}
|
||||
%global toolsdaemon vmtoolsd
|
||||
%global vgauthdaemon vgauthd
|
||||
@ -32,7 +32,7 @@
|
||||
|
||||
Name: open-vm-tools
|
||||
Version: %{toolsversion}
|
||||
Release: 3%{?dist}
|
||||
Release: 2%{?dist}.alma.1
|
||||
Summary: Open Virtual Machine Tools for virtual machines hosted on VMware
|
||||
License: GPLv2
|
||||
URL: https://github.com/vmware/%{name}
|
||||
@ -52,10 +52,8 @@ ExclusiveArch: %{ix86} x86_64 aarch64
|
||||
%endif
|
||||
|
||||
# Patch0: name.patch
|
||||
# For RHEL-4584 - CVE-2023-20900 open-vm-tools: SAML token signature bypass [rhel-8.10.0]
|
||||
Patch1: ovt-VGAuth-Allow-only-X509-certs-to-verify-the-SAML-toke.patch
|
||||
# For RHEL-7012 - [RHEL8.10][ESXi]Latest version of open-vm-tools breaks VM backups
|
||||
Patch2: ovt-Provide-alternate-method-to-allow-expected-pre-froze.patch
|
||||
# https://github.com/vmware/open-vm-tools/tree/CVE-2025-22247.patch
|
||||
Patch0: 0000-open-vm-tools-cve-2025-22247.patch
|
||||
|
||||
BuildRequires: autoconf
|
||||
BuildRequires: automake
|
||||
@ -91,7 +89,7 @@ BuildRequires: gtk3-devel >= 3.10.0
|
||||
BuildRequires: gtkmm30-devel >= 3.10.0
|
||||
BuildRequires: libtirpc-devel
|
||||
BuildRequires: rpcgen
|
||||
BuildRequires: systemd-rpm-macros
|
||||
BuildRequires: systemd-udev
|
||||
%else
|
||||
BuildRequires: gtk2-devel >= 2.4.0
|
||||
BuildRequires: gtkmm24-devel
|
||||
@ -414,12 +412,31 @@ fi
|
||||
%{_bindir}/vmware-vgauth-smoketest
|
||||
|
||||
%changelog
|
||||
* Wed Sep 27 2023 Jon Maloy <jmaloy@redhat.com> - 12.2.5-3
|
||||
* Thu Jun 12 2025 Jonathan Wright <jonathan@almalinux.org> - 12.3.5-2.alma.1
|
||||
- Fix CVE-2025-22247, VMSA-2025-0007
|
||||
|
||||
* Wed Dec 06 2023 Miroslav Rezanina <mrezanin@redhat.com> - 12.3.5-2
|
||||
- ovt-Restart-tools-on-failure.patch [RHEL-17683]
|
||||
- Resolves: RHEL-17683
|
||||
(Add Restart=on-failure to vmtoolsd.service [rhel-8])
|
||||
|
||||
* Thu Nov 09 2023 Miroslav Rezanina <mrezanin@redhat.com> - 12.3.5-1
|
||||
- Rebase to 12.3.5 [RHEL-15059]
|
||||
- Fix CVE-2023-34058 [RHEL-14649]
|
||||
- Fix CVE-2023-34059 [RHEL-14683]
|
||||
- Resolves: RHEL-15059
|
||||
([ESXi][RHEL8]open-vm-tools version 12.3.5 has been released - please rebase)
|
||||
- Resolves: RHEL-14649
|
||||
(CVE-2023-34058 open-vm-tools: SAML token signature bypass [rhel-8.10.0])
|
||||
- Resolves: RHEL-14683
|
||||
(CVE-2023-34059 open-vm-tools: file descriptor hijack vulnerability in the vmware-user-suid-wrapper [rhel-8.10.0])
|
||||
|
||||
* Wed Sep 27 2023 Jon Maloy <jmaloy@redhat.com> - 12.2.5-4
|
||||
- ovt-Provide-alternate-method-to-allow-expected-pre-froze.patch [RHEL-7012]
|
||||
- Resolves: RHEL-7012
|
||||
([RHEL8.10][ESXi]Latest version of open-vm-tools breaks VM backups)
|
||||
|
||||
* Wed Sep 20 2023 Miroslav Rezanina <mrezanin@redhat.com> - 12.2.5-2
|
||||
* Wed Sep 20 2023 Miroslav Rezanina <mrezanin@redhat.com> - 12.2.5-3
|
||||
- Rebuild CVE-2023-20900 for 8.10
|
||||
- Resolves: RHEL-4584
|
||||
(CVE-2023-20900 open-vm-tools: SAML token signature bypass [rhel-8.10.0])
|
||||
|
Loading…
Reference in New Issue
Block a user