See how gluster compares to other vendors in security performance
In Gluster GlusterFS 11.0, there is an xlators/mount/fuse/src/fuse-bridge.c notify stack-based buffer over-read.
In Gluster GlusterFS 11.0, there is an xlators/cluster/dht/src/dht-common.c dhtsetxattrmdscbk use-after-free.
Following the fixing of several /tmp/ flaws in CVE-2012-4417 we have the remaining issues in Gluster reported by Kurt Seifried (kseifried):
============== This issue was previously not reported: This should probably use /var/run/gluster/glusterdump.%d.options
tests/volume.rc: rm -f /tmp/glusterdump.$mountpid.dump. 2>/dev/null tests/volume.rc: fname=$(ls /tmp | grep -E "glusterdump.$mountpid.dump.") tests/volume.rc: echo /tmp/$fname ============== ============== This issue was previously not reported: This should use mktemp Also this should use cp instead of mv so you don't lose SELinux context when copying the file back to /etc/samba/smb.conf which might break Samba
extras/hook-scripts/S30samba-stop.sh: cp /etc/samba/smb.conf /tmp/smb.conf extras/hook-scripts/S30samba-stop.sh: sed -i "/gluster-$volname/,/^$/d" /tmp/smb.conf &&\ extras/hook-scripts/S30samba-stop.sh: mv /tmp/smb.conf /etc/samba/smb.conf ==============
============== This issue was previously reported: This should use mkstemp()
libglusterfs/src/run.c: fd = open ("/tmp/foof", OWRONLY|OCREAT|OTRUNC, 0600); ==============
============== This issue was previously reported: This should probably use /var/run/gluster/glusterdump.%d.options
libglusterfs/src/statedump.c:/ These options are dumped by default if /tmp/glusterdump.options libglusterfs/src/statedump.c: / glusterd will create a file /tmp/glusterdump.<pid>.options and libglusterfs/src/statedump.c: both cli command and SIGUSR1, /tmp/glusterdump.options file libglusterfs/src/statedump.c: "/tmp/glusterdump.options"); libglusterfs/src/statedump.c: "/tmp/glusterdump.%d.options", getpid ()); libglusterfs/src/statedump.c: ((ctx->statedumppath != NULL)?ctx->statedumppath:"/tmp")), ==============
============== This issue was previously reported: This should probably use /var/run/gluster/glusterdump.%d.options
xlators/protocol/server/src/server.c: .defaultvalue = "/tmp", xlators/protocol/server/src/server.c: " statedumps. By default it is the /tmp directory" ============== ============== This issue was previously reported: This should probably use /var/run/gluster/%s-"RBCLIENTMOUNTPOINT
xlators/mgmt/glusterd/src/glusterd-replace-brick.c: snprintf (path, len, "/tmp/%s-"RBCLIENTMOUNTPOINT, volinfo->volname); ==============
============== This issue was previously reported: This should probably use /var/run/gluster/glusterdump.%d.options
xlators/mgmt/glusterd/src/glusterd-utils.c: snprintf (dumpoptionspath, sizeof (dumpoptionspath), "/tmp/glusterdump.%d.options", pid); xlators/mgmt/glusterd/src/glusterd-utils.c: snprintf (dumpoptionspath, sizeof (dumpoptionspath), "/tmp/glusterdump.%d.options", pid); ==============
GlusterFS 3.3.0, as used in Red Hat Storage server 2.0, allows local users to overwrite arbitrary files via a symlink attack on temporary files with predictable names.
IssueDescription:
A denial of service flaw was found in the way the socketprotostatemachine() function of glusterfs processed certain fragment headers. A remote attacker could send a specially crafted fragment header that, when processed, would cause the glusterfs process to enter an infinite loop.
A flaw was found in GlusterFS in versions prior to 3.10. A null pointer dereference in sendbrickreq function in glusterfsd/src/gfattach.c may be used to cause denial of service.
A flaw was found in glusterfs server through versions 4.1.4 and 3.1.2 which allowed repeated usage of GFMETALOCKKEY xattr. A remote, authenticated attacker could use this flaw to create multiple locks for single inode by using setxattr repetitively resulting in memory exhaustion of glusterfs server node.
A vulnerability was found in Gluster's features/locks translator An user-controlled string is given to snprintf without a proper format string. Sending a specially crafted string would result in a denial of service.
Gluster versions 3.12.14 and 4.1.4 included incomplete fixes for the vulnerabilities, CVE-2018-10927, CVE-2018-10928, CVE-2018-10929, CVE-2018-10930 and CVE-2018-10926. All five vulnerabilities remain exploitable via symlinks pointing to relative paths. A remote authenticated attacker could exploit one of these vulnerabilities to force a server to resolve target paths and achieve a maximum impact of arbitrary code execution.
A flaw was found in RPC request using gfs3lookupreq in glusterfs server. An authenticated attacker could use this flaw to leak information and execute remote denial of service by crashing gluster brick process.
A flaw was found in GlusterFS. A NULL pointer dereference vulnerability due to an improper implementation of the posixgetfilecontents function. An attacker could exploit this to perform a Denial of Service attack.
A flaw was found in GlusterFS. An Information Exposure vulnerability due to an improper implementation of the glusterfs.file function. An attacker could exploit this to obtain information about the files available.
A flaw was found in RPC request using gfs3symlinkreq in glusterfs server which allows symlink destinations to point to file paths outside of the gluster volume. An authenticated attacker could use this flaw to create arbitrary symlinks pointing anywhere on the server and execute arbitrary code on glusterfs server nodes.
It was discovered that fsync(2) system call in glusterfs client code leaks memory. An authenticated attacker could use this flaw to launch a denial of service attack by making gluster clients consume memory of the host machine.
It was found that the "mknod" call derived from mknod(2) can create files pointing to devices on a glusterfs server node. An authenticated attacker could use this to create an arbitrary device and read data from any device attached to the glusterfs server node.
A flaw was found in the way dicunserialize function of glusterfs does not handle negative key length values. An attacker could use this flaw to read memory from other locations into the stored dict value.
A flaw was found in RPC request using gfs3mknodreq supported by glusterfs server. An authenticated attacker could use this flaw to write files to an arbitrary location via path traversal and execute arbitrary code on a glusterfs server node.
A flaw was found in RPC request using gfs2createreq in glusterfs server. An authenticated attacker could use this flaw to create arbitrary files and execute arbitrary code on glusterfs server nodes.
A flaw was found in RPC request using gfs3renamereq in glusterfs server. An authenticated attacker could use this flaw to write to a destination outside the gluster volume.
GlusterFS is vulnerable to multiple stack-based buffer overflows due to functions in server-rpc-fops.c allocating fixed-size buffers using 'alloca(3)'. A remote attacker could expliot this by mounting a Gluster volume and sending a string longer than the fixed buffer to cause a crash or potential code execution.
GlusterFS does not properly sanitize file paths in the "trusted.io-stats-dump" extended attribute (xattr) as used by the "debug/io-stats" translator. The value of this extended attribute is not properly sanitized and can be exploited by an attacker to create files in arbitrary locations and subsequently execute arbitrary code. To exploit this an attacker would require sufficient access to modify the extended attributes of files on a Gluster volume.
A flaw was found in glusterfs which can lead to privilege escalation on gluster server nodes.
It was found that any gluster client authenticated via TLS could use gluster cli with --remote-host command to add itself to gluster trusted pool and perform all gluster operations like peer probe itself or other machines, start, stop, delete volumes etc.
glusterfs server before versions 3.10.12, 4.0.2 is vulnerable when using 'auth.allow' option which allows any unauthenticated gluster client to connect from any network to mount gluster storage volumes. NOTE: this vulnerability exists because of a CVE-2018-1088 regression.
As reported:
When certain options are enabled in Gluster, it creates a volume called glustersharedstorage. This volume is mounted on each server in the cluster and used to share state. The volume is not intended to be mounted by storage clients as it does not contain any data that is intended to be user accessi= ble. When snapshot scheduling is enabled in Gluster, this glustersharedstorage volume is used to coordinate the snapshots. Part of that is sharing the cron job that is used to trigger scheduled snaps. The crontab file exposed in the shared volume is symlinked into each server's /etc/cron.d directory. By default, the sharedstorage volume can be mounted by any client that has access to the cluster to mount data volumes. Further, since Gluster relies = on client-reported uids, the sharedstorage volume can be written from any of these clients, permitting cron entries to be added to the system crontab directory such that they will be executed by each server as root (or any ot= her uid).
IssueDescription:
A denial of service flaw was found in the way the socketprotostatemachine() function of glusterfs processed certain fragment headers. A remote attacker could send a specially crafted fragment header that, when processed, would cause the glusterfs process to enter an infinite loop.
The Gluster file system through versions 4.1.4 and 3.1.2 is vulnerable to a denial of service attack via use of the "GFMETALOCKKEY" xattr. A remote, authenticated attacker could exploit this by mounting a Gluster volume and repeatedly calling "setxattr(2)" to trigger an out-of-memory error and resultant denial of service.
The Gluster file system through versions 4.1.4 and 3.12 is vulnerable to a heap-based buffer overflow in the "servergetspec" function via the "gfgetspecreq" RPC message. A remote authenticated attacker could exploit this to cause a denial of service or other potential unspecified impact.
Patching this issue also requires fixing the "buildvolfilepath" function to prevent arbitrary file reads via crafted filenames.
A flaw was found in glusterfs which can lead to privilege escalation on gluster server nodes.
It was found that any gluster client authenticated via TLS could use gluster cli with --remote-host command to add itself to gluster trusted pool and perform all gluster operations like peer probe itself or other machines, start, stop, delete volumes etc.
The Gluster file system through version 4.1.4 is vulnerable to abuse of the "features/index" translator. A remote attacker with access to mount volumes could exploit this via the "GFXATTROPENTRYINKEY" xattrop to create arbitrary, empty files on the target server.
The Gluster file system through versions 3.12 and 4.1.4 is vulnerable to a buffer overflow in the "features/index" translator via the code handling the "GFXATTRCLRLKCMD" xattr in the "plgetxattr" function. A remote authenticated attacker could exploit this on a mounted volume to cause a denial of service.