-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 ============================================================================= FreeBSD-SA-26:08.rpcsec_gss Security Advisory The FreeBSD Project Topic: Remote code execution via RPCSEC_GSS packet validation Category: core Module: rpcsec_gss Announced: 2026-03-26 Credits: Nicholas Carlini using Claude, Anthropic Affects: All supported versions of FreeBSD. Corrected: 2026-03-26 01:25:23 UTC (stable/15, 15.0-STABLE) 2026-03-26 01:11:20 UTC (releng/15.0, 15.0-RELEASE-p5) 2026-03-26 01:28:47 UTC (stable/14, 14.4-STABLE) 2026-03-26 01:14:55 UTC (releng/14.4, 14.4-RELEASE-p1) 2026-03-26 01:16:01 UTC (releng/14.3, 14.3-RELEASE-p10) 2026-03-26 01:30:12 UTC (stable/13, 13.5-STABLE) 2026-03-26 01:34:10 UTC (releng/13.5, 13.5-RELEASE-p11) CVE Name: CVE-2026-4747 For general information regarding FreeBSD Security Advisories, including descriptions of the fields above, security branches, and the following sections, please visit . I. Background Generic Security Services (GSS) is an API which lets applications establish a private, authenticated communication channel with a server, such as an NFC server. RPCSEC_GSS is a module which enables the use of GSS with Sun RPC (rpc(3)) servers. It is implemented in the kernel by the kgssapi.ko kernel module, and used by the NFS server to enable Kerberos-based authentication and encryption of traffic between the server and clients. In userspace it is implemented by the librpcsec_gss library. II. Problem Description Each RPCSEC_GSS data packet is validated by a routine which checks a signature in the packet. This routine copies a portion of the packet into a stack buffer, but fails to ensure that the buffer is sufficiently large, and a malicious client can trigger a stack overflow. Notably, this does not require the client to authenticate itself first. III. Impact As kgssapi.ko's RPCSEC_GSS implementation is vulnerable, remote code execution in the kernel is possible by an authenticated user that is able to send packets to the kernel's NFS server while kgssapi.ko is loaded into the kernel. In userspace, applications which have librpcgss_sec loaded and run an RPC server are vulnerable to remote code execution from any client able to send it packets. We are not aware of any such applications in the FreeBSD base system. IV. Workaround No workaround is available. Kernels that do not have kgssapi.ko loaded are not vulnerable. In userspace, any daemon linked with librpcgss_sec and running an RPC server is vulnerable. V. Solution Upgrade your vulnerable system to a supported FreeBSD stable or release / security branch (releng) dated after the correction date. Perform one of the following: 1) To update your vulnerable system installed from base system packages: Systems running a 15.0-RELEASE version of FreeBSD on the amd64 or arm64 platforms, which were installed using base system packages, can be updated via the pkg(8) utility: # pkg upgrade -r FreeBSD-base # shutdown -r +10min "Rebooting for a security update" 2) To update your vulnerable system installed from binary distribution sets: Systems running a RELEASE version of FreeBSD on the amd64 or arm64 platforms, or the i386 platform on FreeBSD 13, which were not installed using base system packages, can be updated via the freebsd-update(8) utility: # freebsd-update fetch # freebsd-update install # shutdown -r +10min "Rebooting for a security update" 3) To update your vulnerable system via a source code patch: The following patches have been verified to apply to the applicable FreeBSD release branches. a) Download the relevant patch from the location below, and verify the detached PGP signature using your PGP utility. # fetch https://security.FreeBSD.org/patches/SA-26:08/rpcsec_gss.patch # fetch https://security.FreeBSD.org/patches/SA-26:08/rpcsec_gss.patch.asc # gpg --verify rpcsec_gss.patch.asc b) Apply the patch. Execute the following commands as root: # cd /usr/src # patch < /path/to/patch c) Recompile your kernel and the operating system as described in and and reboot the system. VI. Correction details This issue is corrected as of the corresponding Git commit hash in the following stable and release branches: Branch/path Hash Revision - ------------------------------------------------------------------------- stable/15/ 1b00fdc1f3cd stable/15-n282700 releng/15.0/ 4ec1b6213463 releng/15.0-n281013 stable/14/ e5ed09ffd592 stable/14-n273840 releng/14.4/ 7ea03a4238e8 releng/14.4-n273677 releng/14.3/ b6ce88ab9a5f releng/14.3-n271477 stable/13/ 99ec7f9b9e48 stable/13-n259823 releng/13.5/ c4f53a1adbd4 releng/13.5-n259207 - ------------------------------------------------------------------------- Run the following command to see which files were modified by a particular commit: # git show --stat Or visit the following URL, replacing NNNNNN with the hash: To determine the commit count in a working tree (for comparison against nNNNNNN in the table above), run: # git rev-list --count --first-parent HEAD VII. References The latest revision of this advisory is available at -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEthUnfoEIffdcgYM7bljekB8AGu8FAmnEkWEACgkQbljekB8A Gu/LsA/9EC3I0xFSAJpbHLVpV4dmCpzhMUn5CU3iJhXOsV4hWip6fJvjHmiRcVDC luJ/udrLS6izmx4dmZBcEQMSOt2hXK/P/5JgVQCM0f3hXfkLFWGPnA1/wG4hSqjd nsbHfExgqs4ToWhgfQDaEwgc5d9FQfnQUTk3noXal1FA6o10+9PAA5nmj74ZGtYC 6umspzzJNR8+6EaTftY8nb40DMAAyNMTBu3S2KikiuiqLSuMETyGEHS0ceMZzX0C D8rWRlaXpNOyVrRPhEuVurF9SB9EghEB1K587Xm0cqpCLT8GsW5FeSkp4VD2Ir0v 7Ghu693vLbmVwm5pQUNr8cf7uO/kLg6Gce3FWlqYteRN+PeuOkx2DRAChm4QMEK2 8Xjix/bS3HT6GkRmHCtwS7IU8L1vw/kAt4uvSV5uyEzRbpGKEbrdZOXFUSjPrY3R xHAKGosZaZKYJ4rveQOhsS1OoevN7ghhEJJ6PJf1wdYOSwNl41zq8R9LVqos4A+w fJmIQwoSMPhT7E+XCjrsOrt5TuBHrv5O7871IFxk00rsgJN3W2vTw4epEwRiWpJm mqv40zoarV4L4Gq3P4PAT8VaiWXTo44qyvu9LV+fnEArtlyfYPNLglC7NJKaeI1D Ou89dG/+L1GeJlkIVbRj4DUfcpLO0yV1LG/KYvQqr4TCILaddzk= =K+Bc -----END PGP SIGNATURE-----