summaryrefslogtreecommitdiff
path: root/user/kauth/CVE-2019-7443.patch
diff options
context:
space:
mode:
authorMax Rees <maxcrees@me.com>2019-10-16 16:21:21 -0500
committerMax Rees <maxcrees@me.com>2019-10-16 16:21:41 -0500
commit2c0bf1b6c7c02036484a225cb2c4ea0d85205ad5 (patch)
tree1c514936ad94289c4cb855542007ae792c5bb882 /user/kauth/CVE-2019-7443.patch
parentdf9cac7a84d0c945f54c5b537adcc490a8291b75 (diff)
downloadpackages-2c0bf1b6c7c02036484a225cb2c4ea0d85205ad5.tar.gz
packages-2c0bf1b6c7c02036484a225cb2c4ea0d85205ad5.tar.bz2
packages-2c0bf1b6c7c02036484a225cb2c4ea0d85205ad5.tar.xz
packages-2c0bf1b6c7c02036484a225cb2c4ea0d85205ad5.zip
user/kauth: patch CVE-2019-7443 (#213)
Diffstat (limited to 'user/kauth/CVE-2019-7443.patch')
-rw-r--r--user/kauth/CVE-2019-7443.patch68
1 files changed, 68 insertions, 0 deletions
diff --git a/user/kauth/CVE-2019-7443.patch b/user/kauth/CVE-2019-7443.patch
new file mode 100644
index 000000000..5b11cd8f5
--- /dev/null
+++ b/user/kauth/CVE-2019-7443.patch
@@ -0,0 +1,68 @@
+From fc70fb0161c1b9144d26389434d34dd135cd3f4a Mon Sep 17 00:00:00 2001
+From: Albert Astals Cid <aacid@kde.org>
+Date: Sat, 2 Feb 2019 14:35:25 +0100
+Subject: Remove support for passing gui QVariants to KAuth helpers
+
+Supporting gui variants is very dangerous since they can end up triggering
+image loading plugins which are one of the biggest vectors for crashes, which
+for very smart people mean possible code execution, which is very dangerous
+in code that is executed as root.
+
+We've checked all the KAuth helpers inside KDE git and none seems to be using
+gui variants, so we're not actually limiting anything that people wanted to do.
+
+Reviewed by security@kde.org and Aleix Pol
+
+Issue reported by Fabian Vogt
+---
+ src/backends/dbus/DBusHelperProxy.cpp | 9 +++++++++
+ src/kauthaction.h | 2 ++
+ 2 files changed, 11 insertions(+)
+
+diff --git a/src/backends/dbus/DBusHelperProxy.cpp b/src/backends/dbus/DBusHelperProxy.cpp
+index 10c14c6..8f0d336 100644
+--- a/src/backends/dbus/DBusHelperProxy.cpp
++++ b/src/backends/dbus/DBusHelperProxy.cpp
+@@ -31,6 +31,8 @@
+ #include "kf5authadaptor.h"
+ #include "kauthdebug.h"
+
++extern Q_CORE_EXPORT const QMetaTypeInterface *qMetaTypeGuiHelper;
++
+ namespace KAuth
+ {
+
+@@ -229,10 +231,17 @@ QByteArray DBusHelperProxy::performAction(const QString &action, const QByteArra
+ return ActionReply::HelperBusyReply().serialized();
+ }
+
++ // Make sure we don't try restoring gui variants, in particular QImage/QPixmap/QIcon are super dangerous
++ // since they end up calling the image loaders and thus are a vector for crashing → executing code
++ auto origMetaTypeGuiHelper = qMetaTypeGuiHelper;
++ qMetaTypeGuiHelper = nullptr;
++
+ QVariantMap args;
+ QDataStream s(&arguments, QIODevice::ReadOnly);
+ s >> args;
+
++ qMetaTypeGuiHelper = origMetaTypeGuiHelper;
++
+ m_currentAction = action;
+ emit remoteSignal(ActionStarted, action, QByteArray());
+ QEventLoop e;
+diff --git a/src/kauthaction.h b/src/kauthaction.h
+index c67a70a..01f3ba1 100644
+--- a/src/kauthaction.h
++++ b/src/kauthaction.h
+@@ -298,6 +298,8 @@ public:
+ * This method sets the variant map that the application
+ * can use to pass arbitrary data to the helper when executing the action.
+ *
++ * Only non-gui variants are supported.
++ *
+ * @param arguments The new arguments map
+ */
+ void setArguments(const QVariantMap &arguments);
+--
+cgit v1.1
+